多終端同步方案

一、多終端同步的含義

1指用戶在多個(gè)終端切換時(shí)可獲得一致性體驗(yàn),不丟失上下文,

2 如果用戶多個(gè)終端同時(shí)在線要能做到實(shí)時(shí)同步。

案例:apple的Handoff;qq消息多終端自動(dòng)同步;有道云的同步等

二、系統(tǒng)目標(biāo)

1實(shí)時(shí)性,服務(wù)端數(shù)據(jù)變更,在<1s 時(shí)間內(nèi)推送至各個(gè)端。

2實(shí)現(xiàn)消息的多終端增量同步,然后通過(guò)同步機(jī)制確保不丟消息。同步機(jī)制必須避免流量浪費(fèi),所以需要做增量。

3客戶端數(shù)據(jù)能自修復(fù)達(dá)到最終一致性。(離線-->在線)

三、實(shí)現(xiàn)原理

類似于:Git版本管理系統(tǒng)

可以說(shuō),相當(dāng)于實(shí)現(xiàn)一個(gè)服務(wù)器和客戶端實(shí)時(shí)同步的輕型數(shù)據(jù)庫(kù)。

四、設(shè)計(jì)

1、數(shù)據(jù)模型


2、數(shù)據(jù)模型說(shuō)明

? ? 服務(wù)端:

? ? ? ?數(shù)據(jù)集合,為原有的數(shù)據(jù)集合;

? ? ? ?數(shù)據(jù)變更序列,記錄每次數(shù)據(jù)發(fā)生變更,其中包含操作類型和數(shù)據(jù);

? ? ? ?數(shù)據(jù)最新變更,記錄某數(shù)據(jù)的最后一次變更。

? ? 客戶端:

? ? ? ?數(shù)據(jù)集合,在原數(shù)據(jù)基礎(chǔ)上,增加lastOptId(本地?cái)?shù)據(jù),最后變更一次變更對(duì)應(yīng)的操作序列)

3、業(yè)務(wù)場(chǎng)景說(shuō)明

場(chǎng)景1:client端第一次獲取數(shù)據(jù),調(diào)用接口,返回?cái)?shù)據(jù)(數(shù)據(jù)內(nèi)容+最后一次操作序列)。

場(chǎng)景2:client 斷網(wǎng) 重連后,調(diào)用接口獲取數(shù)據(jù)時(shí),傳入本地的lastOptId,服務(wù)端比較 請(qǐng)求中的lastOptId和服務(wù)端的lastOptId,如果兩者相同,則返回 “數(shù)據(jù)未發(fā)生變化”的響應(yīng)。如果lastOptId不同,則返回最新數(shù)據(jù)。

場(chǎng)景3:數(shù)據(jù)發(fā)生改變,服務(wù)端記錄操作序列、修改數(shù)據(jù)的最新變更,將相應(yīng)的變更push到各個(gè)client端。client端比較lastOptId,如果與推送的optId連續(xù),則根據(jù)操作序列 進(jìn)行數(shù)據(jù)重放。如果optId不連續(xù) 或 重做失敗,則調(diào)用http接口,重新獲取數(shù)據(jù)(同場(chǎng)景1)。重做完成后,可再次調(diào)用請(qǐng)求接口(同場(chǎng)景2),以確保未丟失變更。

4、技術(shù)點(diǎn)

APP ? 長(zhǎng)連接保持:

? ? ?1、借助第三方推送服務(wù),推送數(shù)據(jù);特點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,但實(shí)時(shí)性 及 到達(dá)率 依賴第三方服務(wù)。

? ? ?2、自研基于Netty的TCP長(zhǎng)連接保持框架。研發(fā)周期較長(zhǎng),可靠性 需經(jīng)實(shí)踐考驗(yàn)。

web端:

? ? ? 1、使用WebSocket,低版本瀏覽器使用socketjs。


五、相關(guān)文檔:

如何設(shè)計(jì)類似微信的多終端數(shù)據(jù)同步協(xié)議 | Grouk實(shí)踐分享:

http://chuansong.me/n/1718596

http://lock522.b0.upaiyun.com/wym.pdf

微信通訊協(xié)議的學(xué)習(xí):

http://www.xodn.com/forum.php?mod=viewthread&tid=7055

四種多終端事務(wù)同步需求和目前的方法:

http://chuansong.me/n/571502132351

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容