1.设计思路

在开源的sentinel-dashbaord中,添加sentinel-datasource-nacos依赖。

  1. @startuml
  2. start
  3. :sentinel-dashbaord中添加规则;
  4. :规则自行同步到nacos中;
  5. :服务中sentinel客户端监听nacos中的规则数据并保存在内存中;
  6. :服务上报规则数据到sentinel;
  7. stop
  8. @enduml

2.数据表象

业务系统

在sentinel-dashbaord中配置流控规则后,会自动在nacos创建规则数据,如下图:

3.sentinel规则持久化 - 图1

网关系统

在sentinel-dashbaord中配置流控规则后,会自动在nacos创建规则数据,如下图:

3.sentinel规则持久化 - 图2

3.网关配置

  1. #gwflow 网关流量
  2. spring.cloud.sentinel.datasource.gwflow.nacos.serverAddr=${server-addr}:8848
  3. spring.cloud.sentinel.datasource.gwflow.nacos.namespace=${nacos.namespace}
  4. spring.cloud.sentinel.datasource.gwflow.nacos.groupId=SENTINEL_GROUP
  5. spring.cloud.sentinel.datasource.gwflow.nacos.dataId=${spring.application.name}-gw-flow-rules
  6. spring.cloud.sentinel.datasource.gwflow.nacos.ruleType=gw_flow
  7. #gwapi 网关api流控
  8. spring.cloud.sentinel.datasource.gwapi.nacos.serverAddr=${server-addr}:8848
  9. spring.cloud.sentinel.datasource.gwapi.nacos.namespace=${nacos.namespace}
  10. spring.cloud.sentinel.datasource.gwapi.nacos.groupId=SENTINEL_GROUP
  11. spring.cloud.sentinel.datasource.gwapi.nacos.dataId=${spring.application.name}-gw-api-group-rules
  12. spring.cloud.sentinel.datasource.gwapi.nacos.ruleType=gw_api_group

此配置会统一在sentinel-common.properties中配置。

如果需要定制化,可在服务的nacos配置中覆盖。

4.服务配置

  1. #flow 流控规则
  2. spring.cloud.sentinel.enabled=true
  3. spring.cloud.sentinel.datasource.flow.nacos.serverAddr=${server-addr}:8848
  4. spring.cloud.sentinel.datasource.flow.nacos.namespace=${nacos.namespace}
  5. spring.cloud.sentinel.datasource.flow.nacos.groupId=SENTINEL_GROUP
  6. spring.cloud.sentinel.datasource.flow.nacos.dataId=${spring.application.name}-flow-rules
  7. spring.cloud.sentinel.datasource.flow.nacos.ruleType=flow
  8. #degrade 降级规则
  9. spring.cloud.sentinel.datasource.degrade.nacos.serverAddr=${server-addr}:8848
  10. spring.cloud.sentinel.datasource.degrade.nacos.namespace=${nacos.namespace}
  11. spring.cloud.sentinel.datasource.degrade.nacos.groupId=SENTINEL_GROUP
  12. spring.cloud.sentinel.datasource.degrade.nacos.dataId=${spring.application.name}-degrade-rules
  13. spring.cloud.sentinel.datasource.degrade.nacos.ruleType=degrade
  14. #system 系统规则
  15. spring.cloud.sentinel.datasource.system.nacos.serverAddr=${server-addr}:8848
  16. spring.cloud.sentinel.datasource.system.nacos.namespace=${nacos.namespace}
  17. spring.cloud.sentinel.datasource.system.nacos.groupId=SENTINEL_GROUP
  18. spring.cloud.sentinel.datasource.system.nacos.dataId=${spring.application.name}-system-rules
  19. spring.cloud.sentinel.datasource.system.nacos.ruleType=system
  20. #authority 授权规则
  21. spring.cloud.sentinel.datasource.authority.nacos.serverAddr=${server-addr}:8848
  22. spring.cloud.sentinel.datasource.authority.nacos.namespace=${nacos.namespace}
  23. spring.cloud.sentinel.datasource.authority.nacos.groupId=SENTINEL_GROUP
  24. spring.cloud.sentinel.datasource.authority.nacos.dataId=${spring.application.name}-authority-rules
  25. spring.cloud.sentinel.datasource.authority.nacos.ruleType=authority
  26. #param 热点规则
  27. spring.cloud.sentinel.datasource.param.nacos.serverAddr=${server-addr}:8848
  28. spring.cloud.sentinel.datasource.param.nacos.namespace=${nacos.namespace}
  29. spring.cloud.sentinel.datasource.param.nacos.groupId=SENTINEL_GROUP
  30. spring.cloud.sentinel.datasource.param.nacos.dataId=${spring.application.name}-param-flow-rules
  31. spring.cloud.sentinel.datasource.param.nacos.ruleType=param_flow

此配置会统一在sentinel-common.properties中配置。

如果需要定制化,可在服务的nacos配置中覆盖。