流量回放
1.简介
流量回放系统,利用生产上现有真实流量进行镜像,原始流量依然回到生产环境的真实服务器,流量的镜像拷贝会分发到集群外的测试服务器上,在测试服务器上可以实现不同版本的功能测试,或者加压10倍进行性能压测。
流量回放系统的工作原理如下图:
原理:所使用真实的线上流量进行线下回放测试,提升研发效率、保障代码质量,进而减少事故
背景:随着微服务架构的普及和应用,一个复杂的单体服务通常会被拆分成多个小而美的微服务。微服务带来的问题:需要维护的服务数变多,服务之间RPC(远程过程调用:remote procedure call)调用次数增加。手写单测会因为复杂的业务逻辑以及复杂的服务调用需要mock多个下游服务
2.方案
日志采集
通过logstash工具从应用容器拉取日志信息,可以根据filter、tags来筛选
数据传输
通过kafka等消息队列将获取的日志数据传输进行下一步处理
数据处理
从消息队列中消费日志数据,通过storm数据处理系统从日志信息中获取到想要的数据,比如从日志中获取接口的req
数据转存
通过hadoopmysqlhive对处理的数据进行存储,第一轮一般是原始数据,后面可以用mapreduce再次处理,知道得到想要的数据再存储到具体的磁盘中
ELK
elasticsearch+logstash+kibana(前端开源框架)
压测
针对录制的流量进行处理,除敏、渲染、隔离、熔断,得到符合指标的流量,利用这些流量针对接口服务做压测服务,模拟线上请求
全链路压测核心点
流量渲染,打上特有的tag2、日志隔离,压测的日志和生产的日志隔离
3、风险开关,流量瓶颈时设置黑白名单控制流量
4、数据隔离,影子库
全链路压测关注指标
用户应用监控,保留现场数据代码层面分析3.使用说明 1.新建采集任务
选择对应应用,回放时间可以选择采集完立即回放/手动进行回放(寻找合适时间节点进行回放),开始采集时间设置(一般为应用线上部署成功后开始采集,采集对应线上回归接口(http/dubbo)请求),持续采集时间一般为30分钟,最大采集数量一般为10W(由于我们服务线上访问量比较大)
2.流量回放
回放前确保详情采集的dubbo接口和http接口参数和返回是否都正常采集到了,是否有外部http接口没有采集到,怕会造成影响
点击采集完成任务的回放,可以新建回放任务,选择对应分支代码,最大并发数任意选择。
3.分析
回放任务完成后可以查看对应详情,查看异常数据和系统错误,查看接口请求的链路情况以及日志,分析分支代码错误的影响,提高研发效率。减少线上问题的发生。