1.设计思路
在开源的sentinel-dashbaord中,添加sentinel-datasource-nacos依赖。
@startuml
start
:sentinel-dashbaord中添加规则;
:规则自行同步到nacos中;
:服务中sentinel客户端监听nacos中的规则数据并保存在内存中;
:服务上报规则数据到sentinel;
stop
@enduml
2.数据表象
业务系统
在sentinel-dashbaord中配置流控规则后,会自动在nacos创建规则数据,如下图:
网关系统
在sentinel-dashbaord中配置流控规则后,会自动在nacos创建规则数据,如下图:
3.网关配置
#gwflow 网关流量
spring.cloud.sentinel.datasource.gwflow.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.gwflow.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.gwflow.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.gwflow.nacos.dataId=${spring.application.name}-gw-flow-rules
spring.cloud.sentinel.datasource.gwflow.nacos.ruleType=gw_flow
#gwapi 网关api流控
spring.cloud.sentinel.datasource.gwapi.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.gwapi.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.gwapi.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.gwapi.nacos.dataId=${spring.application.name}-gw-api-group-rules
spring.cloud.sentinel.datasource.gwapi.nacos.ruleType=gw_api_group
此配置会统一在sentinel-common.properties中配置。
如果需要定制化,可在服务的nacos配置中覆盖。
4.服务配置
#flow 流控规则
spring.cloud.sentinel.enabled=true
spring.cloud.sentinel.datasource.flow.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.flow.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.flow.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.flow.nacos.dataId=${spring.application.name}-flow-rules
spring.cloud.sentinel.datasource.flow.nacos.ruleType=flow
#degrade 降级规则
spring.cloud.sentinel.datasource.degrade.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.degrade.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.degrade.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.degrade.nacos.dataId=${spring.application.name}-degrade-rules
spring.cloud.sentinel.datasource.degrade.nacos.ruleType=degrade
#system 系统规则
spring.cloud.sentinel.datasource.system.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.system.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.system.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.system.nacos.dataId=${spring.application.name}-system-rules
spring.cloud.sentinel.datasource.system.nacos.ruleType=system
#authority 授权规则
spring.cloud.sentinel.datasource.authority.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.authority.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.authority.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.authority.nacos.dataId=${spring.application.name}-authority-rules
spring.cloud.sentinel.datasource.authority.nacos.ruleType=authority
#param 热点规则
spring.cloud.sentinel.datasource.param.nacos.serverAddr=${server-addr}:8848
spring.cloud.sentinel.datasource.param.nacos.namespace=${nacos.namespace}
spring.cloud.sentinel.datasource.param.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.param.nacos.dataId=${spring.application.name}-param-flow-rules
spring.cloud.sentinel.datasource.param.nacos.ruleType=param_flow
此配置会统一在sentinel-common.properties中配置。
如果需要定制化,可在服务的nacos配置中覆盖。