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

2021年9月20日 9点热度 0条评论 来源: go大鸡腿

文章目录

全链路压测基本思路

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

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方法

    原文作者:go大鸡腿
    原文地址: https://blog.csdn.net/weixin_38336658/article/details/118328448
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。