• Sentinel 规则持久化操作


    1-10、规则持久化

    在上面演示的sentinel规则,每次服务重启,之前配置的规则就会丢失,这样之前好不容易辛苦配置的规则就全部丢失,在生成环境显然是不行的,因此就需要对规则进行持久化操作。

    Sentinel规则的推送有下面三种模式:

    推送模式说明优点缺点
    原始模式API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource)简单,无任何依赖不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境
    Pull 模式扩展写数据源(WritableDataSource), 客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件 等简单,无任何依赖;规则持久化不保证一致性;实时性不保证,拉取过于频繁也可能会有性能问题。
    Push 模式扩展读数据源(ReadableDataSource),规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。生产环境下一般采用 push 模式的数据源。规则持久化;一致性;快速引入第三方依赖

    1-10-1、原始模式

    如果不做任何修改,Dashboard 的推送规则方式是通过 API 将规则推送至客户端并直接更新到内存中:

    这种做法的好处是简单,无依赖;坏处是应用重启规则就会消失,仅用于简单测试,不能用于生产环境。

    1-10-2、拉模式

    pull 模式的数据源(如本地文件、RDBMS 等)一般是可写入的。使用时需要在客户端注册数据源:将对应的读数据源注册至对应的 RuleManager,将写数据源注册至 transport 的 WritableDataSourceRegistry 中。

    1-10-3、推模式

    生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本地。因此推送规则正确做法应该是** 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel**,而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了:

    1-10-3-1、基于Nacos实现push模式

    1-10-3-1-1、引入依赖

    
    
        com.alibaba.csp
        sentinel-datasource-nacos
    
    复制代码

    1-10-3-1-2、在nacos中配置规则

    在nacos中配置sentinel的规则, 配置模式最好选择JSON ,这样在yml配置文件中就可以少配置一个参数值,配置内容如红框中的内容就是流控的规则信息。

    相关规则参数信息,如果不知道含义可以去github中查看: github.com/alibaba/Sen…

    流控规则参数:

    熔断降级规则参数:

    系统规则:

    热点参数规则:

    1-10-3-1-3、配置yml加载nacos流控规则

    当前配置使用ruleType指定了规则类型为flow(流控规则),因此nacos中dataID为sentinel-rule中就配置流控规则,如果配置其他规则,则需要再进行配置

    配置流控和降级规则

    1-10-3-1-3-1、yml属性的查看

    按住ctrl+鼠标左键,进入这个方法

    再次进入 DataSourcePropertiesConfiguration 类

    可以看到有不同的配置类型,file/nacos/zk/apollo/redis/consul。

    进入nacos配置类,就可以看到相关的配置属性

    再次进入其父类

    父类的配置属性,其中dataType就是在nacos中设置的配置格式

    RoleType就是规则的类型:

    FLOW:流控

    DEGRADE:降级

    PARAM_FLOW:热点参数流控

    SYSTEM:系统规则

    AUTHORITY:权限规则

    GW_FLOW:网关流量控制

    GW_API_GROUP:API控制

    1-10-3-1-4、重启服务访问sentinel控制台

    启动控制台之后,随便访问一下接口,然后刷新控制台就可以看到配置的流控规则了

    1-10-3-1-5、测试规则

    流控规则设置的QPS阈值为2,频繁刷新的情况下,可以触发规则

    1-10-3-1-6、规则更新

    在sentinel里面对规则进行编辑修改,目前的操作是无法将新配置更新到Nacos中的,因此如果需要修改规则,就需要去Nacos中进行修改。 实际上在sentinel中修改规则也是可以同步到nacos中的,涉及到了一些源码的了解,后面文章再进行介绍。

  • 相关阅读:
    【qt】纯代码界面设计
    Redis基础类型ZSet增删改查(带Java库源码)
    Spring最佳实践: 构建高效可维护的Java应用程序
    红日靶机vulnstack第二关
    从零开始Blazor Server(6)--基于策略的权限验证
    xss.haozi.me靶机 通关
    会议邀请 | 思腾合力邀您共赴CNCC 2023中国计算机大会
    some(),every()
    web基础与HTTP协议
    Linux--CE--ansible安装以及配置主控服务器和被控服务器
  • 原文地址:https://blog.csdn.net/Q54665642ljf/article/details/126087297