gateway集成sentinel流程
2021-11-18 14:55:16 0 举报
gateway集成sentinel流程
作者其他创作
大纲/内容
this.parser = parser; this.property = new DynamicSentinelProperty<T>();
parser.convert(conf)
implements
AbstractDataSource
extends
解析配置
可读数据源接口
ReadableDataSource
GatewayApiDefinitionManager.register2Property(gwApiGroupRuleRDS.getProperty());
T newValue = loadConfig();
getProperty().updateValue(newValue);
更新内存
给DynamicSentinelProperty 绑定ApiDefinitionPropertyListener
UpdateGatewayApiDefinitionGroupCommandHandler.setWritableDataSource(gwApiGroupRuleWDS);
AutoRefreshDataSource
isModified()
将可读数据源注册至GatewayApiDefinitionManager 这样当规则文件发生变化时,就会更新规则到内存
被修改过
currentProperty.removeListener(LISTENER); property.addListener(LISTENER); currentProperty = property;
UpdateGatewayApiDefinitionGroupCommandHandler.apiDefinitionWds = apiDefinitionWds;
this.lastModified = file.lastModified(); firstLoad();
创建api分组的读数据源FileRefreshableDataSource需要api分组规则文件的路径
初始化AutoRefreshDataSource扩展自动更新功能
初始化AbstractDataSource,赋值Converter parser----->parserSentinelProperty---->DynamicSentinelProperty
不同规则配置解析对应不同的解析器,比如ApiDefinition和GatewayFlowRule对应不同的解析器,需自行分析该数据结构
startTimerService()
将可写数据源注册至 transport 模块的 WritableDataSourceRegistry 中. 这样收到控制台推送的规则时,Sentinel 会先更新到内存,然后将规则写入到文件中.
用户修改规则
FileRefreshableDataSourcereadSource()
从本地读取流控文件,gwApiGroupRule.json
开启线程监控本地文件的最后修改时间,默认周期为3s线程前缀:sentinel-datasource-auto-refresh-task
获取文件的最后修改时间,并且加载文件,如果文件不存在,则最后修改时间为0
创建api分组的写数据源 FileWritableDataSource
0 条评论
下一页