溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用 Hystrix 構建高可用服務架構

發(fā)布時間:2020-07-16 02:38:59 來源:網(wǎng)絡 閱讀:617 作者:Java筆記丶 欄目:編程語言

1.Hystrix 是什么?

在分布式系統(tǒng)中,每個服務都可能會調(diào)用很多其他服務,被調(diào)用的那些服務就是依賴服務,有的時候某些依賴服務出現(xiàn)故障也是很正常的。

Hystrix 可以讓我們在分布式系統(tǒng)中對服務間的調(diào)用進行控制,加入一些調(diào)用延遲或者依賴故障容錯機制。

Hystrix 通過將依賴服務進行資源隔離,進而阻止某個依賴服務出現(xiàn)故障時在整個系統(tǒng)所有的依賴服務調(diào)用中進行蔓延;同時Hystrix 還提供故障時的 fallback 降級機制。

總而言之,Hystrix 通過這些方法幫助我們提升分布式系統(tǒng)的可用性和穩(wěn)定性。

?

2.Hystrix 的歷史

Hystrix 是高可用性保障的一個框架。Netflix(可以認為是國外的優(yōu)酷或者愛奇藝之類的視頻網(wǎng)站)的 API 團隊從 2011 年開始做一些提升系統(tǒng)可用性和穩(wěn)定性的工作,Hystrix 就是從那時候開始發(fā)展出來的。

在 2012 年的時候,Hystrix 就變得比較成熟和穩(wěn)定了,Netflix 中,除了 API 團隊以外,很多其他的團隊都開始使用 Hystrix。

時至今日,Netflix 中每天都有數(shù)十億次的服務間調(diào)用,通過 Hystrix 框架在進行,而 Hystrix 也幫助 Netflix 網(wǎng)站提升了整體的可用性和穩(wěn)定性。

2018 年 11 月,Hystrix 在其 Github 主頁宣布,不再開放新功能,推薦開發(fā)者使用其他仍然活躍的開源項目。維護模式的轉(zhuǎn)變絕不意味著 Hystrix 不再有價值。相反,Hystrix 激發(fā)了很多偉大的想法和項目,我們高可用的這一塊知識還是會針對 Hystrix 進行講解。

?

3.Hystrix 的設計原則

  • 對依賴服務調(diào)用時出現(xiàn)的調(diào)用延遲和調(diào)用失敗進行控制和容錯保護

  • 在復雜的分布式系統(tǒng)中,阻止某一個依賴服務的故障在整個系統(tǒng)中蔓延。比如某一個服務故障了,導致其它服務也跟著故障。

  • 提供?fail-fast(快速失?。┖涂焖倩謴偷闹С帧?/p>

  • 提供 fallback 優(yōu)雅降級的支持。

  • 支持近實時的監(jiān)控、報警以及運維操作。

舉個栗子。

有這樣一個分布式系統(tǒng),服務 A 依賴于服務 B,服務 B 依賴于服務 C/D/E。在這樣一個成熟的系統(tǒng)內(nèi),比如說最多可能只有 100 個線程資源。正常情況下,40 個線程并發(fā)調(diào)用服務 C,各 30 個線程并發(fā)調(diào)用 D/E。

調(diào)用服務 C,只需要 20ms,現(xiàn)在因為服務 C 故障了,比如延遲,或者掛了,此時線程會 hang 住 2s 左右。40 個線程全部被卡住,由于請求不斷涌入,其它的線程也用來調(diào)用服務 C,同樣也會被卡住。這樣導致服務 B 的線程資源被耗盡,無法接收新的請求,甚至可能因為大量線程不斷的運轉(zhuǎn),導致自己宕機。服務 A 也掛。

?

原文:Java架構筆記

免費Java高級資料需要自己領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并發(fā)分布式等教程,一共30G。???????????
傳送門:???????????https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI