Takin是基于Java的开源系统,可以在无业务代码侵入的情况下,嵌入到各个应用程序节点,实现生产环境的全链路性能测试,适用于复杂的微服务架构系统。
Takin核心原理图
Takin具备以下4个特点:
(1)业务代码0侵入:在接入、采集和实现逻辑控制时,不需要修改任何业务代码;
(2)链路治理:能够帮助业务和微服务架构分析业务链路,以技术方式获得功能视角的链路信息;
(3)性能瓶颈定位:性能测试结果可以直接展现整个链路中存在性能瓶颈的微服务架构节点;
(4)数据隔离:可以在不污染生产环境数据和日志的情况下实施性能测试,可以在生产环境对写类型接口进行直接的性能测试。
Takin与传统性能测试的区别
微服务架构在现代系统架构中已被普遍使用,业务复杂性和系统复杂性双重作用使得保障和维持整个系统的高可用性变得困难异常,同时对研发效率也有较大负面影响。为了解决性能瓶颈保证系统的高可用,需要对系统实施性能测试,但传统的性能测试有仿真性、局部性和黑盒性三大问题。
仿真性:传统的性能测试通常在测试环境或者性能环境实施,但这些环境都只是对生产环境的仿真,无法真正代表生产环境。
局部性:传统性能测试有时会在生产环境的单一局部服务实施,或者只压测读类型的接口,但局部高可用不代表整体链路的高可用。
黑盒性:传统的性能测试只能获得TPS等性能结果,无法在复杂的微服务架构系统中定位和分析存在性能瓶颈的服务节点。
Takin界面
在生产环境进行性能压测是公认的最优解决方案,但这也是一件极具挑战性的事情,容易污染现网的数据库、日志等数据,进行生产环境测试数据清理时操作复杂且危险性高,为此,生产环境全链路压测技术应运而生。Takin作为首款生产环境全链路压测开源产品,可以较大程度地帮助企业降低生产全链路压测平台的开发复杂度,在无业务代码侵入的情况下,获得链路治理、数据隔离、性能瓶颈定位等生产压测核心能力。
Takin的开源模块
Takin开源内容主要包括三个部分:Agent探针、控制中台以及大数据模块。在Java应用程序中植入探针(agent),它能收集性能数据、控制测试流量的流向,将数据上报给大数据模块,大数据模块会进行一些实时计算并对数据进行存储,控制台则负责这些业务流程的管理和展现。三个部分各司其职,为业务提供无代码侵入的、常态化的生产环境全链路压测服务。
GitHub开源地址如下:
https://github.com/shulieTech/Takin
安装部署
docker环境准备
如图,我已经准备好了一个装有docker的服务器。
docker环境配置
修改 Docker 镜像地址为阿里云:
vim /etc/docker/daemon.json
更新为:
{
"registry-mirrors": ["<https://q2gr04ke.mirror.aliyuncs.com>"]
}
配置生效:
systemctl daemon-reload
下载docker镜像
docker pull registry.cn-hangzhou.aliyuncs.com/forcecop/forcecop:v1.0.0
请耐心等待,这可能需要花费一点时间。pull完成。
可查看镜像。
docker images
启动docker镜像
docker run -d -p 80:80 -p 2181:2181 -p 3306:3306 -p 6379:6379 -p 8086:8086 -p 9000:9000 -p 10032:10032 -p 6628:6628 -p 8000:8000 -p 6627:6627 -p 8888:8888 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/forcecop/forcecop:v1.0.0
-d是后台启动,-p是需要开放的端口,容器运行初始化的时候需要安装一些必要的组件需要十分钟的样子,-d可以忽略后台组件的安装信息,如果想要查看安装信息可以去除-d参数。
启动成功后:
更改配置
进入容器
docker exec -it 9754b1ff1491 bash
稍等片刻,等待文件初始化成功,您可以喝一杯咖啡或者听一首歌放松一下==
配置serverUrl
修改serverUrl
vi /data/apps/dist/tro/index.html
将serverUrl配置成服务器本机IP地址:
重启Nginx服务
nginx -s reload
配置sugre-deploy启动命令
tip: sugre-deploy为大数据平台模块
kill sugre-deploy
[root@30e961d36c91 data]# ps -ef | grep surge
root 4336 1 66 17:48 ? 00:03:20 java -jar surge-deploy-1.0-jar-with-dependencies.jar {"172.17.0.2":"192.168.1.138"}
root 4574 18 0 17:53 ? 00:00:00 grep --color=auto surge
[root@30e961d36c91 data]# kill -9 4336
[root@30e961d36c91 data]# ps -ef | grep surge
root 4582 18 0 17:54 ? 00:00:00 grep --color=auto surge
更改sugre-deploy的启动命令
vi /data/install.sh
将sugre-deploy的启动命令参数“172.17.0.2”对应的value(192.168.1.138这个)更改为宿主机的IP,保存。
重启sugre-deploy
nohup java -jar surge-deploy-1.0-jar-with-dependencies.jar '{"172.17.0.2":"192.168.1.220"}' > surge.out 2>&1 &
进入压测控制台
输入压测控制台地址:http://docker宿主机IP/tro/#/login
示例: http://192.168.1.220/tro/#/login
默认账号密码:账号:admin 密码:pamirs@2020
以上,恭喜您,成功安装了Takin,接下来就可以开启压测之旅啦~
详看:
https://docs.shulie.io/docs/opensource/opensource-1d2ckv049184j