Intro
如果您沒有看上一篇文章,建議您先移步到這里查看第一部分 上一次主要解決了基本的數(shù)據(jù)增量同步的問(wèn)題,但仍然存在一些問(wèn)題。 可能存在的主要問(wèn)題:
大數(shù)據(jù)量傳輸時(shí),數(shù)據(jù)在傳輸過(guò)程出現(xiàn)部分丟失,數(shù)據(jù)不完整
超大數(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ú)效