ChaosBlade使用之Dubbo服務超時/服務拋異常
阿新 • • 發佈:2020-12-13
Note: 本文用到的Dubbo服務由ChaosBlade自帶。
場景一:Dubbo服務超時
準備
使用前檢視Dubbo服務請求是否正常
$ curl http://localhost:8080/dubbo/hello?name=dubbo
故障演練
第一步:準備階段。由於 Java 應用的故障注入是通過 Java Agent 機制實現,所以首先要先掛載 agent
$ ./blade prepare jvm --process business
第二步:執行階段,注入故障。即對 B 服務提供方提供的com.example.demo.DemoService#sayhello
$ ./blade create dubbo delay --time 3000 --service com.example.service.DemoService --methodname sayHello --consumer
對實施實驗的命令進行解析:
--time: 3000,表示延遲 3000 ms;單位是 ms --service: com.alibaba.demo.HelloService, 表示呼叫的服務 --methodname: hello,表示服務介面方法 --consumer: 表示演練的是 dubbo consumer --process: dubbo.consumer,表示對哪個應用程序實施混沌實驗
驗證Dubbo服務超時
$ curl http://localhost:8080/dubbo/hello?name=dubbo
場景恢復
$ ./blade destroy ID
Note: ID查詢
$ ./blade status ID
再次檢視是否正常訪問
$ curl http://localhost:8080/dubbo/hello?name=dubbo
場景二:Dubbo服務拋異常
準備
使用幫助指令檢視需要傳入的引數
$ ./blade create dubbo throwCustomException -h
故障演練
$ ./blade create dubbo throwCustomException --exception java.lang.Exception --service com.example.service.DemoService --methodname sayHello --consumer
驗證
$ curl http://localhost:8080/dubbo/hello?name=dubbo
場景恢復
$ ./blade destroy ID
Note: ID查詢
$ ./blade status ID
再次檢視是否正常訪問
$ curl http://localhost:8080/dubbo/hello?name=dubbo
撤銷剛才的實驗準備,即解除安裝 Java Agent
$ ./blade revoke 1ea4c4372e94b7cc
Tip:如果找不到之前執行 prepare 返回的 UID 的話,執行
./blade status --type prepare
命令查詢
Dubbo故障幫助指令
$ ./blade create dubbo delay -h