-
Notifications
You must be signed in to change notification settings - Fork 8.1k
动态规则扩展
李豪 edited this page Jul 25, 2018
·
41 revisions
Sentinel的理念是开发者只需要关注资源的定义。当资源定义成功后,可以动态增加各种限流规则。Sentinel提供原生的API来方便您定义规则:
FlowRuleManager.loadRules(List<FlowRule> rules)
DegradeRuleManager.loadRules(List<DegradeRule> rules)
SystemRuleManager.loadRules(List<SystemRule> rules)
如果引入JAR包,也会有自带的内存态的动态配置规则样例。
建议通过扩展DataSource接口对接相应的配置数据源,来达到规则动态变更的目的。虽然目前控制台使用内存态直接设置客户端规则,但通过DataSource接口,我们可以对接任意配置数据源。当我们通过控制台设置规则后,控制台可以将规则推送到统一的规则中心,客户端监听规则中心实时获取变更。
常见的做法有:
- 客户端轮询: 即客户端自己主动向某个规则管理中心定期轮询规则。这个规则中心可以是SQL,文件,甚至是CVS等。这样做的方式是简单,缺点是无法最快的得知变更。
- 规则中心统一推送: 使用Nacos、Zookeeper等配置中心。这种方式有更好的实时性和一致性保证。
Dashboard通过客户端自带的规则API来实时查询和更改内存中的规则。
注意: 要使客户端具备规则API,需在客户端引入以下依赖:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentienl-http-simple-transport</artifactId>
<version>x.y.z</version>
</dependency>
这个示例展示Sentinel是如何从文件获取规则信息的,FileRefreshableDataSource会周期性的读取文件以获取规则,当文件有更新时会及时发现,并将规则更新到内存中。
Nacos是阿里巴巴开源的配置中心。我们基于Nacos作了适配(TODO)。
-
文档
-
Documents
- Read Me
- Introduction
- How to Use
- How it Works
- Flow Control
- Parameter Flow Control
- Cluster Flow Control
- API Gateway Flow Control
- Circuit Breaking
- Adaptive System Protection
- Metrics
- General Configuration
- Dynamic Rule Configuration
- Dashboard
- Integrations with open-source frameworks
- Contribution Guideline