Sofa之配置RpcConfigs

2021-12-14 17:48:47 浏览数 (5)

加载配置

如下图1所示,init静态方法,首先加载sofa-rpc自带的json配置文件,将结果转换为map放到全局配置CFG中,之后加载sofa-rpc/rpc-config.json文件的内容,之后加载META-INF/sofa-rpc/rpc-config.json配置文件,最后加载System.getProperties()。

所以如果我们想重写默认的配置,可以自定义json文件,另外可以设置System.setProperties来覆盖。

图1

来看下loadCustom内容,获取所有对应的json文件,之后逐行读取文件的内容,转换为Map,之后再封装为CfgFile,这就完了?不,CfgFile先放到Collection之后,之后再通过rpc_cfg_order进行排序,排完序逐个放入CFG中

图2

设计点:

  1. 通过rpc.config.order进行CfgFile的排序,为什么这么设计,因为CFG是个map,存在value被覆盖的情况,所以通过rpc.config.order来灵活控制.
  2. 如图3的OrderedComparator,并没有写死按order从大到小还是小到大的顺序来排序,而是可控的

图3

Listener

全局配置的变更会触发Listener调用,如图4/图5所示,修改全局配置会触发Listener

这是个拓展点,Spring就是通过event/listener来做很多事情的

图4

图5

0 人点赞