Butterfly 安裝文檔(一) 快速開始
📖 本教程更新於 2021 年 03 月 30 日,教程的內容針對最新穩定版而更新(如果你是舊版,教程會有些出入,請留意)
🦋 Butterfly 已經更新到 3.7.1
📚 文檔目錄
Post not found: Butterfly-安裝文檔-一-快速開始 🚀 快速開始 - Post not found: Butterfly-安裝文檔-二-主題頁面 📑 主題頁面 - Post not found: Butterfly-安裝文檔-三-主題配置-1 🛠 主題配置-1 - Post not found: Butterfly-安裝文檔-四-主題配置-2 ⚔️ 主題配置-2 - Post not found: Butterfly-安裝文檔-五-主題問答 ❓ 主題問答 - Post not found: Butterfly-安裝文檔-六-進階教程 ⚡️ 進階教程 - Post not found: Butterfly-安裝文檔-七-更新日誌 ✨ 更新日誌 - Post not found: Butterfly-打賞 🤞 打賞
如果有安裝這兩個插件的,請卸載掉,會 ...
虚拟机问题合集
虚拟机问题合集Vmware网络无法连接
123sudo service network-manager stopsudo vi /var/lib/NetworkManager/NetworkManager.state # NetworkingEnabled=truesudo service network-manager start
用go语言编写移动端sdk和app开发
用go语言编写移动端sdk和app开发
window 11
前言使用go开发sdk在Android,ios中调,这就需要用到gomobile这个工具来完成
文档https://github.com/golang/go/wiki/Mobile
安装Golanghttps://studygolang.com/dl
https://studygolang.com/dl/golang/go1.18.3.windows-amd64.zip
123456GOPROXY=https://goproxy.cnGOPATH=c:/gopath # src bin pkgGOROOT=c:/goPATH=%GOPATH%/bin;%GOROOT%/bingo version
安装JDK下载地址:https://www.oracle.com/java/technologies/downloads/#java8-windows
现在下载jdk需要注册账号,http://bugmenot.com/view/oracle.com 这个网址有提供账号
设置环境变量
JAVA_HOME=< ...
在线编程IDE
在线编程IDEcode-server
https://coder.com/docs/code-server/latest
docker部署123456789mkdir -p ~/.configdocker run -it --name code-server -p 5001:8080 \ -v "$HOME/.config:/home/coder/.config" \ -v "/root/code:/home/coder/project" \ -u "$(id -u):$(id -g)" \ -e "DOCKER_USER=$USER" \ -e PASSWORD='wyy' \ codercom/code-server:latest
二进制部署12345678vi ~/.config/code-server/config.yamlbind-addr: 0.0.0.0:5001auth: passwordpassword: wyycert: falsenohup ./c ...
即时性能分析工具Pyroscope
即时性能分析工具Pyroscope
https://pyroscope.io/docs/installing-pyroscope-overview/
https://pyroscope.io/blog/
目前支持的语言
Go
Python
eBPF
Java
Ruby
Rust
PHP
.NET
NodeJS
分析go性能安装Pyroscope serverwindow暂不支持server
二进制
window管理员运行终端
下载地址:https://github.com/pyroscope-io/pyroscope/releases
1./pyroscope server --api-bind-addr=:5002 --adhoc-data-path /root/.local/share/pyroscope
docker1docker run -it -p 4040:4040 pyroscope/pyroscope:latest server
docker-compose
12345678---services: pyroscope: image: " ...
golang性能调试优化方法
golang性能调试优化方法在 golang 程序中,有哪些内容需要调试优化?
一般常规内容:
cpu:程序对cpu的使用情况 - 使用时长,占比等
内存:程序对cpu的使用情况 - 使用时长,占比,内存泄露等。如果在往里分,程序堆、栈使用情况
I/O:IO的使用情况 - 哪个程序IO占用时间比较长
golang 程序中:
goroutine:go的协程使用情况,调用链的情况
goroutine leak:goroutine泄露检查
go dead lock:死锁的检测分析
data race detector:数据竞争分析,其实也与死锁分析有关
golang 性能调试优化方法:
Benchmark:基准测试,对特定代码的运行时间和内存信息等进行测试
Profiling:程序分析,程序的运行画像,在程序执行期间,通过采样收集的数据对程序进行分析
Trace:跟踪,在程序执行期间,通过采集发生的事件数据对程序进行分析
profiling 和 trace 有啥区别?profiling 分析没有时间线,trace 分析有时间线。
概要pprof 是 golang 官方 ...
流量回放GoReplay
流量回放GoReplay一. 线上引流产生背景日常大部分的测试工作都是在测试环境下,通过模拟用户的行为来对系统进行验证,包括功能以及性能。在这个过程中,你可能会遇到以下问题:
用户访问行为比较复杂,模拟很难和用户行为一致,模拟不够真实。
线下模拟场景有限,会出现业务覆盖不全的情况。
线上引流方案的出现为上述问题提供了很好的解题思路,线上引流本质是:通过把线上的真实流量复制到线下环境,解决测试环境模拟不够真实,或覆盖不够全面的问题。
二. 线上引流常见方案目前不少公司都对线上引流方案进行了许多实践探索,常见的有以下4种引流方式(不限):
引流方式
实现方式
优点
缺点
Nginx层流量复制
安装lua-nginx-module、ngxdevelkit、headers-more-nginx-module模块,通过lua脚本实现把请求复制给测试环境。
安装和部署还较为简单。
需要开发lua脚本,且对资源有一定占用。
基于业务代码层的引流
将业务代码的调用封装成请求对象,异步的写入缓存中。引流工具通过读缓存中的请求,向测试环境发起请求。
扩展性好,可定制化高。
需要开发流 ...
Windows11部署Docker
Windows11部署Docker
https://docs.docker.com/desktop/windows/install/
https://docs.microsoft.com/en-us/windows/wsl/basic-commands
一、下载Docker for Windows到Docker官网下载 Docker for Windows,并安装
二、安装WSL22.1、启动WSL
以管理员身份在PowerShell中运行以下命令
1dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2.2、启动虚拟机功能
以管理员身份在PowerShell中运行以下命令,运行后需重启计算机
1dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2.3、安装Linux内核更新包
下载地址: wsl_update_x64.m ...
NATS-Server(JetStream)和NATS Streaming Server对比
NATS-Server(JetStream)和NATS Streaming Server对比在我吐槽了无数次之后,NATS JetStream终于结束了beta阶段正式进入RC阶段。终于官方也在最近刚刚正式回复了我正式版本在处理几个问题之后就会正式发布。那么在这个比较重要的NATS-Server特性发布之际聊一下NATS产品本身区别和新特性的使用,还有更多的潜在的区别。
概念区分:NATS-Server / NATS Streaming Server / NATS JetStreamNATS-ServerNATS-Server(或者叫nats)是一个开源的、云原生的、高性能的消息传递系统,是NATS的最基础的产品。它的核心是一个发布/订阅(Pub/Sub)系统,客户端可以在不同集群中的服务间nats进行通讯,而不需要关注具体的消息在哪个服务上。换而言之,客户端可以在任意一个集群的服务端上发布消息,同时在任意集群客户端上尝试读取消息。在官方与其他同类消息队列产品功能对比中,我们也可以管窥一下产品的功能列表。nats支持多流多服务进行pub/sub ...
OPA进阶-分布式利器Bundle
OPA进阶-分布式利器BundleBundle是OPA管理policy和data的一种方式。
OPA实现的轻量级策略引擎,一开始就是为了云原生环境的service提供解耦的策略服务,分布式是必然要考虑的问题。
在Bundle api的设计中,其实就全面考虑并体现了在分布式应用中如何更好的解耦策略引擎的管理。
比如:
如何做集中配置管理
如何动态更新策略
如何监控策略引擎节点的状态以及决策日志收集
有了这些功能,再加上其高效的策略描述语言Rego,OPA才真正称得上是云原生时代的通用策略引擎。
本文将带大家简单梳理一遍Bundle的组织方式、管理 api、及监控方式。
考虑到一次性过完不易消化,文末会提供一个直接可实操的docker-compose版本的demo,将全面覆盖本文细节
建议大家看完本文,本机运行去体验一下,会有更直观的理解。
Bundle 文件组织方式下面我们先来看下Bundle的文件组织方式
在Bundle下的data,只能被识别data.json和data.yaml的文件, 而其上边的目录会作为其数据前缀
如下边roles/data.json (bundle/ex ...
OPA进阶-测试、性能分析和基准测试
OPA进阶-测试、性能分析和基准测试OPA的测试(test)、性能分析(profile)和(benchmark)
掌握他们,对于保证策略代码的质量和决策效率有很大的帮助
1mkdir quick-start
data.json
123456789101112131415161718192021222324{ "roles": [ { "operation": "read", "resource": "widgets", "name": "widget-reader" }, { "operation": "write", "resource": "widgets", ...
OPA进阶-简洁的推导式
OPA进阶-简洁的推导式我们将以实现判断配置文件数据的不同聚合方式为例展开。
用到的输入(配置文件列表)为:
1234567891011121314151617181920212223// input.json// posix为常见路径格式// traditional-mac为mac的一种文件路径格式{ "files": [ { "type": "posix", "path": "/Users/newbmiao/Documents/1.yaml" }, { "type": "posix", "path": "/Users/newbmiao/Documents/2.yaml" }, { "type": "traditional-mac", "path&q ...
OPA进阶-函数与虚拟文档
OPA进阶-函数与虚拟文档本文来讲讲OPA常用的函数(function)和虚拟文档(virtual document),以及他们使用的场景。
我们将以实现判断配置文件为例展开。
文章目录
函数
虚拟文档
适用场景
用到的输入(配置文件列表)为:
1234567891011121314151617181920212223// input.json// posix为常见路径格式// traditional-mac为mac的一种文件路径格式{ "files": [ { "type": "posix", "path": "/Users/newbmiao/Documents/1.yaml" }, { "type": "posix", "path": "/Users/newbmiao/Documents/2.yaml" }, ...
如何优雅的使用opa进行开发
如何优雅的使用opa进行开发opaopa(命令行工具)现在迭代比较快,为了性能和一些丰富的内置函数,推荐使用最新版
12345678# maccurl -L -o opa https://openpolicyagent.org/downloads/latest/opa_darwin_amd64chmod +x opamv opa /usr/local/bin/opa# othergo install github.com/open-policy-agent/opa@latest
查看命令帮助
123456789101112131415161718192021222324252627$ ./opa -hAn open source project to policy-enable your service.Usage: E:\goproject\gopath\bin\opa.exe [command]Available Commands: bench Benchmark a Rego query build Build an OPA bundle ch ...
OPA-重新定义规则引擎-入门篇
OPA-重新定义规则引擎-入门篇OPA,全称OpenPolicyAgent, 底层用Go实现,它灵活而强大的声明式语言全面支持通用策略定义。
什么是 OPA主要关键词是:
轻量级的通用策略引擎
可与服务共存
集成方式可以是 sidecar、主机级守护进程或库引入
opa
文字图片还是不够生动,看看 OPA 作者怎么说:
https://www.bilibili.com/video/BV1AE411V7Hs?p=1
https://www.bilibili.com/video/BV1AE411V7Hs?p=2
https://space.bilibili.com/384023450
优点
强大的声明式策略
上下文感知
表达性强
快速
可移植
输入和输出支持任意格式
配合强大的声明式策略语言Rego,描述任意规则都不是问题
全面支持规则和系统解耦
如图
集承方式多
Daemon 式服务
Go 类库引入
决策快
rule indexing
partial evaluatio
应用广泛
除了集成做Auth外,还可以应用到k8s,terraform,d ...
OPA-rego语法
OPA-rego语法
https://www.openpolicyagent.org/docs/latest/
1.背景OPA专门用于推理结构化文档中表示的信息。您的服务及其用户发布的数据可以使用OPA的本机查询语言Rego进行检查和转换。
2.什么是regoRego受到Datalog的启发,Datalog是一种众所周知的数十年的查询语言。Rego扩展了Datalog以支持诸如JSON之类的结构化文档模型。
Rego查询是对存储在OPA中的数据的断言。这些查询可用于定义策略,该策略枚举违反系统预期状态的数据实例
3.为什么使用rego使用Rego定义易于阅读和编写的策略。
Rego致力于为引用嵌套文档提供强大的支持,并确保查询正确无误。
Rego是声明性的,因此策略作者可以专注于应返回的查询,而不是应如何执行查询。这些查询比命令式语言中的查询更简单,更简洁。
像其他支持声明性查询语言的应用程序一样,OPA能够优化查询以提高性能。
4.语法4.1 基础知识1234567891011121314151617181920pi := 3.14159pi3.14159rect := ...
OPA-介绍
OPA-介绍
https://www.openpolicyagent.org/docs/latest/
1.OPA 介绍开放策略代理(OPA,发音为“ oh-pa”)是一个开放源代码的通用策略引擎,它统一了整个堆栈中的策略执行。OPA提供了一种高级的声明性语言,使您可以将策略指定为代码和简单的API,以减轻软件决策的负担。您可以使用OPA在微服务,Kubernetes,CI / CD管道,API网关等中实施策略。
OPA 最初是由 Styra 公司在 2016 年创建并开源的项目,目前该公司的主要产品就是提供可视化策略控制及策略执行的可视化 Dashboard 服务的。
OPA 首次进入 CNCF 并成为 sandbox 级别的项目是在 2018 年, 在 2021 年的 2 月份便已经从 CNCF 毕业,这个过程相对来说还是比较快的,由此也可以看出 OPA 是一个比较活跃且应用广泛的项目。
透过现象看本质,策略就是一组规则,请求发送到引擎,引擎根据规则来进行决策。OPA 并不负责具体任务的执行,它仅负责决策,需要决策的请求通过 JSON 的方式传递给 OPA ,在 OP ...
Nats JetStream
NATS Streaming服务器已被弃用。关键错误修复和安全修复将应用到 2023 年 6 月。需要持久性的支持 NATS 的应用程序应使用 JetStream。
Nats JetStream安装https://docs.nats.io/running-a-nats-service/introduction/installation
运行nats12nats-server #不支持持久化nats-server -js #支持持久化
集群非JetStreamnats_1.conf
12345678910111213141516171819202122232425262728# https://docs.nats.io/running-a-nats-service/configuration/clustering/cluster_configlisten=4222cluster { name: example # host/port for inbound route connections from other server listen: localhost: ...
基于NATS JetStream构建分布式事件流系统
基于NATS JetStream构建分布式事件流系统
【译文】原文地址本文我将简要介绍NATS JetStream项目,它是一个来自NATS生态的分布式事件流系统。简言之,NATS JetStream是一个以发布/订阅作为消息传递模式的分布式流媒体系统。当我在咨询工作中向我的客户介绍NATS时,对NATS、NATS Streaming和新推出的NATS JetStream的不同感到困惑。我将简要介绍这三个产品,然后通过一个非常简单的示例深入介绍NATS JetStream。
从NATS服务到NATS JetStream来理解NATS生态NAT云原生消息分发系统提供了一个基于“最多一次”交付模型的简单NATS服务,该服务将已发布的消息转发给消费者,而对已发布的消息不进行任何持久性处理,其性能处于行业领先地位。对于某些类型的应用程序,如果不需要事件流平台,那么基本的NATS平台就足够了并且还能获得高性能。使用“最多一次”发布模型,如果消息服务在转发数据给订阅者过程中,订阅者系统故障的话,消息将会丢失,因此无法保证已发布的消息的传递。
后来NATS生态添加了第二个消息发布可选 ...
Go服务监控搭建入门
Go服务监控搭建入门
prometheus v2.33.4
grafana v8.4.1
架构简介整体的简易架构如下:
Grafana:作为UI,提供了丰富的监控面板。
Prometheus:Prometheus是一个监控&时序数据库。
需要被监控的服务:需要被监控的服务按照标准提供一个metrics接口,Prometheus会去通过暴露的这个接口拉取数据。Go已经有封装好的包github.com/prometheus/client_golang/prometheus,我们直接采用就可以了。
准备镜像选取Prometheus镜像,如下:
1234# docker pull bitnami/prometheus:latest# docker run -d -p 9090:9090 bitnami/prometheus:2.33.4docker pull bitnami/prometheus:2.33.4
选取Grafana镜像,如下:
123# docker pull bitnami/grafana:latest# docker run -d -p 3000:3000 ...