Netflix的創造了一個呼叫的庫Hystrix實現了斷路器圖案。在微服務架構中,通常有多層服務呼叫。 HystrixGraph 圖1.微服務圖 較低階別的服務中的服務故障可能導致使用者級聯故障。當對特定服務的呼叫達到一定閾值時(Hystrix中的預設值為5秒內的20次故障),電路開啟,不進行通話。在錯誤和開路的情況下,開發人員可以提供後備。
HystrixFallback 圖2. Hystrix回退防止級聯故障 開放式電路會停止級聯故障,並允許不必要的或失敗的服務時間來癒合。回退可以是另一個Hystrix保護的呼叫,靜態資料或一個正常的空值。回退可能被連結,所以第一個回退使得一些其他業務電話又回到靜態資料。
如何加入Hystrix 要在專案中包含Hystrix,請使用組org.springframework.cloud和artifact id spring-cloud-starter-hystrix的啟動器。有關 使用當前的Spring Cloud釋出列表設定構建系統的詳細資訊,請參閱Spring Cloud專案頁面。
示例啟動應用程式:
@SpringBootApplication @EnableCircuitBreaker public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
複製程式碼
}
@Component public class StoreIntegration {
@HystrixCommand(fallbackMethod = "defaultStores")
public Object getStores(Map<String, Object> parameters) {
//do stuff that might fail
}
public Object defaultStores(Map<String, Object> parameters) {
return /* something useful */;
}
複製程式碼
} @HystrixCommand由名為“javanica”的Netflix contrib庫提供 。Spring Cloud在連線到Hystrix斷路器的代理中使用該註釋自動包裝Spring bean。斷路器計算何時開啟和關閉電路,以及在發生故障時應該做什麼。
要配置@HystrixCommand,您可以使用commandProperties屬性列出@HystrixProperty註釋。請參閱 這裡 瞭解更多詳情。有關 可用屬性的詳細資訊,請參閱Hystrix維基。
原始碼來源:http://minglisoft.cn/honghu/technology.html