[Alibaba微服务技术入门]_Sentinel持久化_第18讲
Sentinel持久化问题:Sentinel Dashboard中添加的规则是存储在内存中的,只要项目一重启规则就丢失了
Sentinel工作模式
- 在 Sentinel 客户端(微服务)中用代码写的配置,在启动后,当有第一次流量进来的时候,会推送给 Sentinel-Dashboard
- 在 Sentinel-Dashboard 中的配置,会被推送到 Sentinal 客户端(微服务)
- 默认情况下,不论 Sentinel-Dashboard 中的配置还是 Sentinal 客户端中的配置,都是在内存中的,一点重启,这些变化过的规则就都消失了
Sentinel引入配置中心
此处将规则持久化到nacos中,在nacos中添加规则,然后同步到dashboard中
- Sentinel-Dashboard 需要知道,当配置发生变化的时候,要把配置推送到配置中心,持久话保存起来
- 客户端要知道,配置全在配置中心里存的呢,一旦配置发生变化,配置中心要把配置推给我
- 这样的话,不论是 Sentinel-Dashboard 还是 Sentinel 客户端重启后,都不会丢失配置
实现过程
第一步:导入依赖包
<!--springcloud ailibaba sentinel-datasource-nacos 后续做持久化用到--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
第二步:编写 application.yml,添加 sentinel 注册到 nacos 的配置
server: port: 6001 spring: application: name: sentinel-service cloud: nacos: discovery: server-addr: 127.0.0.1:8858 sentinel: transport: port: 8719 dashboard: 127.0.0.1:8080 datasource: ds1: nacos: server-addr: 127.0.0.1:8858 dataId: sentinel-service groupId: DEFAULT_GROUP data-type: json rule-type: flow management: endpoints: web: exposure: include: '*'
第三步:在 nacos 后台配置中心进行配置
[ { "resource": "/sentinel/service", "limitApp": "default", "grade": 1, "count": 1, "strategy": 0, "controlBehavior": 0, "clusterMode": false } ]
- resource:资源名称
- limitApp:来源应用
- grade:阈值类型,0表示线程数,1表示QPS
- count:单机阈值
- strategy:流控模式,0表示直接,1表示关联,2表示链路
- controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
- clusterMode:是否集群
第四步:对 FlowLimitController 接口 /sentinel/service 进行测试,发现项目进行重启,服务限流规则依然存在