soul 網(wǎng)關(十七): Hystrix 插件解析(一)

前言

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接口測試和壓力測試 這上面的回復。

總結:

  1. 了解熔斷的機制才能更好的完成配置。
  2. 接下來會分析,Soul 是怎么利用 Hystrix 插件的
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容