1. 程式人生 > 其它 >ChaosBlade使用之Dubbo服務超時/服務拋異常

ChaosBlade使用之Dubbo服務超時/服務拋異常

技術標籤:混沌工程大資料

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

服務注入 3 秒延遲。

$ ./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

在這裡插入圖片描述