基于Nacos的Sentinel配置信息实时双向刷新设计
2023-07-26 14:45:20 0 举报
1、Nacos数据源类图结构及功能说明 2、dashboard请求配置更新原理 3、启动流程原理及改造 注:绿色部分为新增功能
作者其他创作
大纲/内容
从 DSP 中移除 FPL
MachineInfo: app/ip/port
从 NDSE 获取 NDSP,注册到 FRM
FlowRuleManagerloadRules
sentinel-core
sentinel-dashboard
Return
Config Routes: Nacos -> Service -> Sentinel-dashboard
启动
SentinelPropertyupdateValue
NacosDynamicSentinelProperty<T>
- syncer:PropertiesSyncer<T>
+ updateValue(T):boolean
rulesapp/ip/port
SentinelProperty<T>
+ addListener(PropertyListener<T>):void+ removeListener(PropertyListener<T>):void+ updateValue(T):boolean
获取:1、页面发起规则获取,从而调用 getRules,内部基于 flowRules 构建一个拷贝的对象返回
/v1/flow/rule
定时线程池 SCH启动指标监听任务
初始化Nacos相关参数 NCOF:groupId、dataId、链接信息
同步器 PS1、同步器2、配置回传
使用 NDSP 替换 DSP
SentinelConfig获取刷新间隔时间
DynamicSentinelProperty<T>
# listeners:CopyOnWriteArraySet<PropertyListener<T>>- value:T
任务:1、从集群构造槽中获取资源运行统计数据(响应时间、qps、线程数、异常)2、按照指标、节点进行聚合3、调用MetricWriter持久化到磁盘
FlowRuleManager
- static{currentProperty.addListener(LISTENER)}+ register2Property(SentinelProperty<List<FlowRule>>):void+ getRules():List<FlowRule>+ loadRules(List<FlowRule>):void
初始化Nacos配置监听器 NCL,定义接受配置的行为
Implementation Diagrams From Verified Project
创建Nacos数据源 NDSE
将 FPL 添加到NDSP 的监听器中(添加时会将缓存中 Rules 先 load 一次)
app/ip/port
+ loadConfig():T+ loadConfig(S):T+ getProperty():SentinelProperty<T>
PropertiesSyncer<T>
+ sync(T):boolean
Add Flow Rule: Processing Flow
User
FlowControllerV1apiAddFlowRule1. check2. regular(date limitapp resource)3. save to mem
ModifyRulesCommandHandlerhandlefont color=\"#314aa4\
配置器 SP1、持有监听器 PL2、使用 PL 更新数据
更新:1、页面发起规则更新,从而调用 loadRules,触发 NDSP 调用 FPL 对Rules进行更新(即刷新到内存),同时 NDSP 会调用 NDSE 将数据 sync 到Nacos
流量规则管理器 FRM 静态初始化
DynamicSentinelPropertyupdateValue1. call listeners::configUpdate
PropertyListener<T>
+ configUpdate(T):void+ configLoad(T):void
监听器 PL1、监听器2、配置加载&更新
sentinel-transport
过程:1、调用 NCS 获取配置信息conf2、调用 COV 将conf转化为规则信息Rules3、调用 NDSP 将Rules更新3.1、判断Rules 是否有变化,无变化则返回3.2、调用所有的监听器 PL,对Rules进行更新(此时还没有 b style=\"font-style: italic;\
InMemoryRuleRepositoryAdapterfindAllByMachinefont color=\"#314aa4\
SentinelApiClientsetFlowRuleOfMachineAsync1. set rules asynchronously
NacosDataSourceExt<T>
省略
开启指标定时监听器 MTL
首次加载(loadConfig)来自于Nacos的配置
定制化配置器NDSP(将NDSE 注册为 PS)替换 FPL
Confirm Button
初始化配置器 DSP:添加监听器 FPL
FlowPropertyListener<List<FlowRule>>
+ configUpdate(List<FlowRule>):void+ configLoad(List<FlowRule>):void
1、创建 监听器&配置器&定时线程池、管理FlowRule2、统一暴露 加载配置、注册监听器 的行为
设置转换器 COV
根据 NCOF 和NCL 构建Nacos配置服务 NCS
收藏
0 条评论
回复 删除
下一页