首页 > 其他分享 >openFeign+sentinel 对远程调用熔断降级

openFeign+sentinel 对远程调用熔断降级

时间:2023-12-12 12:55:20浏览次数:32  
标签:降级 调用 service openFeign 熔断 sentinel public

openFeign+sentinel 对远程调用熔断降级

需求:
在member-service-nacos-consumer-80 调用某个无效服务时,启动Sentinel的熔断降级机制, 能够快速返回响应,而不是使用默认的超时机制(因为超时机制容易线程堆积, 从而导致雪崩)

异常场景

1. 两个服务都挂掉


由于 Customer 它要定时从 Nacos 把服务拿过来【它担心服务是有变化的,时间大概是 30s 左右】

2. 两个服务都正常,将 10004 执行时间设置成 2s,10006 正常执行

代码 + 配置解决问题

本质:对 Service 中方法的异常处理

1. 写一个类,实现这个接口【使用 @Component注解注入容器】

package com.llq.springcloud.service;

@Component
public class MemberFeignFallbackService implements MemberOpenFeignService {
    @Override
    public Result<Member> getMemberById(Long id) {
        return Result.error("500", "被调用服务异常 ===> 熔断降级,快速返回结果,防止线程堆积");
    }
}

2. 在接口中,增加fallback 注解,调用实现接口的类来处理异常

@FeignClient(value = "member-service-nacos-provider", fallback = MemberFeignFallbackService.class)   //  value:服务名称
public interface MemberOpenFeignService {
    @GetMapping(value = "/member/get/{id}")
    public Result<Member> getMemberById(@PathVariable("id") Long id);
}

异常处理逻辑如下:

3.application.yml 中进行 openFeign 和 sentinel 整合

  server:
    port: 81
  spring:
    application:
     name: member-service-nacos-consumer-81
    cloud:
      nacos:
        discovery:
          server-addr: localhost:8848
      # 配置 sentinel
      sentinel:
        transport:
          dashboard: localhost:9999
          port: 8888
  # 配置暴露所有监控点
  management:
    endpoints:
      web:
        exposure:
          include: '*'
  # openfeign 和 sentinel 整合,必须配置
  feign:
    sentinel:
      enabled: true

测试:

标签:降级,调用,service,openFeign,熔断,sentinel,public
From: https://www.cnblogs.com/aclq/p/17896536.html

相关文章

  • 服务消费者整合 Sentinel ===> 这样 Sentinel才能对服务消费者进行监控和保护
    服务消费者整合Sentinel【这样Sentinel才能对服务消费者进行监控和保护】需求:在member-service-nacos-consumer-81整合Sentinel,能被Sentinel监控和保护Sentinel相关配置1.xml<!--引入alibaba-sentinelstarter场景启动器,使用版本仲裁--><dependency><groupId>......
  • 服务消费者整合 OpenFeign ===> 启动类中要添加 @EnableFeignClients 注解
    服务消费者整合OpenFeign===>启动类中要添加@EnableFeignClients注解packagecom.llq.springcloud;@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)@EnableDiscoveryClient//启用服务发现@EnableFeignClientspublicclassMemberNacosConsume......
  • Sentinel——系统规则(系统自适应保护)
    目录系统自适应保护系统规则系统自适应保护Sentinel系统自适应保护从整体维度对应用入口流量进行控制,结合应用的Load、总体平均RT、入口QPS和线程数等几个维度的监控指标,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。......
  • Sentinel——热点规则
    目录热点规则配置热点规则API配置热点规则热点规则热点规则是用于实现热点参数限流的规则。热点参数限流指的是,在流控规则中指定对某方法参数的QPS限流后,当所有对该资源的请求URL中携带有该指定参数的请求QPS达到了阙值,则发生限流。配置热点规则controllerpackagecom.......
  • Sentinel——授权规则
    授权规则授权规则是一种通过对请求来源进行甄别的鉴权规则。规则规定了哪些请求可以通过访问,而哪些请求则是被拒绝访问的。而这些请求的设置是通过黑白名单来完成的。无论是黑名单还是白名单,其实就是一个请求来源名称列表。出现在来源黑名单中的请求将被拒绝访问,而其它来源的请......
  • Sentinel——流控规则
    流控规则流控规则是用于完成服务流控的。服务流控即对访问流量的控制,也称为服务限流。Sentine实现流控的原理是监控应用流量的QPS或并发线程数等指标,当达到指定的值时对再到来的请求进行进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。设置流控规则代码设置......
  • Sentinel——服务降级
    目录简介Sentinel方法级降级Sentinel类级降级OpenFeign类级降级简介服务降级是一种增强用户体验的方式。当用户的请求由于各种原因被拒后,系统返回-一个事先设定好的、用户可以接受的,但又令用户并不满意的结果。这种请求处理方式称为服务降级。Sentinel方法级降级导入依赖......
  • Sentinel——控制台使用
    简介官网:https://sentinelguard.io/随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发......
  • Sentinel 微服务保护
    Sentinel微服务保护​#Sentinel#​本文章为个人摘抄笔记,原文章来源于www.cnblogs.com/xiegongz...‍Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html雪崩问题与解决方式所谓的雪崩指的是:微服务之间相互调用,调用链......
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel
    前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成SentinelSpringMvc集成Sentinel一、Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel......