数列科技开源全链路压测平台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-总结的主要内容,如果未能解决你的问题,请参考以下文章