resource 目录下创建 resources/META-INF/services 目录并创建文件com.alibaba.csp.sentinel.init.InitFunc ,内容为:
com.sxzhongf.sharedcenter.configuration.sentinel.datasource.FileDataSourceInit Pull 优缺点优点
简单,无任何依赖
没有额外依赖
缺点
不保证一致性(规则是使用FileRefreshableDataSource定时更新,会有延迟)
实时性不保证(规则是使用FileRefreshableDataSource定时更新)
拉取过于频繁也可能会有性能问题
由于文件存储于本地,容易丢失
参考资料:
ITMUCH
Push 模式推荐通过控制台设置规则后将规则推送到统一的规则中心,客户端实现 ReadableDataSource接口端监听规则中心实时获取变更,流程如下:
实现原理
控制台推送规则到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