feign远程调用服务降级处理

发布时间 2023-06-30 19:36:00作者: 佛系粥米

当进行某一服务无法承受处理请求时,进行服务降级:

  服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃

  服务降级虽然会导致请求失败,但是不会导致阻塞。

 

服务降级是一种应对系统故障或高负载情况下的一种应对策略,它主要依靠提供一组备选的响应或功能,以保证整体系统的可靠性和稳定性。当主要服务不可用或性能降低时,服务降级可以使系统继续正常工作,提供基本的功能并确保用户体验不受太大影响。

下面是一些常见的服务降级技术和策略:

1. 返回默认值:对于某些无法正常执行的服务调用,可以返回一个预定义的默认值。这可以确保应用程序在主要服务不可用时仍能够继续运行。

2. 异常处理:当主要服务发生故障或响应超时时,可以捕获异常并返回一个预定义的错误响应,而不是抛出异常并导致应用程序崩溃。

3. 限流:当服务负载过重时,可以通过限制请求的速率或并发数来保护服务的可靠性。这可以防止资源被过度耗尽,并确保系统的稳定性。

4. 缓存:对于一些查询操作,可以通过数据缓存来减少对主要服务的依赖。如果主要服务不可用,应用程序可以从缓存中获取数据,以提供基本的功能。

5. 静态页面:在主要服务不可用时,可以提供静态页面或简化的功能页面,以保持用户体验。

实施服务降级时,需要根据具体的系统和业务需求选择合适的策略。服务降级应该是一种临时的解决方案,目的是保证系统的可用性和可靠性,同时应该注重对服务故障的监控和修复,以尽快恢复正常的服务状态。

总结来说,服务降级是一种应对系统故障和高负载的策略,通过提供备选的响应或功能来确保系统的可靠性和稳定性。在实施服务降级策略时,需要根据具体的场景和需求选择合适的降级技术,以提供基本的功能并保持用户体验。

 

feign远程调用服务降级处理

1、在heima-leadnews-feign-api编写降级逻辑

package com.heima.apis.article.fallback;

import com.heima.apis.article.IArticleClient;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import org.springframework.stereotype.Component;

@Component
public class IArticleClientFallback implements IArticleClient {

    @Override
    public ResponseResult saveArticle(ArticleDto dto) {
        return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR, "获取数据失败");
    }
}

2、远程接口中指向降级代码

package com.heima.apis.article;

import com.heima.apis.article.fallback.IArticleClientFallback;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.common.dtos.ResponseResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(value = "leadnews-article", fallback = IArticleClientFallback.class)
public interface IArticleClient {

    @PostMapping("/api/v1/article/save")
    public ResponseResult saveArticle(@RequestBody ArticleDto dto);
}

3、客户端开启降级heima-leadnews-wemedia

feign:
  # 开启feign对hystrix熔断降级的支持
  hystrix:
    enabled: true