元件分享之後端元件——基于Java的分布式系統的延遲和容錯元件(熔斷元件)Hystrix
背景
近期正在探索前端、後端、系統端各類常用元件與工具,對其一些常見的元件進行再次整理一下,形成标準化元件專題,後續該專題将包含各類語言中的一些常用元件。歡迎大家進行持續關注。
元件基本資訊
- 元件:Hystrix
- 開源協定:LICENSE
内容
本節我們分享一個基于Java的分布式系統的延遲和容錯元件(熔斷元件)Hystrix,Hystrix是一個延遲和容錯庫,旨在隔離對遠端系統、服務和第 3 方庫的通路點,停止級聯故障并在故障不可避免的複雜分布式系統中實作彈性。
它可以做到什麼?1)延遲和容錯
停止級聯故障。回退和優雅降級。失敗快,恢複快。
使用斷路器進行線程和信号量隔離。
2) 實時操作
實時監控和配置更改。觀察服務和财産變化在整個車隊中傳播時立即生效。
在幾秒鐘内收到警報、做出決定、影響變化并看到結果。
3) 并發
并行執行。并發感覺請求緩存。通過請求折疊自動批處理。
我們在程式中使用也是比較簡單的,隻需要實作一下HystrixCommand<String>的Run方法即可,具體如下:
1、maven包引入
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>x.y.z</version>
</dependency>
2、繼承實作
public class CommandHelloWorld extends HystrixCommand<String> {
private final String name;
public CommandHelloWorld(String name) {
super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
this.name = name;
}
@Override
protected String run() {
return "Hello " + name + "!";
}
}
3、使用
String s = new CommandHelloWorld("Bob").execute();
Future<String> s = new CommandHelloWorld("Bob").queue();
Observable<String> s = new CommandHelloWorld("Bob").observe();
更多示例和資訊可以在如何使用部分中找到。
示例源代碼可以在hystrix-examples子產品中找到。
更多說明參見:Wiki、Javadoc。
本文聲明:
88x31.png
知識共享許可協定