sentinel-dashborard下发流控规则未生效排查解决

2024-05-11 18:20

本文主要是介绍sentinel-dashborard下发流控规则未生效排查解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Sentinel简介

Sentinel是阿里巴巴开源的一个流量控制组件,它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel的核心思想是:通过动态设置的规则,对进入系统的流量进行控制,从而保证系统的稳定性和高可用性。

Sentinel的主要特性包括:

  1. 流量控制:Sentinel可以根据不同的调用来源、调用模式等,对流量进行控制,比如可以设置某个接口的QPS(每秒查询数)或者线程数阈值,当超过这个阈值时,就会进行流量控制,避免系统过载。
  2. 熔断降级:当系统负载过高或者出现异常时,Sentinel会自动触发熔断机制,快速失败,避免雪崩效应。同时,Sentinel还支持降级策略,可以根据实际情况对某些非核心服务进行降级处理,保证核心服务的稳定性。
  3. 系统负载保护:Sentinel会实时收集系统的负载情况,当系统负载达到一定的阈值时,会自动进行保护,拒绝多余的请求,防止系统崩溃。
  4. 实时监控和控制台:Sentinel提供了实时的监控和控制台,可以实时查看系统的流量、熔断情况、系统负载等信息,并可以动态修改规则,方便运维人员进行监控和控制。
  5. 丰富的适配方式:Sentinel支持多种主流的框架和协议,比如Dubbo、Spring Cloud、gRPC等,可以很方便地集成到现有的系统中。
  6. 动态规则配置:Sentinel的规则可以通过多种方式进行配置,比如文件、数据库、配置中心等,可以方便地实现规则的动态更新。

Dashboard 工作原理

简单画了个图来帮助理解工作原理,图示如下:

简单来说就是,客户端上报资源接口,然后在dashboard上可以动态设置流控规则,同时客户端监听配置中心,可以捕获自己限流规则的变化情况,然后更新到本地内存中实时生效。

调试方法

如果发现在dashboard下发的规则未生效,那么我们可以在客户端应用依赖的 AbstractDataSource 类的 loadConfig 方法的 return 处打上断点,然后在dashboard上更改某一条规则,这个地方就能监听到变化

如果序列化没问题,在断点处能看到解析后到FlowRule对象的值和配置中心里面的值是一致的:

如果解析后规则的 resource=null,但conf这个字段里面有值,基本就可以百分百锁定是客户端fastjson版本过低导致。

修复方法

升级客户端fastjson版本,在我用的1.8.4的版本中,我客户端fastjson版本为1.2.83,整体工作正常,其他的版本可对应配置一下;

        <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency>

参考:sentinel 添加流控规则不显示的问题 · Issue #1354 · alibaba/Sentinel · GitHub

文中如有描述不清楚的地方,有任疑问或不清楚的地方,可关注公众号我是攻城师(woshigcs),加我 v 咨询讨论

这篇关于sentinel-dashborard下发流控规则未生效排查解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980299

相关文章

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

《解决java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList错误的问题》当你尝试将RandomAccessSubList... 目录Java.util.RandomAccessSubList cannot be cast to java.

java反序列化serialVersionUID不一致问题及解决

《java反序列化serialVersionUID不一致问题及解决》文章主要讨论了在Java中序列化和反序列化过程中遇到的问题,特别是当实体类的`serialVersionUID`发生变化或未设置时,... 目录前言一、序列化、反序列化二、解决方法总结前言serialVersionUID变化后,反序列化失