美文网首页个人学习SpringCloud
SpringCloud微服务实战——搭建企业级开发框架(十七):

SpringCloud微服务实战——搭建企业级开发框架(十七):

作者: 全栈程序猿 | 来源:发表于2020-11-17 08:38 被阅读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

    本章源码在https://gitee.com/wmz1930/gitegg-cloudhttps://gitee.com/wmz1930/gitegg-platform 的chapter-17分支。

    相关文章

      网友评论

        本文标题:SpringCloud微服务实战——搭建企业级开发框架(十七):

        本文链接:https://www.haomeiwen.com/subject/ljrrsktx.html