雪崩效應(yīng)

現(xiàn)如今SOA、微服務(wù)風愈演愈烈,越來越多的業(yè)務(wù)和資源被以服務(wù)的形式包裝和發(fā)布,服務(wù)間又可能會依賴其他各種服務(wù)。由此而來不可避免的會產(chǎn)生很多問題。

比如一個服務(wù),其依賴了另外30個服務(wù)。假設(shè)每個服務(wù)的可用率都有三個9(99.9%),那么我們計算一下:

99.99%^30 = 99.7%

現(xiàn)實很殘酷,這個服務(wù)的實際可用性只能是99.7%,也就是說每個月這個服務(wù)都要好宕機8000+秒~~~

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)
正常用戶請求時,服務(wù)內(nèi)部依次請求A\P\H\I服務(wù),兵返回響應(yīng)結(jié)果。

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)
非常不幸,我們的I服務(wù)出了某些問題,此時我們的用戶請求就被堵塞在I服務(wù)處。

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)
更加悲劇的是,后續(xù)越來越多的請求都被堵塞在I服務(wù)處,而這些被堵塞的請求會占用線程、IO、網(wǎng)絡(luò)等系統(tǒng)資源,隨著資源被占用的越來越多,本來不存在的性能問題也會隨之而來,造成系統(tǒng)中的其他服務(wù)出現(xiàn)問題,甚至導(dǎo)致系統(tǒng)奔潰。

這也就是我們常說的雪崩效應(yīng)


服務(wù)容災(zāi)

為了避免出現(xiàn)服務(wù)的雪崩,我們需要對服務(wù)做容災(zāi)處理。

常規(guī)的服務(wù)容災(zāi)處理思路有:

  • 資源隔離

  • 超時設(shè)定

  • 服務(wù)降級

  • 服務(wù)限流

其中每種思路又可以有不同的解決方案。

比如資源隔離可以通過將不同的服務(wù)發(fā)布在獨立的docker容器或服務(wù)器中,這樣即使一個服務(wù)出現(xiàn)問題,也不會殃及池魚。

服務(wù)降級和服務(wù)限流可以通過前端nginx+lua來實現(xiàn),當服務(wù)處理延遲或宕機時,nginx可以直接返回固定的降級/失敗響應(yīng),已快速跳過問題服務(wù)。


Hystrix

Hystrix,是Netflix的一個開源熔斷器,通過Hystrix,我們可以很方便的實現(xiàn)資源隔離、限流、超時設(shè)計、服務(wù)降級等服務(wù)容災(zāi)措施,并且還提供了強大的監(jiān)控,可