SpringCloud微服務實戰——搭建企業級開發框架(十七):Sentinel+Nacos配置持久化


  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 的chapter-17分支。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM