数列科技开源全链路压测平台Takin-总结

Posted go大鸡腿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数列科技开源全链路压测平台Takin-总结相关的知识,希望对你有一定的参考价值。

全链路压测基本思路

基本就是先染色,然后分发到对应的影子表,影子缓存,然后进行上报数据统计

Takin细节点

全链路保存一些标识

比如说标识下这些数据是测试数据,然后在全链路进行传递,这个在阿里开源全链路追踪日志框架SofaTrace的实现。

上代码
com.pamirs.attach.plugin.shadowjob.obj.quartz.PtJob
在这里插入图片描述
比如说job的重写,在执行前会写入一些参数。

PradarInternalService.startTrace
在这里插入图片描述
会把一些traceId,唯一id set到上下文context里面

InvokeContext.set(ctx);

static private final TransmittableThreadLocal<InvokeContext> threadLocal
            = new TransmittableThreadLocal<InvokeContext>();

关键代码出现TransmittableThreadLocal

拦截器实现数据埋点上报

这个功能可以应对rpc,或者服务请求的参数上报

com.pamirs.pradar.interceptor.BaseInterceptor

在这里插入图片描述
在这里插入图片描述
把相关traceId跟RpcId,还有日志类型塞进去。

在这里插入图片描述
把日志往queue里面塞,然后通过线程poll出来进行上报
在这里插入图片描述

MQ改写topic

在这里插入图片描述
这个小生不才,看不太懂在哪里增强了,理解为可以根据agent去增强类的相关方法。

com.pamirs.attach.plugin.alibaba.rocketmq.interceptor.MQProducerSendInterceptor
在这里插入图片描述
这里进行改下topic

改写jdbc

com.pamirs.attach.plugin.apache.tomcatjdbc.interceptor.TomcatJdbcDataSourceProxyGetConnectionInterceptor
在这里插入图片描述
也是去增强类的方法,然后拿到影子库的connection

redis影子缓存

com.pamirs.attach.plugin.common.datasource.redisserver.AbstractRedisServerFactory#getClient

在这里插入图片描述

重写JedisFactory
在这里插入图片描述
以及redission,重写config方法

以上是关于数列科技开源全链路压测平台Takin-总结的主要内容,如果未能解决你的问题,请参考以下文章

百万级全链路压测产品Takin居然开源了,真香~

张维功:开源全链路压测平台Takin在稳定性保障领域的实践(8月17日 TiD第十届中国软件测试大会)

推荐一款国内首个开源线上全链路压测平台

开源全链路压测平台Takin实践笔记

开源版全链路压测平台Takin安装和初步使用体验

数列科技:获融¥60M 全链路压测