SpringCloud微服务实战——搭建企业级开发框架(十七):Sentinel+Nacos配置持久化
  AjzKod8N0zyC 2023年11月02日 31 0

  Sentinel Dashboard中添加的规则是存储在内存中的,我们的微服务或者Sentinel一重启规则就丢失了,现在我们将Sentinel规则持久化配置到Nacos中,在Nacos中添加规则,然后同步到Sentinel Dashboard服务中。Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。具体可查看官网 Sentinel 规则 我们以流控规则为例进行配置,其他规则可自行配置测试。 流量规则的定义 重要属性:

Field 说明 默认值
resource 资源名,即规则的作用对象
count 限流阈值
grade 限流阈值类型,QPS 模式(1)或并发线程数模式(0) QPS 模式
limitApp 流控针对的调用来源 default,代表不区分调用来源
strategy 调用关系限流策略:直接、链路、关联 根据资源本身(直接)
controlBehavior 流控效果(直接拒绝/WarmUp/匀速+排队等待),不支持按调用关系限流 直接拒绝
clusterMode 是否集群限流

1、gitegg-platform-cloud的pom.xml中引入sentinel-datasource-nacos依赖

        <!-- Sentinel 使用Nacos配置 -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>

2、gitegg-platform-cloud的配置文件application.yml中添加数据源配置Nacos的路径(这里面的配置,在实际应用过程中是配置在GitEgg-Cloud的Nacos配置中,会自动覆盖这些配置)

spring:
  cloud:
    sentinel:
      filter:
        enabled: true
      transport:
        port: 8719
        dashboard: 127.0.0.1:8086
      eager: true
      datasource:
        ds2:
          nacos:
            data-type: json # 默认提供两种内置的值,分别是 json 和 xml (不填默认是json)
            server-addr: 127.0.0.1:8848
            dataId: ${spring.application.name}-sentinel
            groupId: DEFAULT_GROUP
            rule-type: flow #rule-type 配置表示该数据源中的规则属于哪种类型的规则(flow流控,degrade熔断降级,authority,system系统保护, param-flow热点参数限流, gw-flow, gw-api-group)
#Ribbon配置
ribbon:
  #请求连接的超时时间
  ConnectTimeout: 5000
  #请求处理/响应的超时时间
  ReadTimeout: 5000
  #对所有操作请求都进行重试
  OkToRetryOnAllOperations: true
  #切换实例的重试次数
  MaxAutoRetriesNextServer: 1
  #当前实例的重试次数
  MaxAutoRetries: 1
#Sentinel端点配置
management:
  endpoints:
    web:
      exposure:
        include: '*'

3、打开Nacos控制台,新增gitegg-service-system-sentinel配置项

[
    {
        "resource": "/system/sentinel/protected",
        "count": 5,
        "grade": 1,
        "limitApp": "default",
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

image.png

4、打开Sentinel控制台管理界面,点击流控规则菜单可以看到我们在Nacos中配置的限流信息,使用上一章节中使用的Jmater进行测试,可以看到限流生效。

image.png   Sentinel和Nacos都是阿里巴巴开源的项目,其中Sentinel是一个面向分布式系统的流量控制组件,Nacos是一个动态服务发现、配置管理和服务管理平台。

  在分布式系统中,配置信息的管理和持久化十分重要,因为配置信息可能会被多个节点和服务使用。如果配置信息丢失或出现错误,将会对整个系统造成不可预料的影响。

  因此,Sentinel和Nacos都提供了配置持久化的功能,可以将配置信息存储在持久化存储介质中,确保配置信息的稳定性和可靠性。如果系统重启或者配置信息发生变化,可以从持久化存储介质中重新加载配置信息,保证系统正常运行。

  同时,这种配置持久化的方式也使得配置信息的管理更加方便和灵活。管理员可以通过修改配置文件或者配置中心来轻松修改各个节点和服务的配置信息,而不需要手动修改每个节点和服务的配置信息。

  因此,Sentinel和Nacos的配置持久化功能对于分布式系统的稳定性和灵活性都具有非常重要的意义。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  q8Sb04zdRWzX   2023年11月28日   33   0   0 限流IPJava限流JavaIP
AjzKod8N0zyC