Hystrix斷路器
Hystrix斷路器是什麼呢?
Hystix是Netflix開源的一個延遲和容錯庫,用於隔離訪問遠端服務、第三方庫,防止出現級聯失敗。
在微服務I發生異常,請求阻塞,使用者不會得到響應,則tomcat的這個執行緒不會釋放,於是越來越多的使用者請求到來,越來越多的執行緒會阻塞,伺服器支援的執行緒和併發數有限,請求一直阻塞,會導致伺服器資源耗盡,從而導致所有其它服務都不可用,形成雪崩效應。
那麼這個問題如何解決呢?來我們一起編寫Hystrix
新建提供者cloud-provider-hystrix-payment8001模組
匯入依賴,這裡我們先把hystrix依賴註釋掉,先模擬一下伺服器發生超時的狀況
<dependencies>
<!-- hystrix -->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>-->
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<!-- 引入自己定義的api通用包,可以使用Payment支付Entity -->
<groupId>org.example</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
編寫配置檔案
編寫啟動類
來寫service,因為我們只是模擬一下伺服器連線超時,所有就不去連線資料庫了
編寫controller
訪問正常的方法
訪問延遲的方法,現在都沒有問題
接下來我們使用軟體來模擬伺服器在高併發的情況下會如何,設定一下執行緒數量
我們再來訪問一下試試,可以看出在高併發的情況下一直在重新整理,這樣會讓客戶等的時間太長,客戶體驗極差,你們公司很有可能就涼涼了,就算沒有訪問到也應該給客戶一個提示語句,不能一直瞎等下去,這裡我們就需要用到Hystrix斷路器了
把這個配置檔案的註釋解開
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
修改我們的啟動類,這個註解裡邊包含了上邊上個註解,這是開啟斷路器用的
service層修改一下,注:使用者等待3000是毫秒
測試一下,這裡是使用者最多等待三秒,但是我們模擬的是讓它休眠五秒在執行,所以也就超時了,呼叫了備選方案
「其他文章」
- 清華大學團隊:人臉識別爆出巨大丑聞,15分鐘解鎖19款手機
- Kafka架構設計
- 你有多少個前男友?
- 這是什麼鬼文章
- CYNORA宣佈推出業界首個基於TADF深綠髮光體的裝置測試套件用於下一代OLED顯示
- Kubernetes 入門到進階實戰
- rsyslog日誌伺服器搭建
- Hystrix斷路器
- 計算機專業學習的一些思考和總結
- ThingJS官方示例(十一):基於資料向量及貼圖url開發OD線
- RTMP協議網際網路教育課堂直播點播系統EasyDSS獲取直播資訊優化設計方案介紹
- 關於 Hive開窗函式
- JVM學習系列學習七
- Spring cloud系列教程第五篇-Eureka單機版配置
- 做題基礎~~~tips
- Java第六次作業
- SSDCRM客戶關係管理系統釋出原則
- 邀請學霸分享經驗:FRM一級沒你想象中那麼難!
- 其他訊息中介軟體及場景應用(下3)
- 289頁初中級前端題助你拿下Offer