首页 慕课教程 Spring Cloud Hystrix Spring Cloud Hystrix 实际业务场景下服务容错与服务降级实战

实际业务场景下服务容错与服务降级实战

1. 前言

在上一章中,我们对 Hystrix 中的所有的微服务治理特性都做了学习和了解,同时我也通过 demo 样例的形式,来对每一个特性都做了代码实现,可是这些代码并不是我们真实业务场景下的代码,只能用来学习特性所用。

为了将我们所学习和了解到的微服务治理特性应用于真实项目中,于是规划了 4 节在实际业务场景下 Hystrix 微服务治理特性的应用内容,希望可以通过这 4 节的介绍,大家可以了解到如何在实际项目中去应用这些特性。

在本节中,我将为大家介绍真实业务场景下,服务容错与降级的应用方法,及代码实现。

本节主要内容:

  • 服务容错与降级真实业务场景描述;

  • 业务场景实现思路分析与实操。

2. 服务容错与降级真实业务场景描述

业务场景描述

有这样一个真实的业务场景:在某大厂的用户业务模块下,存在一个用户注册服务接口,在正常流量下,请求该用户注册服务接口,不会出现任何问题,业务可以正常开展。但是,在遇到某活动举办时,当再次请求该用户注册服务接口时,该服务接口就会报服务处理异常,我们需要做的就是用服务容错与降级的概念来解决这种异常现象。

问题原因分析

在解决问题之前,我们首先来分析一下这种问题产生的原因。

在遇到某活动举办时,当再次请求该用户注册服务接口时,由于此时的请求流量较正常情况下的多,即此时的请求流量可能是正常情况下请求流量的几倍,甚至更多,我们的服务在处理请求时,一方面出现了服务处理堆积的现象;另一方面,当我们的服务器或数据库不能继续处理更多的请求时,没有给用户一个合理地提示,直接让程序报出了异常。

以上两方面就是产生该异常的原因,第一方面我们使用服务容错与降级无法解决,只能使用高并发相关的知识,通过限流来解决,但是第二方面我们可以使用服务容错与降级的概念来解决,接下来就让我们看一下如何解决吧。

3. 业务场景实现思路分析与实操

实现思路分析

鉴于上述业务场景中所描述的问题,我们可以在该用户注册服务上,通过添加 Hystrix 的服务容错与降级的注解,再结合相关配置项来实现该用户注册服务的容错与降级。

在为该用户注册服务配置了容错与降级之后,当在大流量情况下,如果我们的服务器或数据库不能继续处理更多的请求时,此时会给用户一个提示,并且拒绝处理后续的服务请求。

由于我们的本套课程不涉及 Open Feign ,所以这里为大家介绍以注解形式配置服务容错与降级。

实操

@RequestMapping("register.do")
@ResponseBody
@HystrixCommand(fallbackMethod = "register_failed")
public CommonResponse<String> register(@RequestBody User user){
    return userService.register(user);
}
    
public CommonResponse<String> register_failed(){
    return  CommonResponse.errorResponse("服务拒绝处理,请联系系统管理员");
}

代码解释

第 3 行,我们使用 HystrixCommand 注解的 fallbackMethod 属性,来为用户注册服务添加容错与降级,此时,当该服务出现上述业务场景问题时,就会返回 register_failed 方法所对应的响应,并且后续服务不会继续处理。

Tips:
1. 配置服务容错与降级时,首先需要清楚对应服务下都可能会出现哪些问题,出现这些问题的产生原因主要是什么,我们只有在清楚了这些错误产生的原因之后,我们才能合理地去编写服务容错与降级时的响应结果,这点同学们需要注意。
2. 在实际项目开发中,基本上每个承载大流量的接口服务都会配置服务容错与降级,这种配置方式可能在微服务项目中已经成为了一种习惯。

4. 小结

本节内容概览

本小节以一个真实业务场景下的服务,为大家介绍了如何在真实业务场景下配置 Hystrix 的服务容错与降级,并且做了代码实操,针对容易出现问题的地方,也做了注意事项的补充,希望同学们可以对真实业务场景,服务容错与降级的应用方法有所了解。