soul 網關入門篇(六):數據同步方式之 websocket

前言

上次說到虏束,數據同步的大體流程是怎么樣。那今天我們來從 websocket 的方式入手拥褂,看看他的實現如何。哪些精妙設計的方案牙寞,哪些在我們平常編碼中能采用的呢饺鹃?

多個 admin 服務

查看 WebsocketSyncDataService 的第一段代碼
String[] urls = StringUtils.split(websocketConfig.getUrls(), ",");
進入 WebsocketConfig 時我們可以得知,我們可以配置多個 admin 的服務间雀,并且他的配置方式為 127.0.0.1:8888,127.0.0.1:8889 悔详,配置為 soul-bootstrap 中的

soul :
    sync:
        websocket :
             urls: ws://localhost:9095/websocket,ws://localhost:9096/websocket

注意:這中間是沒有空格的。
我們并不知道這樣的配置是否正確惹挟,我們驗證一下茄螃。配置好后重啟 bootstrap, 發(fā)現

2021-01-20 23:54:19.387 ERROR 4530 --- [           main] o.d.s.p.s.d.w.WebsocketSyncDataService   : websocket url( ws://localhost:9096/websocket) is error

連接并不成功连锯,這時我們得另外在起一個 admin归苍,修改 soul-admin 的端口配置,


idea 配置9096端口

配置成功后啟動應用运怖,這個時候我們本地機子上有兩個 admin 的進程拼弃。
由于之前啟動的是 9095, 那現在我在 9096 上修改參數:


修改原有配置.png

為了更好的辨識摇展,重啟了 bootstrap吻氧,發(fā)現 websocket client 有了兩個鏈接。
2021-01-21 00:18:11.966  INFO 775 --- [           main] b.s.s.d.w.WebsocketSyncDataConfiguration : you use websocket sync soul data.......
2021-01-21 00:18:12.022  INFO 775 --- [           main] o.d.s.p.s.d.w.WebsocketSyncDataService   : websocket connection is successful.....
2021-01-21 00:18:12.347  INFO 775 --- [           main] o.d.s.p.s.d.w.WebsocketSyncDataService   : websocket connection is successful.....

由此可知咏连,我們的配置目前為止是生效的盯孙。

soul websocket 同步的流程

接著 WebsocketSyncDataService 往下看:

clients.add(new SoulWebsocketClient(new URI(url), Objects.requireNonNull(pluginDataSubscriber), metaDataSubscribers, authDataSubscribers));

這里有個創(chuàng)建 SoulWebsocketClient 的操作,我們進入此類祟滴,發(fā)現它集成了 WebSocketClient 類镀梭,

  • onOpen(final ServerHandshake serverHandshake) 原文注釋:Called after an opening handshake has been performed and the given websocket is ready to be written on. 大體的意思是說:在鏈接服務端后調用此方法
  • onMessage(final String result) 原文注釋:Callback for string messages received from the remote host;大體意思是說:從遠端服務器上接受到字符串信息后調用
  • onClose(final int i, final String s, final boolean b) 原文注釋:Called after the websocket connection has been closed.
  • onError(final Exception e) 原文注釋:Called when errors occurs.

當服務端踱启,也就是 admin 編輯信息后會發(fā)送 message 报账,這時候會調用 onMessage 的方法研底。后臺更新 selector 時的調試


調試

經過一波 debug 梁只,得出下面這張圖:


數據websocket同步的流程圖.png

總結:1. 還需要深入的是: websocket 的使用 demo秉沼,和使用場景

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末雳殊,一起剝皮案震驚了整個濱河市瞬场,隨后出現的幾起案子旷痕,更是在濱河造成了極大的恐慌设联,老刑警劉巖捌年,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谴轮,死亡現場離奇詭異朽寞,居然都是意外死亡识窿,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門脑融,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喻频,“玉大人,你說我怎么就攤上這事肘迎∩拢” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵妓布,是天一觀的道長姻蚓。 經常有香客問我,道長匣沼,這世上最難降的妖魔是什么狰挡? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮释涛,結果婚禮上加叁,老公的妹妹穿的比我還像新娘。我一直安慰自己枢贿,他們只是感情好殉农,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布刀脏。 她就那樣靜靜地躺著局荚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愈污。 梳的紋絲不亂的頭發(fā)上耀态,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機與錄音暂雹,去河邊找鬼首装。 笑死,一個胖子當著我的面吹牛杭跪,可吹牛的內容都是我干的仙逻。 我是一名探鬼主播驰吓,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼系奉!你這毒婦竟也來了檬贰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缺亮,失蹤者是張志新(化名)和其女友劉穎翁涤,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體萌踱,經...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡葵礼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了并鸵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸳粉。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖能真,靈堂內的尸體忽然破棺而出赁严,到底是詐尸還是另有隱情,我是刑警寧澤粉铐,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布疼约,位于F島的核電站,受9級特大地震影響蝙泼,放射性物質發(fā)生泄漏程剥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一汤踏、第九天 我趴在偏房一處隱蔽的房頂上張望织鲸。 院中可真熱鬧,春花似錦溪胶、人聲如沸搂擦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瀑踢。三九已至,卻和暖如春才避,著一層夾襖步出監(jiān)牢的瞬間橱夭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工桑逝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棘劣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓楞遏,卻偏偏與公主長得像茬暇,于是被迫代替她去往敵國和親首昔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內容