天天看點

元件分享之後端元件——基于Java的分布式系統的延遲和容錯元件(熔斷元件)Hystrix

元件分享之後端元件——基于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​​。

本文聲明:

元件分享之後端元件——基于Java的分布式系統的延遲和容錯元件(熔斷元件)Hystrix

88x31.png

​​知識共享許可協定​​