网站内容建设与管理,湖南新型网络营销方式,电脑 手机网站建站,桂林市网站建设公司对于没有副作用的接口(重复发送不会产生两份数据、不会产生多余的监控统计等等)#xff0c;就可以用这种方式方便的做回归测试。 部署三个不接外部流量的服务#xff0c;两份老版本、一份新版本#xff0c;把生产环境的流量复制到 Diffy 上。 如果生产环境支持通过请求头之类…对于没有副作用的接口(重复发送不会产生两份数据、不会产生多余的监控统计等等)就可以用这种方式方便的做回归测试。 部署三个不接外部流量的服务两份老版本、一份新版本把生产环境的流量复制到 Diffy 上。 如果生产环境支持通过请求头之类的方式区分测试流量和真实流量就可以扩大使用范围。启动serverA-8000# 启动服务docker run --detach --publish8000:80 --nameserverA nginxdocker exec -it serverA bashapt updateapt install vimvim /etc/nginx/conf.d/default.conf# 添加一个 Pathlocation /testerhome { default_type application/json; return 200 {tag:old,noise:1};}# :wq 保存退出重载 Nginxnginx -s reload# 退出容器exit# 输出 Nginx log 到终端上docker logs -f serverA访问 http://127.0.0.1:8000/testerhomecurl http://127.0.0.1:8000/testerhome # 可以看到返回了 {tag:old,noise:1}终端也输出了如下日志172.17.0.1 - - [13/Oct/2019:07:04:04 0000] GET /testerhome HTTP/1.1 200 28 - curl/7.54.0 - -启动serverB-8010# 启动服务docker run --detach --publish8010:80 --nameserverB nginxdocker exec -it serverB bashapt updateapt install vimvim /etc/nginx/conf.d/default.conf# 添加一个 Pathlocation /testerhome { default_type application/json; return 200 {tag:old,noise:1};}# :wq 保存退出重载 Nginxnginx -s reload# 退出容器exit# 输出 Nginx log 到终端上docker logs -f serverB# 再打开一个终端启动gor流量复制sudo ./gor --input-raw :8000 --output-http http://127.0.0.1:8010访问 http://127.0.0.1:8000/testerhomecurl http://127.0.0.1:8000/testerhome # 可以看到 8010 端口上的 serverB 也产生了访问日志172.17.0.1 - - [13/Oct/2019:07:14:04 0000] GET /testerhome HTTP/1.1 200 28 - curl/7.54.0 - -启动serverC-8020# 响应是 {tag:old,noise:2}# 启动服务docker run --detach --publish8020:80 --nameserverC nginxdocker exec -it serverC bashapt updateapt install vimvim /etc/nginx/conf.d/default.conf# 添加一个 Pathlocation /testerhome { default_type application/json; return 200 {tag:old,noise:2};}# :wq 保存退出重载 Nginxnginx -s reload# 退出容器exit# 输出 Nginx log 到终端上docker logs -f serverC启动serverD-8030# 响应是 {tag:new,noise:3}# 启动服务docker run --detach --publish8030:80 --nameserverD nginxdocker exec -it serverD bashapt updateapt install vimvim /etc/nginx/conf.d/default.conf# 添加一个 Pathlocation /testerhome { default_type application/json; return 200 {tag:new,noise:3};}# :wq 保存退出重载 Nginxnginx -s reload# 退出容器exit# 输出 Nginx log 到终端上docker logs -f serverD访问 http://127.0.0.1:8000/testerhomecurl http://127.0.0.1:8000/testerhome # 可以看到 8010 端口上的 serverB 也产生了访问日志172.17.0.1 - - [13/Oct/2019:07:14:04 0000] GET /testerhome HTTP/1.1 200 28 - curl/7.54.0 - -启动diffy服务# primary 主要版本返回的结果# secondary 如果开启降噪处理会认同这个版本接口返回的结果# candidate 要对比的版本docker run -d --name diffy-01 -p 8880:8880 -p 8881:8881 -p 8889:8889 diffy/diffy -candidate10.2.76.154:8030 -master.primary10.2.76.154:8010 -master.secondary10.2.76.154:8020 -service.protocolhttp -serviceNameMy-Service -proxy.port:8880 -admin.port:8881 -http.port:8889 -rootUrllocalhost:8889 -summary.emailhappya.com访问 [http://127.0.0.1:8889]访问 [http://127.0.0.1:8889]访问 [http://127.0.0.1:8889]看到展示 Diffy 结果的界面重启 gor这次把将 8000 端口监听到的请求复制一份转发到 Diffy 的 8880 端口sudo ./gor --input-raw :8000 --output-http http://127.0.0.1:8880访问http://127.0.0.1:8000/testerhome可以看到 8010、8020、8030 端口上的三个服务都产生了访问日志对比diffy上面的结果如果一个字段在 master.primary 和 master.secondary 上不一致很有可能不是 bug时间戳或者个性推荐之类的数据会这样。这时候可以 把 Exclude Noise 开关打开排除这些“噪声”。如果一个请求过去返回的value可以是不同的场景