黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

KO增量更新

系統(tǒng) 2203 0

KO增量更新

  在app的時(shí)候, 為了用戶體驗(yàn), 一般都會(huì)引入緩存來(lái)加速app的運(yùn)行. 而緩存這東西用的好則是倚天劍, 用的不好, 容易帶進(jìn)臟數(shù)據(jù).

這里來(lái)爆料[[在移動(dòng)環(huán)境中緩存增量更新設(shè)計(jì)思想]]

通訊錄

  場(chǎng)景1 : app上沒(méi)有任何緩存記錄.?

  場(chǎng)景2 : app上存在緩存記錄, 但是有一段時(shí)間沒(méi)有使用改app, 不能確保緩存為最新.

  場(chǎng)景3: ?app正在使用緩存.

  在上述三個(gè)場(chǎng)景中, 最麻煩的就是 場(chǎng)景2, 因?yàn)榭赡軙?huì)出現(xiàn) server在app不使用的時(shí)間段對(duì)通訊錄中的信息進(jìn)行了CRUD操作 .

+10多蘭( ChangeLog機(jī)制)

  在增量更新中, 最基本的方式, 是采用ChangeLog機(jī)制, 大家可以回想一下SVN的版本機(jī)制, 它把對(duì) 代碼倉(cāng)庫(kù)的每一個(gè)操作都記錄下來(lái) . ?在各個(gè)不同Rev同步代碼時(shí)候, 直接拿著Rev 去獲得變化的版本序列, 然后merge 到本地代碼即可. 舉個(gè)栗子:

  服務(wù)器存在以下對(duì)通訊錄的ChangeLog

KO增量更新

  1) 當(dāng)沒(méi)有緩存手機(jī), 去get 通訊錄的時(shí)候, 那么把最新的 快照(有效的數(shù)據(jù)條目)或者整個(gè)ChangeLog拉下來(lái)就成了.

  2)?如果手機(jī)中存在緩存, 如

  則直接從獲取T4-T7的ChangeLog記錄, 然后更新緩存即可.

可能大家會(huì)發(fā)現(xiàn)存在“刪除”狀態(tài)的數(shù)據(jù),這些數(shù)據(jù)是表示軟刪除的數(shù)據(jù)。關(guān)于軟/硬刪除,大家可以自行度娘。

+45大劍(精簡(jiǎn)ChangeLog)

  上面小節(jié)中, ChangeLog可能會(huì)文件過(guò)長(zhǎng)從而占用大量的磁盤, 如果業(yè)務(wù)中僅僅對(duì)最終結(jié)果有興趣,那我們需要適當(dāng)?shù)那謇硭鼈?

比如說(shuō), 我們清理了 帶* 的ChangeLog條目 , ?如圖:

KO增量更新

   在App同步緩存的時(shí)候

  1) 沒(méi)有緩存, 下載最新的快照

  2) ?存在緩存, 則需要根據(jù) 緩存最后更新時(shí)間Tc 來(lái)進(jìn)行決策

    A) Tc < T4: 如Tc 為T1, T2 的時(shí)候, 服務(wù)器無(wú)法進(jìn)行判斷在小于Tc->T4時(shí)間段發(fā)生了神馬事情, 所以只能下載最新的快照

    B) Tc>=T4: 則可以下載Tc->T7的ChangeLog, 來(lái)進(jìn)行更新.

  可能會(huì)出現(xiàn)兩種極端的情況:  

1)?如果我們手賤, 把整個(gè)ChangeLog都刪掉了 ? 蠻有想法的, 可以參考下一小節(jié)。

  2)?如果把快照也刪掉了, 那么去找一個(gè) 修復(fù)磁盤的專業(yè)人員試試看, 順便構(gòu)思一下辭職信的內(nèi)容.

+75無(wú)盡(免除ChangeLog)

  在上一小節(jié), 我們精簡(jiǎn)了ChangeLog, 使得可以刪除一部分ChangeLog, 那么是否可以去除整個(gè)ChangeLog,僅僅留下我們感興趣的快照呢? 當(dāng)然是可以的.

比如說(shuō)我們經(jīng)過(guò)以下的修改過(guò)程, 獲得的快照:

KO增量更新

  在app緩存更新的時(shí)候:

  1) app沒(méi)有緩存: download 快照

  2) app 有緩存, 且條目最后更新時(shí)間為Tc.

      A) Tc < T4 : 下載快照。

      B) T4 <= Tc <= T7 : 獲取快照中Tc->T7的條目, 更新緩存。

  基本的思想就是快照為ChangeLog最后有效狀態(tài),而我們僅僅需要它。

  到此, 我們已經(jīng)獲得+75無(wú)盡的加成了, 但是這還不能carry 全場(chǎng). 我們還需要把焚燒一些被delete的數(shù)據(jù).

先知藥劑(剔除失效時(shí)間過(guò)長(zhǎng)的數(shù)據(jù))

  如果數(shù)據(jù)庫(kù)中存在N年前的刪除記錄, 而沒(méi)有把他們刪除掉, 這時(shí)候你就需要一瓶清潔劑, 把這些冗余的數(shù)據(jù)清理掉。清理指南如下:

  1. 劃出合適的 時(shí)間線(焚燒線) ,在這個(gè)時(shí)間之前“被標(biāo)記為刪除”的數(shù)據(jù)都將被焚燒掉。

  2. 在app同步緩存的時(shí)候, 給定的Tc 在焚燒線或者 最舊快照時(shí)間(上一小節(jié)T4) 之前, 則下載整個(gè)快照. 否則下載Tc->最新緩存.

團(tuán)戰(zhàn)要點(diǎn)

  1. 避免過(guò)量焚燒數(shù)據(jù),這會(huì)使得app每次都同步最新的快照。

  2. 合理的考慮整個(gè)快照和增量更新的大小對(duì)比。

  3. 設(shè)計(jì)好更新的時(shí)機(jī)。

基本原理

  確保時(shí)間戳之前的內(nèi)容,更新時(shí)間戳之后的內(nèi)容。

KO增量更新


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論