穩定性思考-強弱依賴

來源: https://blog.csdn.net/y_xianjun/article/details/8189942

系統依賴關係比較複雜情況:

    A系統依賴B系統資源,當B系統發生故障的時候,A系統勢必會被拖累,導致A系統也發生故障 。這裏的依賴要區分兩種情況:

 

1、A強依賴於B     任何強依賴都要儘可能的轉化成弱依賴,因爲強依賴本身意味着一榮俱榮,一損俱損。   

 對於強依賴B這個場景,從穩定性來說我們還是可以做一些事情:

    當B發生故障,雖然A系統不能正常執行業務,但是A不能掛掉,一旦B系統恢復,A系統也要做到立即恢復。同時A有責任對B要進行流量保護,而不是對B進行摧殘。     如果系統沒有做特殊的保護,當分流的量大於了單機的容量,持續一段時間後,系統將不能很好的恢復,即便我們把分流進入的量減少到系統容量以下也不能快速恢復。

 

2、A弱依賴於B 此時B如果發生了故障,那麼大家都期望A繼續能提供正常的服務 。

    場景1:A調用B,A的主流程不需要等待B的返回結果 瀏覽器弱依賴:A從瀏覽器上發起異步請求,如果B掛了,那麼只會出現頁面某一個區域不顯示B的內容,如果對於用戶交互可以接受,那麼系統層面無任何問題,商品詳情頁面的評論列表和購買記錄就是這個情況 異步線程:A調用B的時候只發送消息,然後調用動作由另外的線程來執行,並且不需要即時反饋結果,一般作爲消息通知,軌跡記錄等場景使用。不過爲了防止堆積,也需要控制隊列的大小

    場景2:A調用B,A的主流程需要等待B的返回結果 設置超時時間:如果B響應超時,則拋出超時異常,絕對大部分情況下OK;不過兩種影響要考慮:1、超時時間設置過長或者過短導致的副作用 2、大量異常拋出 設置最大併發請求數閥值,一旦超過閥值就跳過訪問B 兩種方式相結合使用最佳。

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