多終端數(shù)據(jù)同步機(jī)制設(shè)計(jì)(二)

多終端數(shù)據(jù)同步機(jī)制設(shè)計(jì)(二)

Intro

如果您沒(méi)有看上一篇文章粉渠,建議您先移步到這里查看 第一部分
上一次主要解決了基本的數(shù)據(jù)增量同步的問(wèn)題漏策,但仍然存在一些問(wèn)題。
可能存在的主要問(wèn)題:

  1. 大數(shù)據(jù)量傳輸時(shí)只估,數(shù)據(jù)在傳輸過(guò)程出現(xiàn)部分丟失志群,數(shù)據(jù)不完整
  2. 超大數(shù)據(jù)量需要同步,導(dǎo)致響應(yīng)時(shí)間過(guò)長(zhǎng)而導(dǎo)致連接超時(shí)

針對(duì)以上可能出現(xiàn)的這兩個(gè)問(wèn)題蛔钙,需要對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)并且數(shù)據(jù)量超過(guò)一定量時(shí)進(jìn)行分批量傳輸锌云,
本文將著手解決 數(shù)據(jù)校驗(yàn)數(shù)據(jù)分批次傳輸 這兩個(gè)問(wèn)題。

同步流程概覽

結(jié)合之前的同步流程吁脱,加上數(shù)據(jù)校驗(yàn)和分批次傳輸數(shù)據(jù)桑涎,大概流程如下:
客戶端調(diào)用服務(wù)器端的 Pull 接口從服務(wù)器端拉取數(shù)據(jù)彬向,
如果本地版本號(hào)等于服務(wù)器端最新版本號(hào),則已更新的最新版本攻冷,
如果本地版本小于服務(wù)器端最新的版本號(hào)娃胆,則拉取需要更新的數(shù)據(jù),服務(wù)器端返回?cái)?shù)據(jù)的同時(shí)會(huì)返回本地傳輸?shù)臄?shù)據(jù)的一個(gè)校驗(yàn)值等曼,
客戶端獲取到服務(wù)器端響應(yīng)時(shí)先根據(jù)接收到的數(shù)據(jù)計(jì)算校驗(yàn)值里烦,計(jì)算出來(lái)之后與服務(wù)器端返回的校驗(yàn)值進(jìn)行比較,
如果本地計(jì)算的校驗(yàn)值與服務(wù)器端返回的校驗(yàn)值一致則進(jìn)行更新客戶端本地?cái)?shù)據(jù)禁谦,不一致則視為無(wú)效數(shù)據(jù)胁黑,重新請(qǐng)求 Pull 接口。

更新到最新版本之后枷畏,判斷本地是否存在未提交的版本别厘,如果本地不存在修改則本次數(shù)據(jù)同步完成,如果本地存在修改拥诡,則提交本地修改触趴,提交本地?cái)?shù)據(jù)的之前要先計(jì)算傳輸數(shù)據(jù)的校驗(yàn)值,校驗(yàn)值和本地?cái)?shù)據(jù)一起傳給服務(wù)器端 Push接口渴肉。
服務(wù)器端 Push 接收到客戶端請(qǐng)求之后需要進(jìn)行數(shù)據(jù)校驗(yàn)冗懦,根據(jù)傳輸?shù)臄?shù)據(jù)計(jì)算校驗(yàn)值并與客戶端傳的校驗(yàn)值比較,
如果兩個(gè)值不一致仇祭,則視為數(shù)據(jù)在傳輸過(guò)程中發(fā)生丟失或是異常數(shù)據(jù)披蕉,則不處理并返回客戶端,本次請(qǐng)求屬于異常請(qǐng)求乌奇。
如果兩個(gè)值一致没讲,再進(jìn)行數(shù)據(jù)處理,處理結(jié)束之后礁苗,數(shù)據(jù)會(huì)有一個(gè)返回狀態(tài)和其他必要的屬性爬凑,根據(jù)數(shù)據(jù)計(jì)算校驗(yàn)值,與從服務(wù)器拉取數(shù)據(jù)時(shí)類似试伙,不再贅述嘁信,
客戶端數(shù)據(jù)校驗(yàn)通過(guò)之后,根據(jù)服務(wù)器端處理狀態(tài)進(jìn)行本地?cái)?shù)據(jù)的更新疏叨。

下面展示添加數(shù)據(jù)校驗(yàn)后的主要流程圖:

服務(wù)器端獲取數(shù)據(jù):

服務(wù)器端拉取數(shù)據(jù)

客戶端拉取數(shù)據(jù):

客戶端拉取數(shù)據(jù)

服務(wù)器端更新數(shù)據(jù):

服務(wù)器端更新數(shù)據(jù)

客戶端推送更新數(shù)據(jù):

客戶端拉取數(shù)據(jù)

數(shù)據(jù)校驗(yàn)

數(shù)據(jù)校驗(yàn)潘靖,我們用的是MD5進(jìn)行校驗(yàn),取傳輸數(shù)據(jù)的MD5蚤蔓,使用MD5有兩方面的考慮:
一方面因?yàn)镸D5生成的字符串不算太長(zhǎng)卦溢,不會(huì)影響傳輸?shù)臄?shù)據(jù)量,
另一方面也是因?yàn)镸D5比較通用一些,APP端實(shí)現(xiàn)起來(lái)也比較方便既绕。

數(shù)據(jù)分批傳輸

數(shù)據(jù)分批次傳輸啄刹,自己感覺(jué)這里實(shí)現(xiàn)的比較 LOW ,這里類似于網(wǎng)站上的分頁(yè)凄贩,沒(méi)想到更好的解決方案誓军,期待大神分享更好的解決方案。
返回客戶端 當(dāng)前請(qǐng)求數(shù)據(jù)頁(yè)碼索引 和 本次數(shù)據(jù)傳輸總頁(yè)數(shù)疲扎,如果頁(yè)碼索引小于總頁(yè)數(shù)昵时,則頁(yè)碼索引+1,再請(qǐng)求一次接口知道返回的頁(yè)碼索引等于總頁(yè)數(shù)椒丧。

End

最后壹甥,這個(gè)設(shè)計(jì)一定還存在著不足,希望大神看到能給出自己的看法和意見(jiàn)壶熏,有不正確的地方還希望能夠告知句柠。
整個(gè)同步流程設(shè)計(jì)的流程圖,點(diǎn)我下載

另如果你有別的方案歡迎共同討論棒假,希望大神看到能給出自己的看法和意見(jiàn)溯职,有不正確的地方還希望能夠告知。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帽哑,一起剝皮案震驚了整個(gè)濱河市谜酒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妻枕,老刑警劉巖僻族,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異屡谐,居然都是意外死亡述么,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)愕掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碉输,“玉大人,你說(shuō)我怎么就攤上這事亭珍。” “怎么了枝哄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵肄梨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我挠锥,道長(zhǎng)众羡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任蓖租,我火速辦了婚禮粱侣,結(jié)果婚禮上羊壹,老公的妹妹穿的比我還像新娘。我一直安慰自己齐婴,他們只是感情好油猫,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著柠偶,像睡著了一般情妖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诱担,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天毡证,我揣著相機(jī)與錄音,去河邊找鬼蔫仙。 笑死料睛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摇邦。 我是一名探鬼主播恤煞,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涎嚼!你這毒婦竟也來(lái)了阱州?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤法梯,失蹤者是張志新(化名)和其女友劉穎苔货,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體立哑,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夜惭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铛绰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诈茧。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捂掰,靈堂內(nèi)的尸體忽然破棺而出敢会,到底是詐尸還是另有隱情,我是刑警寧澤这嚣,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布鸥昏,位于F島的核電站,受9級(jí)特大地震影響姐帚,放射性物質(zhì)發(fā)生泄漏吏垮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膳汪。 院中可真熱鬧唯蝶,春花似錦、人聲如沸遗嗽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)媳谁。三九已至涂滴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晴音,已是汗流浹背柔纵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锤躁,地道東北人搁料。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像系羞,于是被迫代替她去往敵國(guó)和親郭计。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容