Hystrix(Netflix)使用教程-1

Hystrix(https://github.com/Netflix/Hystrix)是Netflix(https://www.netflix.com/global)的一个开源项目,主要作用是通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。 其可以看做是Netflix团队对分布式系统运维的各种理念和实践的总结。值得一提的是在ThoughtWorks最新的Tech Radar 2014(http://www.thoughtworks.com/radar/#/tools)中,Hystrix的评级已从评估(Assess)上升到试用(Trial),即其已经完善到可以在产品环境中试用了,相信会有越来越多的公司采用该类库来提升自己系统的容错能力,我所在的部门刚刚把Hystrix加入了工具箱,并已在某几个项目中实践了Hystrix。


首先讲下,如何结合maven和IDEA使用Hystrix。

  1. 引入依赖
    <!--hystrix-->
    <dependency>
    <groupId>com.netflix.hystrix</groupId>
    <artifactId>hystrix-core</artifactId>
    <version>1.5.10</version>
    </dependency>
    <!--hystrix-->

  2. 项目中原本有个HystrixService业务类。我们首先,将这个业务类的实现方法转交给HystrixService的实现类,此实现类实现了Hystix的某些方法。代码如下:
    /**
    @author tengqingya
    @create 2017-03-24 17:53
    */
    @Service
    public class HystrixService {
    public String sayHello(){
    return new HystrixServiceImpl().execute();
    }
    }

    原本的 sayHello中的业务代码用new HystrixServiceImpl().execute(); 代替。

  3. 然后,将原本sayHello中的业务代码,交由HystrixServiceImpl实现类来完成。此实现类继承HystrixCommand方法。代码如下图所示代码1首先我们得实现第一个框子里面的构造方法,里面是对command的一些基础配置,如属于哪个分组,超时多久就会自动调用fallback方法等。第二个框子是我们业务的自己的方法,本来是写到HystrixService中的,现在写到run中。第三个框子是业务代码发生错误后,执行的方法。我们模拟了业务代码线程阻塞8秒,然而我们在构造方法中配置的是超过1秒就自动失败,调用fallback中的方法立即返回。
  4. 再写个Controller看效果。代码如下:
    @RequestMapping("hystrix")
    @ResponseBody
    public ResultModel testHystrix(){
    return new ResultModel(hystrixService.sayHello());
    }
  5. 通过浏览器访问:http://gen.meizu.com:8080/manage/hystrix。效果如下效果1可见效果就是过看1秒后立即返回了fu***….

以上就是Hystrix最基本的用法。更详细的用法请看下一篇。
本文为作者原创,请勿随便转载,转载请联系作者qq475804848并标明出处。

猜你喜欢

转载自blog.csdn.net/starryninglong/article/details/65936411