深入淘宝Diamond之客户端架构解析(二)

6.1 checkLocalConfigInfo代码分析

深入淘宝Diamond之客户端架构解析(二)_第1张图片

说明:

1、循环本地缓存数据,比较数据是否更新变化,重点看getLocalConfigureInfomation方法。

2、如果有更新数据则调用popConfigInfo方法通知客户端listener。

再深入看getLocalConfigureInfomation方法,代码如下:

深入淘宝Diamond之客户端架构解析(二)_第2张图片

说明:

这段代码很关键,判断当前缓存的数据是否持久化的文件数据是否一致,包括版本号,文件路径等信息,如果服务器端有配置数据更新,客户端则拿到最新的数据后更新本地文件内容。

popConfigInfo方法的代码如下:

深入淘宝Diamond之客户端架构解析(二)_第3张图片
深入淘宝Diamond之客户端架构解析(二)_第4张图片

说明:

这段代码主要是将已经更新的数据通知给客户端织入的listener程序,使能够达到最新数据通知给客户端。

6.2 checkDiamondServerConfigInfo代码分析

深入淘宝Diamond之客户端架构解析(二)_第5张图片
深入淘宝Diamond之客户端架构解析(二)_第6张图片

说明:

1、通过HttpClient方式从服务端获取更新过的dataId和groupId集合。

2、根据dataId和groupId再从服务端将相应变化的数据获取下来。

3、通知客户端注册的listener程序。

上面二种方式通知客户端的listener程序,都是通过allListeners这个属性获取的

这行代码就是在最开始的那个客户端使用的例子中注册在allListeners中的。

七、Diamond客户端与服务端交互时序图

深入淘宝Diamond之客户端架构解析(二)_第7张图片

图片 1.png

来源:>小程故事多

原文:http://www.jianshu.com/p/12f3b2d08478?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weixin&from=singlemessage&isappinstalled=0#

你可能感兴趣的:(深入淘宝Diamond之客户端架构解析(二))