大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~
前言
这几天在面蚂蚁金服的国际支付事业部,刚好有个面试题是:全链路压测怎么设计?(ps:我当时有点闷逼的,因为我们一般就是用jmeter去进行压测,至于全链路怎么搞呢)
全链路压测
文章地址
具体流程
大概流程: 首先要做流量染色 ->流量识别->然后agent用字节码技术->改写sql 将数据落到影子表
要点
1.染色然后如何在全链路进行传递?
A:这个可以参考阿里开源中间件sofatrace里面spaceid跟traceid传递,其中使用了TransmittableThreadLocal来解决线程池,多线程变量传递问题,像RPC会放到header头,根据协议不一样,会进行封装,像dubbo,rest等等。
2.如何落到影子库?
A:个人想法可以参照多租户的实现,比如A租户落到A库,B落到B库,可以用Shardingjdbc去实现,当然会有些代码侵入。像这里用的是agent字节码去改写sql,可以实现减少代码侵入的问题。
3.必要的设计
比如说熔断机制,这里肯定是要有一些开关去控制下,比如我现在流量已经对线上产生影响,需要进行关闭。
4.讲讲我们一般的操作
会有一套uat预发布环境来模拟正式环境