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

java 熔断机制_利用Spring Cloud实现微服务- 熔断机制2 代码实现及验证本次代码实现对 RestTemplate 和 Feign 两种微服务调用场景下 使用 Hystrix 验证 SpringCloud 的熔断机制

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两种对微服务调用的场景下都可以使用,当调用链路出现问题时可以快速进行服务降级处理,为我们提高微服务架构的可用性提供了很大的帮助。

今天的文章 java 熔断机制_利用Spring Cloud实现微服务- 熔断机制分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-01 14:30
下一篇 2025-01-01 14:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/98697.html