java 熔断机制_利用Spring Cloud实现微服务- 熔断机制

2. 代码实现及验证

本次代码实现对RestTemplate和Feign两种微服务调用场景下,使用Hystrix验证Spring Cloud的熔断机制。

2.1 RestTemplate的微服务调用场景

在第五节负载均衡,我们使用了RestTemplate实现了服务之间的调用。我们基于这一部分的代码,增加Hystrix,实现熔断机制。

1) 启动Eureka-Server及LOADBALANCE-SERVICE,不要启动Bookingcar-Service

18d8e1574ad2976f5716933a4edc79f0.png

点击"LOADBALANCE-SERVICE"后面链接,进入负载均衡验证页面,输入请求参数/v1/lb/testport?name=bookingcar-service,我们会在页面上得到以下的错误提示:

dbe8f37437305b9c9ebd5dffa9567408.png

2)  在pom.xml里,添加对Hystrix的依赖

0848355a9db235e4d3215462b5a95109.png

3)在ribbon-service入口程序RibbonServiceApplication.java处添加注解@EnableCircuitBreaker,开启熔断器功能,如下所示:

d3dac379687fd6e4d6a1abec1bf49d79.png

4) 在LoadBalanceService.java里,使用了@Service注解声明了LoadBalanceService类。我们在LoadBalanceService类里通过@HystrixCommand注解引入对TestPort调用的熔断机制,@HystrixCommand注解里可以添加回调函数,如@HystrixCommand(callbackCommand = "XXX“),当无法调用TestPort服务时,熔断机制的回调函数就会发生作用,对错误进行快速处理。

98c533f892e6fa068c1d6e4f3ae9da80.png

5) 重新启动LOADBALANCE-SERVICE, 再次进入负载均衡验证页面,输入请求参数/v1/lb/testport?name=bookingcar-service,我们发现熔断机制已经发挥作用:

878dd21e93fe12ba6f4f86291906dbb4.png

2.2 Feign的微服务调用场景

在上一节,我们利用Feign实现了微服务间的内部调用,Feign中也内置了对Hystrix的支持。

1) 运行Report,同样不要启动BOOKINGCAR-SERVICE

b788ee18160868e888885bab2fc6a7b1.png

点击REPORTING-SERVICE后面链接,进入Feign验证页面,输入参数v1/order/1,我们可以看到如下的错误提醒页面:

26301c93e651c024c60abebacac7284f.png

2) 在application.properties里,添加feign.hystrix.enabled=true,使能Feign对hystrix的支持,如下所示:

0dac8e8c3a858270ab0ea06a744e733a.png

3)在pom.xml里,添加对Hystrix的依赖

8663c431c6c63f923c1d38404a92b1c4.png

4) 在Report的入口程序ReportsApplication里,添加注解@EnableCircuitBreaker,开启熔断器功能,如下所示:

c70df6d094202aaa5210e430d49c6637.png

5) 在OrderClient.java里Feign的注解里,添加回调函数的参数

2fbb94a6ab5793a373a5c87b04076fca.png

6) 添加一个新的类OrderClientHystrix,当调用微服务发生错误时,进行处理,本示例中,会返回“Hystrix works in Feign”的信息。

086e807182145ab7406d6c1abeffdd78.png

7)重新运行Report,点击REPORTING-SERVICE后面链接,输入请求参数v1/order/1,我们发现熔断机制已经发挥作用,显示如下:

e1ac81f98588499876c0ab30665e1097.png

3. 总结:

微服务本身是一种分布式架构,当调用链路过长时,系统的可用性是很大的挑战。Spring Cloud框架的Hystrix提供了熔断机制,在RestTemplate和Feign两种对微服务调用的场景下都可以使用,当调用链路出现问题时可以快速进行服务降级处理,为我们提高微服务架构的可用性提供了很大的帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值