Netflix開源Hystrix

banq發表於2012-12-02
在一個分散式系統,任何一個服務呼叫總有可能失敗的。Hystrix豪豬是一個旨在為這些分散式服務之間的相互呼叫提供了更大的延遲和容錯性的保障。

Home · Netflix/Hystrix Wiki

正常服務呼叫有可能網路環境或各種因素出錯,如下圖:

Netflix開源Hystrix

一個應用如果呼叫30個服務,只有99.7%機率成功呼叫:
99.9930 = 99.7% uptime
0.3% of 1 billion requests = 3,000,000 failures

Hystrix實際是在客戶端和服務之間增加一個執行緒池:
採取Shed大棚載入和快速失敗機制,而不是佇列queueing。
提供可行的情況下,保護使用者免受失敗的回退。
使用隔離技術(如艙壁,泳道和斷路器的模式),限制影響的任何一個依賴。
透過近實時指標,監測和報警最佳化實時服務發現( time-to-discovery)(banq:比EJB的JNDI封裝在EJB伺服器中無法最佳化定製強多)
如果錯誤率超過閾,斷路器將在一段時間內自動或手動停止該服務的所有請求。

下圖是Hystrix加入了正常服務的示意圖:

Netflix開源Hystrix

banq評:在使用EJB的Session Bean作為服務的JavaEE架構中,Session Bean的發現和定位是由JNDI等完成,而JNDI一般是被整合在Websphere或Weblogic JBoss伺服器中,開源Hystrix實際做了EJB中介軟體伺服器內部的一些功能,原來這方面是由EJB伺服器廠商提供,應用者只有配置的權力,無法介入。

相關文章