diffy 是twiiter 開源的流量以及bug 查找系統
參考使用圖
幾點說明
使用diffy我們需要三個角色
candidate instance
候選實例,運行新的代碼primary instance
主實例,運行最新已知可運行的代碼secondary instance
次要運行與primary
類似已知可運行的代碼
當diffy 接受請求之后,會多播發送候選,主,以及次要實例,當這些服務發送回來響應之后,diffy 會進行比較- 候選與主的觀測的原始差異
- 在主要和次要實例之間觀察到非確定性噪聲。由於這兩個實例都運行已知良好的代碼,因此應該期望響應達成一致。如果不是,服務可能具有非確定性行為,這是預期的
運行方式
以下為一個簡單的docker-compose 運行說明
詳細代碼參考 https://github.com/rongfengliang/diffy-docker-compose-demo
- docker-compose文件
version: "3"
services:
app:
build: ./
ports:
- "9000:9000"
- "9001:9001"
- "9002:9002"
diffy:
image: diffy/diffy
command: ["-candidate=app:9000","-master.primary=app:9001","-master.secondary=app:9002","-service.protocol=http","-serviceName=\"Test-Service\"","-proxy.port=:8880","-admin.port=:8881","-http.port=:8888","-rootUrl=localhost:8888"]
ports:
- "8880:8880"
- "8881:8881"
- "8888:8888"
- 效果
參考資料
https://github.com/twitter/diffy
https://blog.twitter.com/engineering/en_us/a/2015/diffy-testing-services-without-writing-tests.html
https://github.com/rongfengliang/diffy-docker-compose-demo