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.创建回调类

@Service
public class HelloRemoteHystrix implements HelloRemote {
    @Override
    public 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

猜你喜欢

转载自blog.csdn.net/fy_java1995/article/details/94156930
今日推荐