前言
Soul 網(wǎng)關上用以下四種插件實現(xiàn)了限流和熔斷
- rateLimiter 插件
- Hystrix 插件
- Sentinel 插件
- resilience4j 插件
本文主要講述 Hystrix 插件的配置。
1. 概念
斷路保護就是形象的說就是家中電路上保險絲,當負載過大時,它就會跳閘,從而保護家中的線路和其他電器不會燒毀。
它的核心思想:
- 在斷路器對象中封裝受保護的?法調(diào)?
- 該對象監(jiān)控調(diào)?和斷路情況
- 調(diào)?失敗觸發(fā)閾值后,后續(xù)調(diào)?直接由斷路器返回錯誤,不再執(zhí)?實際調(diào)?
2. 配置
2.1 啟動 admin 后臺,啟動 bootstrap, 啟動 examples 中的 http 服務器。

soul 代碼

examples http 服務
2.1 開啟 Hystrix 插件,配置好選擇器, 配置好 rules。

開啟插件

新增選擇器

新增規(guī)則
配置選擇器和規(guī)則時:名稱是全局唯一的。如果配置了和其他插件一樣的名稱的話,會報錯誤。
名稱全局唯一
2.2 這里采用 ab 壓力測試,
ab -n 1000 -t 10 -c 200 "http://localhost:9195/http/test/findByUserId?userId=1"
測試結果
...
Concurrency Level: 200
Time taken for tests: 10.000 seconds
Complete requests: 10520
Failed requests: 10372
(Connect: 0, Receive: 0, Length: 10372, Exceptions: 0)
Non-2xx responses: 10372
Total transferred: 1961296 bytes
HTML transferred: 1013332 bytes
Requests per second: 1051.98 [#/sec] (mean)
Time per request: 190.117 [ms] (mean)
Time per request: 0.951 [ms] (mean, across all concurrent requests)
Transfer rate: 191.53 [Kbytes/sec] received
然后觀察 bootstrap 端的命令行會有以下日志
hystrix execute have circuitBreaker is Open! groupKey:0,commandKey:0
說明這時候 hystrix 已經(jīng)開始生效了
坑點:之前采用的 Postman 的 Runner 機制跑的,但是這個是依次執(zhí)行的,并不能很好的做壓測。具體可以參考 postman接口測試和壓力測試 這上面的回復。
總結:
- 了解熔斷的機制才能更好的完成配置。
- 接下來會分析,Soul 是怎么利用 Hystrix 插件的
