
Hystrix功能:服务降级、服务熔断、线程隔离、请求缓存、请求合并、服务监控等
创建一个hystrix-service模块
经过前面一系列扎心操作,这次创建的时候没有用Spring Initializer加依赖,直接改的pom.xml并修改版本
@EnableCircuitBreaker开启断路器功能
pom中还要加一个依赖
1 | <dependency> |
这个模块也添加了Ribbon的负载均衡功能
但是pom中并没有配置这个依赖
看了下依赖图发现是eureka-client依赖的

服务降级
在UserHystrixController中添加用于测试服务降级的接口
在UserService中添加调用方法与服务降级方法,并添加@HystrixCommand注解
启动eureka-server、user-service、hystrix-service服务

关闭user-service服务重新测试该接口

后面测试忽略某些异常降级、缓存、请求合并表现均和教程一样

DEBUG:调用服务失败
启动后注册中心

调用测试方法后

直接失败了?
试试原服务地址

没问题
这个bug似曾相识
上次在ribbon-service中添加了依赖
1 | <dependency> |
hystrix-service中也加一个试试
注册中心多了警告

运行*2
还是失败了
看下Maven

加个版本
ribbon模块用的是2.3.0
运行*3
还是挂了
拿源码的这三个模块试试

是可以的
对比版本

全部改成一样的
发现源码pom中还多了一个
1 | <dependency> |
以及
1 | <dependencyManagement> |
难怪前面springframework-cloud的模块总是没有版本号,原来是没加这个
(解决了前面笔记02中一个MARK)
运行*4
还🥶是🥶挂🥶了
再来一个个比代码
没差啊?
难道是其它模块的依赖也要改?改吧
发现前面大部分都是有dependencyManagement的,所以其实也没什么变动
运行*5
挂
刚才把spring-boot-starter-actuator删了,重新加上
运行*6
!成功了
可是这个时候其它版本都和源码一样了,但是源码没有用这个啊?-MARK-
问题总结
版本 版本 版本
注册中心有,但找不到服务,试试加上
1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
总结
