<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>1.5.18</version>
</dependency>
这个依赖是整个Hystrix最底层的,实际上有了hystrix-core就能完成hystrix的功能,但是这个只能通过采用编程式的方式使用Hystrix,也就是自己构建继承HystrixCommand的对象然后从写run()和getFallback()方法,完成自定义run()方法中业务逻辑和getFallback()熔断异常兜底!这种方式是最底层,最核心的依赖包,用起来还是比较复杂的,如果想让一个方法支持fallback还得去继承HystrixCommand,跟业务完全耦合到一起,对业务的侵入性太大了,显然不利于hystrix的使用,那么基于注解的方式,采用声明式就接着诞生了!
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-javanica</artifactId>
<version>1.5.18</version>
</dependency>
在Hystrix核心依赖对代码侵入性较强,使用复杂的情况下,Hystrix提供了面向切面,基于注解,提供声明式编程方案hystrix-javanica就诞生了,使我们减少业务代码侵入,提高开发效率,hystrix-javanica项目使Hystrix更容易使用,我们只需要简单使用@HystrixCommand(fallbackMethod = “fallbackMethod”)标记业务层方法,然后主启动类标注@EnableHystrix即可完成hystrix熔断
依赖关系
hystrix-javanica依赖hystrix-core
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-metrics-event-stream</artifactId>
<version>1.5.18</version>
</dependency>
我们知道Hystrix是有调用监控指标的,是在通过hystrix-core依赖维护在容器中的,但是并没有提供怎么获取这些监控指标的地方,那么hystrix-metrics-event-stream就是专门用来获取这些监控指标的业务逻辑!
依赖关系
hystrix-metrics-event-stream依赖(hystrix-serialization、hystrix-core)
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-serialization</artifactId>
<version>1.5.18</version>
</dependency>
hystrix-serialization这个就是用于hystrix-metrics-event-stream做序列化的
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
前面有提到Hystrix提供监控指标的,而且有提供获取这些指标的hystrix-metrics-event-stream以及序列化hystrix-serialization,那么展示这些监控指标数据仪表盘的就是spring-cloud-starter-netflix-hystrix-dashboard了
依赖关系
spring-cloud-starter-netflix-hystrix-dashboard依赖hystrix-metrics-event-stream、hystrix-serialization、hystrix-core
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
这是微服务整合的starter,spring-cloud-starter-netflix-hystrix内部依赖hystrix-metrics-event-stream、hystrix-serialization、hystrix-core、hystrix-javanica,也就是导入了spring-cloud-starter-netflix-hystrix这个依赖后,那么我们就可以使用声明式、编程式使用Hystrix,同时也提供了获取服务监控指标的逻辑(hystrix-metrics-event-stream),但是这个微服务starter并没有将监控仪表盘整合进去,如果需要查看监控仪表盘,那么还需要而外导入spring-cloud-starter-netflix-hystrix-dashboard
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
这个依赖就是Feign整合Hystrix使用的starter,这个也是目前比较常见的用法,因为无论是单独使用hystrix-core、hystrix-javanica,声明式、编程式,或者使用pring-cloud-starter-netflix-hystrix都需要我们自己或多或少编写一些和Feign整合的代码,Hystrix部分侵入性太强,那么使用spring-cloud-starter-openfeign就可以帮我们隐藏掉Hystrix部分代码!降低业务代码侵入,让我们把精力放在业务层,无需关注Hystrix和Feign怎么整合的!
注意:spring-cloud-starter-openfeign中只包含Hystrix的hystrix-core依赖,那么单独导入spring-cloud-starter-openfeign依赖是不支持声明式Hystrix的,也不支持仪表盘功能,如果需要那么需要而外导入对应依赖!
依赖关系
spring-cloud-starter-openfeign依赖hystrix-core