Earyant 的技术博客

欢迎来到 Earyant 的技术博客,在这里我将与你分享新技术。

SpringCloud 学习 4 断路器(Hystrix)

在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单个服务又必须集群部署。由于网络原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累计,导致服务瘫痪,甚至导致服务 “雪崩”。
为了解决这个问题,就出现断路器模型。

断路器简介

  • Netflix 已经创建了一个名为 Hystrix 的库来实现断路器模式。 在微服务架构中,多层服务调用是非常常见的。
  • 较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用达到一个阀值(hystric 是 5 秒 20 次) 断路器将会被打开。
  • 断路打开后,可用避免连锁故障,fallback 方法可以直接返回一个固定值。

在 ribbon 使用断路器

  • 改造 serice-ribbon 工程的代码:

    在 pox.xml 文件中加入:

    org.springframework.cloud spring-cloud-starter-hystrix
  • 在程序的入口类加 @EnableHystrix:

  • 改造 HelloService 类,加上 @HystrixCommand,并指定 fallbackMethod 方法。

Feign 中使用断路器

  • 如果你使用了 feign,feign 是自带断路器的,并且是已经打开了。如果使用 feign 不想用断路器的话,可以在配置文件中关闭它,配置如下:

    feign.hystrix.enabled=false

Circuit Breaker: Hystrix Dashboard (断路器:hystrix 仪表盘)

  • 基于 service-ribbon 改造下:

    pom.xml 加入:

    org.springframework.boot spring-boot-starter-actuator
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
        </dependency>        
    

在主程序入口中加入 @EnableHystrixDashboard 注解,开启 hystrixDashboard:

  该仪表盘可以查看错误率

欢迎关注我的其它发布渠道

Related Issues not found

Please contact @earyantLe to initialize the comment