前言
Soul 網(wǎng)關(guān)上用以下四種插件實(shí)現(xiàn)了限流和熔斷
- rateLimiter 插件
- Hystrix 插件
- Sentinel 插件
- resilience4j 插件
本文主要講述 Hystrix 插件的配置革答。
1. 概念
斷路保護(hù)就是形象的說(shuō)就是家中電路上保險(xiǎn)絲战坤,當(dāng)負(fù)載過(guò)大時(shí)遮婶,它就會(huì)跳閘,從而保護(hù)家中的線路和其他電器不會(huì)燒毀湖笨。
它的核心思想:
- 在斷路器對(duì)象中封裝受保護(hù)的?法調(diào)?
- 該對(duì)象監(jiān)控調(diào)?和斷路情況
- 調(diào)?失敗觸發(fā)閾值后,后續(xù)調(diào)?直接由斷路器返回錯(cuò)誤蹦骑,不再執(zhí)?實(shí)際調(diào)?
2. 配置
2.1 啟動(dòng) admin 后臺(tái)慈省,啟動(dòng) bootstrap, 啟動(dòng) examples 中的 http 服務(wù)器眠菇。
2.1 開啟 Hystrix 插件边败,配置好選擇器, 配置好 rules。
配置選擇器和規(guī)則時(shí):名稱是全局唯一的捎废。如果配置了和其他插件一樣的名稱的話笑窜,會(huì)報(bào)錯(cuò)誤。
2.2 這里采用 ab 壓力測(cè)試登疗,
ab -n 1000 -t 10 -c 200 "http://localhost:9195/http/test/findByUserId?userId=1"
測(cè)試結(jié)果
...
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 端的命令行會(huì)有以下日志
hystrix execute have circuitBreaker is Open! groupKey:0,commandKey:0
說(shuō)明這時(shí)候 hystrix 已經(jīng)開始生效了
坑點(diǎn):之前采用的 Postman 的 Runner 機(jī)制跑的排截,但是這個(gè)是依次執(zhí)行的,并不能很好的做壓測(cè)辐益。具體可以參考 postman接口測(cè)試和壓力測(cè)試 這上面的回復(fù)断傲。
總結(jié):
- 了解熔斷的機(jī)制才能更好的完成配置。
- 接下來(lái)會(huì)分析智政,Soul 是怎么利用 Hystrix 插件的