1. 程式人生 > >netflix-hystrix-簡介[譯]

netflix-hystrix-簡介[譯]

運行 AC HR 系統 分布式系 應用 彈性 會有 lba

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-簡介[譯]