[Spring-Cloud-Alibaba] Sentinel 规则持久化 (2)

resource 目录下创建 resources/META-INF/services 目录并创建文件com.alibaba.csp.sentinel.init.InitFunc ,内容为:

com.sxzhongf.sharedcenter.configuration.sentinel.datasource.FileDataSourceInit

Pull 优缺点

优点

简单,无任何依赖

没有额外依赖

缺点

不保证一致性(规则是使用FileRefreshableDataSource定时更新,会有延迟)

实时性不保证(规则是使用FileRefreshableDataSource定时更新)

拉取过于频繁也可能会有性能问题

由于文件存储于本地,容易丢失

参考资料:

ITMUCH

Push 模式

推荐通过控制台设置规则后将规则推送到统一的规则中心,客户端实现 ReadableDataSource接口端监听规则中心实时获取变更,流程如下:

[Spring-Cloud-Alibaba] Sentinel 规则持久化

实现原理

控制台推送规则到Nacos/远程配置中心

Sentinel client 舰艇Nacos配置变化,更新本地缓存

shared_center service 加工

添加依赖

<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>

添加配置

spring: cloud: sentinel: datasource: sxzhongf_flow: nacos: server-addr: localhost:8848 dataId: ${spring.application.name}-flow-rules groupId: SENTINEL_GROUP # 规则类型,取值见:org.springframework.cloud.alibaba.sentinel.datasource.RuleType rule_type: flow sxzhongf_degrade: nacos: server-addr: localhost:8848 dataId: ${spring.application.name}-degrade-rules groupId: SENTINEL_GROUP rule-type: degrade

Sentinel dashboard 加工

Dashboard 规则改造主要通过2个接口:

com.alibaba.csp.sentinel.dashboard.rule.DynamicRuleProvider & com.alibaba.csp.sentinel.dashboard.rule.DynamicRulePublisher

Download Sentinel Source Code

修改原sentinel-dashboard项目下的POM文件

<!-- for Nacos rule publisher sample --> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <!--注释掉原文件中的scope,让其不仅在test的时候生效--> <!--<scope>test</scope>--> </dependency>

偷懒模式:复制sentinel-dashboard项目下test下的nacos包(

src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos到 src/main/java/com/alibaba/csp/sentinel/dashboard/rule下

修改controller中的默认provider & publisher

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxxyf.html