零伐债、前戲
上一篇文檔,分析了soul-admin與soul-bootstrap之間的基本通信流程朗伶。 本篇文章將從收發(fā)兩端分析好渠,基礎(chǔ)數(shù)據(jù)是soul-admin如何發(fā)送昨稼,soul-bootstrap是如何接受處理的节视。
一、soul-admin發(fā)送過程分析
從初始化到發(fā)布數(shù)據(jù)的流程大致如下:
image.png
- DataSyncConfiguration類中初始化WebsocketCollector假栓、WebsocketDataChangedListener
- WebsocketCollector用于websocket服務(wù)端的監(jiān)聽與發(fā)送數(shù)據(jù)
- 在WebsocketCollector的syncAll方法寻行,用于對活的seesion同步全量數(shù)據(jù),一般發(fā)生在建立連接時(shí)的第一次同步但指。
- SyncDataServiceImpl 內(nèi)使用基于spring事件發(fā)布監(jiān)聽的機(jī)制寡痰,對具體處理數(shù)據(jù)變更發(fā)送的代碼進(jìn)行解耦,此類發(fā)送數(shù)據(jù)變更事件
科普帖:https://blog.csdn.net/wanping321/article/details/86667216
image
- DataChangedEventDispatcher監(jiān)聽SyncDataServiceImpl的發(fā)送數(shù)據(jù)變更事件棋凳,此類基于InitializingBean接口的初始化 拦坠。科普帖http://c.biancheng.net/view/5239.html
image.png
- WebsocketDataChangedListener用于監(jiān)聽DataChangedEventDispatcher發(fā)起ApplicationEvent事件剩岳,調(diào)用WebsocketCollector的send方法贞滨,將原數(shù)據(jù)發(fā)送給soul-bootstrap集群。
image
二拍棕、soul-bootstrap接受過程分析
從初始化到接收數(shù)據(jù)的流程大致如下:
image.png
- WebsocketSyncDataConfiguration使用ObjectProvider的方式注入實(shí)現(xiàn)泛型的所有實(shí)例的類晓铆,大大簡化了注入過程及提高更好擴(kuò)展性, 最終包裝是生成WebsocketSyncDataService
image.png
科普帖:https://www.cnblogs.com/fengxueyi/p/13888562.html
- WebsocketSyncDataService中用于建立與soul-admin集群的心跳機(jī)制绰播,具體可參考上一篇文章
- WebsocketSyncDataService創(chuàng)建SoulWebsocketClient中用于處理與websocket服務(wù)端的數(shù)據(jù)交互響應(yīng)
SoulWebsocketClient中通過調(diào)用websocketDataHandler的executor方法骄噪,根據(jù)不同type區(qū)分不同handle,完成不同功能模塊的數(shù)據(jù)更新蠢箩。
image.png
image
- 此處以PluginDataHandler為例链蕊,實(shí)際通過PluginDataSubscriber的實(shí)現(xiàn)類CommonPluginDataSubscriber中subscribeDataHandler,完成了將接收數(shù)據(jù)更新到BaseCahe的操作谬泌。
三滔韵、小結(jié)
- 學(xué)習(xí)spring事件發(fā)布訂閱、InitializingBean加載掌实、
- 明確了webscoket的數(shù)據(jù)同步流程陪蜻,對分布式環(huán)境系統(tǒng)下,注冊中心與節(jié)點(diǎn)集群通訊同步有個(gè)更深的理解
- 日拱一卒