【Sentinel系列】 Sentinel 整合 Nacos 实现动态流控规则

这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

Spring Cloud Sentinel 整合 Nacos 实现动态流控规则,步骤如下:

  1. 添加Nacos数据源的maven依赖·

    <dependency>
    	<groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-datasource-nacos</artifactId>
        <version>1.7.0</version>
    </dependency>
    复制代码
    1. 创建一个REST接口,用于测试
    @RestController
    @RequestMapping("/sentinel")
    public class SentinelController {
    
        @GetMapping(value = "/info")
        public String getName(){
            return " Dynamic Rule";
        }
    }
    复制代码
  2. 在application.yml文件配置添加数据源

spring:
	application:
		name: spring-cloud-sentinel
	cloud:
		sentinel:
			transport:
				dashboard: 127.0.0.1:8718
			datasource:
				nacos: 
					server-addr: 127.0.0.1:8848
					data-id: ${spring.applicaton.name}-dev
					group-id: DEFAULT_GROUP
					data-type: json
					rule-type: flow
复制代码

部分参数相关说明如下:

  • datasource:支持Nacos、Redis、Zookeeper、Apollo、file等,选择哪个类型的数据源对应配置对应的key
  • data-id:设置成${spring.application.name} ,用于区分不同应用的配置文件
  • data-type:配置项的内容格式,Spring Cloud Alibaba Sentinel 提供了JSON和XML两种内容格式,如果需要自定义内容格式,则把值设置为custom,并且converter-class指向converter类
  • rule-type:数据源找那个的规则是哪种类型,有flow、degrade、gw-flow、param-flow等。

访问http://127.0.0.1:8848/nacos 进入Nacos控制台,创建流控配置规则,具体的配置信息如下:

{
        "resource":"teaching-management",
        "count":1000,
        "grade":1,
        "limitApp":"default",
        "strategy":0,
        "controlBehavior":0
    }
复制代码

访问http://127.0.0.1:8718 进入Sentinel Dashboard,找到对应的模块菜单下的【流控规则】,可看到在Nacos上锁配置的流控规则已经被加载了

image-20211122231443736.png

在Nacos 控制台上修改对应的流控规则后,可实时同步在Sentinel Dashboard上能查看流控规则的修改。

流控规则的动态修改有两种方式:

  1. 通过Nacos 控制台修改。
  2. 在Sentinel Dashboard上修改。

在Nacos控制台上修流控规则,可同步到Sentinel Dashboard,Nacos是一个流控规则的持久化动态修改平台,如果在Sentinel Dashboard上修改对应的流控规则应该也能同步到Nacos上,才能达到双向同步流控规则。但是Sentinel Dashboard还没能实现Sentinel Dashboard 同步流控规则到Nacos功能。

猜你喜欢

转载自juejin.im/post/7033417178754121764