netflix-hystrix-簡介[譯]
Hystrix是什麽
在分布式環境下,不可避免的有一些服務會失效,Hystrix通過延遲容忍和錯誤容忍邏輯,可以控制分布式服務之間的交互。Hystrix可以隔離服務訪問入口、抑制級聯錯誤、
支持fallback,所有的這些都可以提升系統的整體彈性(resiliency)。
Hystrix用來做什麽
保護和控制訪問服務的延遲和錯誤;
抑制在復雜分布式系統中的級聯錯誤;
快速失敗和快速恢復;
fallback和降級;
近實時的監控、報警以及操作控制。
Hystrix可以解決什麽問題
在復雜的分布式系統中,通常都會存在許多服務依賴,不可避免會有服務失效。假設一個應用依賴30個服務,每個服務在99.99%的運行時間裏都是正常的,可以計算:
99.99e30 = 99.7% uptime
0.3% of 1 billion requests = 3,000,000 failures
2+ hours downtime/month even if all dependencies have excellent uptime(99.99%).
所有服務健康時,請求流是這樣的:
一個後端系統產生延遲就會影響用戶整個請求:
依賴的服務lib是一個“黑盒”,它大多都會進行網絡請求,但更加糟糕的是該服務系統可能還會依賴其他服務。在高吞吐量的應用中,一個服務依賴的延遲可能在數秒內使整個服務器資源耗竭:
Hystrix如何解決問題
Hystrix可以將服務調用包裹在HystrixCommand中,每一個HystrixCommand都維護著一個threadpool,從而隔離服務,當一個服務產生延遲時,其“吞噬”的資源也只會限定在該HystrixCommand內(比如至多只會占用n個線程資源),而不會對全局造成影響。依賴threadpool,Hystrix還可以實現timeout操作。同時,當請求超時、異常、線程池滿、熔斷器打開時,Hystirx可以fallback。
netflix-hystrix-簡介[譯]