200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Spring Cloud(三) 熔断器Hystrix

Spring Cloud(三) 熔断器Hystrix

时间:2024-03-28 13:20:37

相关推荐

Spring Cloud(三) 熔断器Hystrix

前文回顾:

Spring Cloud(一)Eureka Server-单体及集群搭建

Spring Cloud(二) 配置Eureka Client

一.Hystrix介绍

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。

Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止级联失败和提供回退选项来实现这一点,所有这些都可以提高系统的整体弹性。

二.Hystrix的设计原则

防止任何单个依赖项耗尽所有容器(如Tomcat)用户线程。

甩掉包袱,快速失败而不是排队。

在任何可行的地方提供回退,以保护用户不受失败的影响。

使用隔离技术(如隔离板、泳道和断路器模式)来限制任何一个依赖项的影响。

通过近实时的度量、监视和警报来优化发现时间。

通过配置的低延迟传播来优化恢复时间。

支持对Hystrix的大多数方面的动态属性更改,允许使用低延迟反馈循环进行实时操作修改。

避免在整个依赖客户端执行中出现故障,而不仅仅是在网络流量中。

三.代码示例

代码基于上一篇博客开发

1.配置文件

application.properties添加这一条:

feign.hystrix.enabled=true

2.创建回调类

@Servicepublic class HelloRemoteHystrix implements HelloRemote {@Overridepublic String hello(@RequestParam(value = "name") String name) {return "hello " + name + ",this message send failed";}}

3.添加fallback属性

@FeignClient(name= "spring-cloud-producer", fallback = HelloRemoteHystrix.class)public interface HelloRemote {​@RequestMapping(value = "/hello")String hello(@RequestParam(value = "name") String name);}

4.测试

依次启动spring-cloud-eureka、spring-cloud-producer、spring-cloud-consumer三个项目

浏览器中输入:http://localhost:9001/hello/yfy

返回:hello yfy,welcome to Spring Cloud

手动停止spring-cloud-producer服务

浏览器中输入:http://localhost:9001/hello/yfy

返回:hello yfy,this message send failed

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。