springCloud-Alibaba——sentinel簡介與微服務集成應用

目錄

1、前期概述:

2、Sentinel簡介:

3、Sentinel特徵:

(1)豐富的應用場景:

(2)完備的實時監控:

(3)廣泛的開源生態:

(4)完善的 SPI 擴展點:

4、Feign中應用Sentinel:

(1)引入依賴:

(2)修改配置文件:

(3)創建熔斷器類:

(4)Feign接口類指定fallback屬性:

5、熔斷測試:


1、前期概述:

在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以通過RPC相互調用,在Spring Cloud中可以用RestTemplate + LoadBalanceClient和Feign來調用。爲了保證其高可用,單個服務通常會集羣部署。由於網絡原因或者自身的原因,服務並不能保證 100% 可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,此時若有大量的請求湧入,Servlet容器的線程資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重後果,這就是服務故障的“雪崩”效應。爲了解決這個問題,業界提出了熔斷器模型。

阿里巴巴開源了Sentinel組件,實現了熔斷器模式,Spring Cloud 對這一組件進行了整合。在微服務架構中,一個請求需要調用多個服務是非常常見的,較底層的服務如果出現故障,會導致連鎖故障。當對特定的服務的調用的不可用達到一個閥值熔斷器將會被打開。熔斷器打開後,爲了避免連鎖故障,通過fallback方法可以直接返回一個固定值。

2、Sentinel簡介:

隨着微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel以流量爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。

sentinel即哨兵,相比hystrix斷路器而言,它的功能更豐富。hystrix僅支持熔斷,當服務消費方調用提供方發現異常後,進入熔斷;sentinel不僅支持異常熔斷,也支持響應超時熔斷,另外還支持限流,以及針對網關的熔斷和限流。此外,它還有過載處理、監控控制檯(Sentinel Dashboard)等。hystrix作爲組件集成到微服務中,sentinel也是如此,但它的控制檯需要獨立部署。

3、Sentinel特徵:

(1)豐富的應用場景:

Sentinel承接了阿里巴巴近10年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、消息削峯填谷、實時熔斷下游不可用應用等。

(2)完備的實時監控:

Sentinel同時提供實時的監控功能。您可以在控制檯中看到接入應用的單臺機器秒級數據,甚至500臺以下規模的集羣的彙總運行情況。

(3)廣泛的開源生態:

Sentinel提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC的整合。您只需要引入相應的依賴並進行簡單的配置即可快速地接入Sentinel。

(4)完善的 SPI 擴展點:

Sentinel提供簡單易用、完善的SPI擴展點。您可以通過實現擴展點,快速的定製邏輯。例如定製規則管理、適配數據源等。

4、Feign中應用Sentinel:

(1)引入依賴:

在微服務項目中需要引入依賴。

(2)修改配置文件:

Sentinel 適配了 Feign 組件。但默認是關閉的。需要在配置文件中配置打開它。

(3)創建熔斷器類:

創建一個實體類,實現Feign的業務接口,並重寫業務接口中的所有方法,每個方法返回對應的空業務數據,保證在調用其它微服務業務出現異常後返回一個無意義的空業務數據。

(4)Feign接口類指定fallback屬性:

在Feign接口的類上,添加fallback屬性,指定該業務接口對應的實現類,在Feign調用其它微服務業務出現異常時會調用對應實現類中的無業務數據接口,保證接口能返回數據即可,即便是一個空的無意義數據也行。

5、熔斷測試:

啓動nacos中心服務,啓動對應的各個微服務,首先正常情況下訪問某個微服務接口,是可以正常返回接口中調用其它微服務的業務數據的。然後關閉調用的其它微服務,再訪問該接口,該接口不會返回異常,也會返回數據,但是調用其它微服務返回的數據是無業務意義的數據。這就表示sentinel熔斷起作用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章