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 咨询讨论

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值