开发者学堂课程【精通 Spring Cloud Alibaba:SentineI 整合 nacos 实现数据的持久化】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10146
SentineI 整合 nacos 实现数据的持久化
内容介绍:
一、操作原理
二、操作步骤
一、操作原理
推荐使用 Nacos 和阿波罗,不用重启服务器。
1、首先 SentineI 读取数据源规则配置,将流控规则放入 Nacos 中,Sentinel 客户端启动时,SentineI 订单服务读取nacos 在加载到程序里面去
2、Sentinel 控制台读取订单服务展示流控规则信息,订单服务项目启动的时候后读取 nacos 配置规则到内存中
问题:为什么一旦订单服务重启,Sentinel 控制台不可以展示订单服务流控规则呢?
回答:因为流控规则都存储在内存里,重启之后就会消失,则不能展示
二、操作步骤
@Override
Public Void run(ApplicationArguments args) throws Exception {
List<Flow Rule> rules = new ArrayList<~>( );
FlowRule rule1 = new FlowRule( );
rule1.setResource(GETORDER_KEY):
// QPS 控制在1
rule1.setCount(1);
//QPS 限流
rule1.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule1.setLimitApp("default");
rules.add(ruel1);
FlowRuleManager.LoadRules(rules);
Log.info(">>>限流配置加载成功<<<");
}
整合框架以后,一旦订单服务启动就会读取 Nacos 配置规则到内存中
(一)创建流控规则
登录“127.0.0.1:8848/nacos”,创建流控规则,写 JSON 数据类型
1、Data ID 为:meitemayikt- order-sentinel
2、Group 选择:DEFAULT_GROUP
3、配置内容为:
"resource": "/ get0rderSentinel " ,
"limitApp": "default" ,
"grade": 1,
"count":5,
"strategy": 0,
controlBehavior": 0,"
"clusterMode" :false
名词解释:
resource:资源名,即限流规则的作用对象
limitApp: 流控针对的调用来源,若为 default 则不区分调用来源,
grade: 限流阈值类型(QPS 或并发线程数); 0代表根据并发数量来限流,1代表根据 QPS 来进行流量控制。
count: 限流阈值.
strategy: 调用关系限流策略
点击发布
(二)引入
(三)加载配置
1、演示
nacos:
discovery:
###nacos 注册地址
server-addr: 127.0.0.1:8848
sentinel:
transport:
dashboard:127.0.0.1:8718
eager:true
datasource:
ds:
nacos:
### nacos 连接地址
server-addr:localhost:8848
### nacos 连接的分组
group-id:DEFAULT_GROUP
###路由器存储规则
rule- type:flow
###读取配置文件的 data-id
data-id:meitemayikt- order-sentinel
###读取培训文件类型为 json
data-type: json
2、问题:为什么限流配置规则放置在 nacos 中,但在 nacos 中读取不到?
解决方法:
手动将配置文件更新生效,但重启之后就不存在