文章目录
一、简介
1. diffy是什么
摘自官网
diffy作为一个代理,把接收到的请求转发到每个运行的服务,并且收集每个服务的返回值进行比较
2. 工作原理
2.1 概念了解
- diffy就是图中的proxy,负责接收请求
请求可以来自手动请求、自动化测试、线上的流量
- 图中的candidate、promary、secondary代表三个服务
- candidate: 要回归的服务,比如重构后的服务
- primary: 与线上版本一致的服务
- secondary: 和primary服务一致
2.2 工作原理
- diffy接收到请求后,分别转发到上述3个服务;
- 其中primary、secondary两个服务代码版本是与线上一致的,secondary用来降噪,比如时间戳、日期等动态变化的值,这些需要排除掉;
- 把噪音消除掉后,再来对比candidate与primary,就会比较出不同,以便测试人员去对比
二、实战
1 部署被测服务
本地环境演示,以端口号区分服务
- 部署primary,端口号9990
- 部署secondary,端口号9991
- 部署candidate,端口号9992
2 启动diffy(选用docker方式)
docker run -d --name diffy-test \
-p 8880:8880 -p 8881:8881 -p 8888:8888 \
diffy/diffy \
-candidate=localhost:9992 \
-master.primary=localhost:9990 \
-master.secondary=localhost:9991 \
-responseMode='primary' \
-service.protocol=http \
-serviceName="Tier-Service" \
-proxy.port=:8880 \
-admin.port=:8881 \
-http.port=:8888 \
-rootUrl=localhost:8888 \
-summary.email='' "\
-summary.delay="5"
参数说明
- -p 8880:8880 作为代理接收请求的端口,所有请求访问这个端口
- -p 8881:8881 管理diffy服务可视化页面
- -p 8888:8888 查看结果的web页面
备注
-allowHttpSideEffects=true 展示POST, PUT, DELETE,为了安全默认不被展示
-service.protocol=https 通过https协议运行
-https.port=123 默认443,可以手动配置
3 执行测试
http://localhost:8880/接口路径
4 查看结果
diffy结果:http://localhost:8888
扫描二维码关注公众号,回复:
12863850 查看本文章
diffy服务管理:http://localhost:8881/admin
三、踩坑记录
第一次是从twitter的github地址获取docker启动命令,报错
解决:
参考opendiffy中的docker启动命令,后面会有-summary.email参数,加上后启动成功
四、参考资料
-
twitter的github地址
https://github.com/twitter-archive/diffy
-
opendiffy的github地址
https://github.com/opendiffy/diffy
现在在维护opendiffy,所以可以opendiffy为主查阅资料