javascript
Spring Cloud(三) 熔断器Hystrix
前文回顧:
Spring Cloud(一)Eureka Server-單體及集群搭建
Spring Cloud(二) 配置Eureka Client
一.Hystrix介紹
在微服務(wù)架構(gòu)中通常會(huì)有多個(gè)服務(wù)層調(diào)用,基礎(chǔ)服務(wù)的故障可能會(huì)導(dǎo)致級(jí)聯(lián)故障,進(jìn)而造成整個(gè)系統(tǒng)不可用的情況,這種現(xiàn)象被稱(chēng)為服務(wù)雪崩效應(yīng)。服務(wù)雪崩效應(yīng)是一種因“服務(wù)提供者”的不可用導(dǎo)致“服務(wù)消費(fèi)者”的不可用,并將不可用逐漸放大的過(guò)程。
Hystrix是一個(gè)庫(kù),通過(guò)添加延遲容忍和容錯(cuò)邏輯,幫助你控制這些分布式服務(wù)之間的交互。Hystrix通過(guò)隔離服務(wù)之間的訪問(wèn)點(diǎn)、停止級(jí)聯(lián)失敗和提供回退選項(xiàng)來(lái)實(shí)現(xiàn)這一點(diǎn),所有這些都可以提高系統(tǒng)的整體彈性。
二.Hystrix的設(shè)計(jì)原則
-
防止任何單個(gè)依賴(lài)項(xiàng)耗盡所有容器(如Tomcat)用戶(hù)線(xiàn)程。
-
甩掉包袱,快速失敗而不是排隊(duì)。
-
在任何可行的地方提供回退,以保護(hù)用戶(hù)不受失敗的影響。
-
使用隔離技術(shù)(如隔離板、泳道和斷路器模式)來(lái)限制任何一個(gè)依賴(lài)項(xiàng)的影響。
-
通過(guò)近實(shí)時(shí)的度量、監(jiān)視和警報(bào)來(lái)優(yōu)化發(fā)現(xiàn)時(shí)間。
-
通過(guò)配置的低延遲傳播來(lái)優(yōu)化恢復(fù)時(shí)間。
-
支持對(duì)Hystrix的大多數(shù)方面的動(dòng)態(tài)屬性更改,允許使用低延遲反饋循環(huán)進(jìn)行實(shí)時(shí)操作修改。
-
避免在整個(gè)依賴(lài)客戶(hù)端執(zhí)行中出現(xiàn)故障,而不僅僅是在網(wǎng)絡(luò)流量中。
三.代碼示例
代碼基于上一篇博客開(kāi)發(fā)
1.配置文件
application.properties添加這一條:
feign.hystrix.enabled=true2.創(chuàng)建回調(diào)類(lèi)
@Service public class HelloRemoteHystrix implements HelloRemote {@Overridepublic String hello(@RequestParam(value = "name") String name) {return "hello " + name + ",this message send failed";} }3.添加fallback屬性
@FeignClient(name= "spring-cloud-producer", fallback = HelloRemoteHystrix.class) public interface HelloRemote { ?@RequestMapping(value = "/hello")String hello(@RequestParam(value = "name") String name); }4.測(cè)試
依次啟動(dòng)spring-cloud-eureka、spring-cloud-producer、spring-cloud-consumer三個(gè)項(xiàng)目
瀏覽器中輸入:http://localhost:9001/hello/yfy
返回:hello yfy,welcome to Spring Cloud
手動(dòng)停止spring-cloud-producer服務(wù)
瀏覽器中輸入:http://localhost:9001/hello/yfy
返回:hello yfy,this message send failed
總結(jié)
以上是生活随笔為你收集整理的Spring Cloud(三) 熔断器Hystrix的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Cloud(二) 配置Eu
- 下一篇: Spring Cloud(四) API网