
微服務設計模式 - 斷路器
問題陳述
微服務架構將應用程式構建為一組鬆散耦合的微服務,每個服務都可以以敏捷的方式獨立開發,以實現持續交付/部署。這些服務通常與其他微服務互動。現在,始終存在服務過載或不可用的可能性。在這種情況下,呼叫服務也將等待。如果多個服務被阻塞,則會影響效能並可能對整個應用程式產生級聯影響。
現在,如何防止服務故障或網路故障級聯到其他服務?如果一個服務宕機,則不應再向其傳送請求。
解決方案
我們可以使用斷路器模式,其中代理服務充當斷路器。每個服務都應透過代理服務呼叫。代理服務維護超時和失敗計數。如果連續失敗次數超過閾值失敗計數,則代理服務將跳閘斷路器並啟動超時週期。在此超時期間,所有請求都將失敗。一旦此超時週期結束,代理服務允許給定數量的測試請求傳遞到提供程式服務。如果請求成功,則代理服務恢復操作;否則,它將再次跳閘斷路器並啟動超時週期,在此期間將不處理任何請求。
廣告