在分布式的環境或者微服務中,不可避免的會出現一些錯誤,乙個服務的失敗或許會導致整個專案的失敗。而hystrix是乙個庫,它可以通過新增容錯邏輯來保護或者控制你的分布式服務之間的互動。hystrix通過隔離服務之間的訪問點,阻止它們之間的級聯故障以及提供後備選項來實現這一目標,所有這些都可以提高系統的整體彈性。
hystrix出現的目的包括以下幾個方面:
(1)通過第三方客戶端庫訪問依賴關係,以防止和控制延遲或故障;
(2)在複雜的分布式系統中,快速的故障並及時的修復,防止級聯故障;
(3)在可能的情況下,後退並優雅的降級;
(4)實現近實時監控、警報或者控制;
在一切正常的情況下,分布式系統的請求流如下圖所示:(來自hystrix的官網wiki)
但是,如果其中的任何一條服務不可用的時候,都有可能會導致整個使用者請求被阻塞。
應用程式中通過網路或者可能導致網路請求進入客戶端庫的每個點都有可能會發生故障。比故障更可怕的是,這些應用程式可能會導致服務之間的延遲增加,從而備份佇列、執行緒或其他系統故障,最後可能導致主線程池被沾滿,導致整個服務不可用。這類似於雪崩效應。
服務提供者不可用,是產生雪崩效應的重要原因之一。還有以下幾個原因,會產生此效應:
首先在配置檔案中新增響應的依賴:
org.springframework.cloud
spring-cloud-starter-hystrix
在啟動類中加入註解:
@enablehystrix
在需要做熔斷的類上新增一下註解。其中fallbackmethod屬性表示:當方法發生錯誤時,會跳到我們自己定義的findbasicdatabytypefallback方法中進行處理。這樣的話當服務發生錯誤時,就會去執行我們自己定義的方法,返回乙個結果,不會導致整個服務不可用。
@hystrixcommand(fallbackmethod = "findbasicdatabytypefallback")
Hystrix 服務熔斷
熔斷機制概述 熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。當扇出鏈路的某個微服務出錯不可用或者響應時間太長時,會進行服務的降級,進而熔斷該節點微服務的呼叫,快速返回錯誤的響應資訊。當檢測到該節點微服務呼叫響應正常後,恢復呼叫鏈路。在springcloud框架裡,熔斷機制通過hystrix實現,h...
Hystrix 服務熔斷
hystrix hystix是netflix開源的乙個延遲和容錯庫,用於隔離訪問遠端服務,防止出現級聯失敗。微服務中,服務間呼叫關係錯綜複雜,乙個請求,可能需要呼叫多個微服務介面才能實現,會形成非常複雜的呼叫鏈路 伺服器支援的執行緒和併發數有限,請求一直阻塞,會導致伺服器資源耗盡,從而導致所有其它服...
服務熔斷Hystrix
分布式面臨的問題 在複雜分布式體系結構中應用程式有數十個依賴關係,每個依賴關係在某些時候將不可避免的失敗!服務雪崩 多個微服務之間呼叫的時候,假設微服務a呼叫微服務b和微服務c,微服務b和微服務c又呼叫其他微服務,這就是所謂的 扇出 如果扇出的鏈路上某個微服務的呼叫響應時間過長或者不可用,對微服務a...