Hystrix结合Ribbon实现熔断和降级

当我们进行服务调用的时候使用的是RestTemplate方式,那么在服务调用的时候进行服务熔断就需要结合Ribbon来使用,并且当服务出现故障的时候服务调用者也需要知道并做出相应的处理,比如进行服务降级。

下面我们就结合Ribbon来实现服务的熔断和降级处理。

 

开发步骤如下:

① 我们使用IDEA创建一个名为“hystrix-ribbon”的Spring Boot项目来进行开发和测试。

需要将其注册到Eureka注册中心,所以跟之前的项目相似,需要配置Eureka Client和Web,并且需要加入Ribbon和Hystrix依赖。

Ribbon无须添加额外的依赖,所以我们只需添加Hystrix的依赖即可。

 

pom.xml文件如程序清单13-1所示。application.yml文件如程序清单13-2所示。

 

 

② 在启动类上添加@EnableCircuitBreaker 注解开启Hystrix功能,并创建RestTemplate。

为了简便,Spring Cloud提供了一个继承@EnableCircuitBreaker注解的@EnableHystrix注解,所以我们直接在启动类上添加@EnableHystrix即可,如程序清单13-3所示

 

 

当然我们也可以直接使用注解@SpringCloudApplication来代替程序清单13-3中的所有注解,如程序清单13-4所示。其中@EnableDiscoveryClient注解相当于@EnableEurekaClient注解。

 

 

 

③ 创建controller包,并在该包中创建HystrixController类,在该类中定义调用商品服务的接口,如程序清单13-5所示。

创建service包,并在该包中创建GoodsService接口,在该接口中定义查找商品的方法,然后创建impl包,并在该包中创建GoodsServiceImpl服务实现类,如程序清单13-6和程序清单13-7所示。

 

 

 

 

 

 

 

④ 进行测试。启动Eureka注册中心,启动一个商品服务,然后启动hystrix服务,正常情况下访问接口可以返回想要我们的结果,如图所示。

 

fallbackMethod= goodsfallback

 

 

接下来我们模拟商品服务出现故障。

我们把商品服务关掉,再来访问商品服务,会发现很快就返回了“商品服务出现故障,请稍后再试”,如图13-3所示。

证明实现了熔断并进行了服务降级处理。

 

posted @ 2022-12-14 15:27  cnetsa  阅读(234)  评论(0编辑  收藏  举报