KO增量更新

系统 1560 0

KO增量更新

  在app的时候, 为了用户体验, 一般都会引入缓存来加速app的运行. 而缓存这东西用的好则是倚天剑, 用的不好, 容易带进脏数据.

这里来爆料[[在移动环境中缓存增量更新设计思想]]

通讯录

  场景1 : app上没有任何缓存记录. 

  场景2 : app上存在缓存记录, 但是有一段时间没有使用改app, 不能确保缓存为最新.

  场景3:  app正在使用缓存.

  在上述三个场景中, 最麻烦的就是 场景2, 因为可能会出现 server在app不使用的时间段对通讯录中的信息进行了CRUD操作 .

+10多兰( ChangeLog机制)

  在增量更新中, 最基本的方式, 是采用ChangeLog机制, 大家可以回想一下SVN的版本机制, 它把对 代码仓库的每一个操作都记录下来 .  在各个不同Rev同步代码时候, 直接拿着Rev 去获得变化的版本序列, 然后merge 到本地代码即可. 举个栗子:

  服务器存在以下对通讯录的ChangeLog

KO增量更新

  1) 当没有缓存手机, 去get 通讯录的时候, 那么把最新的 快照(有效的数据条目)或者整个ChangeLog拉下来就成了.

  2) 如果手机中存在缓存, 如

  则直接从获取T4-T7的ChangeLog记录, 然后更新缓存即可.

可能大家会发现存在“删除”状态的数据,这些数据是表示软删除的数据。关于软/硬删除,大家可以自行度娘。

+45大剑(精简ChangeLog)

  上面小节中, ChangeLog可能会文件过长从而占用大量的磁盘, 如果业务中仅仅对最终结果有兴趣,那我们需要适当的清理它们.

比如说, 我们清理了 带* 的ChangeLog条目 ,  如图:

KO增量更新

   在App同步缓存的时候

  1) 没有缓存, 下载最新的快照

  2)  存在缓存, 则需要根据 缓存最后更新时间Tc 来进行决策

    A) Tc < T4: 如Tc 为T1, T2 的时候, 服务器无法进行判断在小于Tc->T4时间段发生了神马事情, 所以只能下载最新的快照

    B) Tc>=T4: 则可以下载Tc->T7的ChangeLog, 来进行更新.

  可能会出现两种极端的情况:  

1) 如果我们手贱, 把整个ChangeLog都删掉了 ? 蛮有想法的, 可以参考下一小节。

  2) 如果把快照也删掉了, 那么去找一个 修复磁盘的专业人员试试看, 顺便构思一下辞职信的内容.

+75无尽(免除ChangeLog)

  在上一小节, 我们精简了ChangeLog, 使得可以删除一部分ChangeLog, 那么是否可以去除整个ChangeLog,仅仅留下我们感兴趣的快照呢? 当然是可以的.

比如说我们经过以下的修改过程, 获得的快照:

KO增量更新

  在app缓存更新的时候:

  1) app没有缓存: download 快照

  2) app 有缓存, 且条目最后更新时间为Tc.

      A) Tc < T4 : 下载快照。

      B) T4 <= Tc <= T7 : 获取快照中Tc->T7的条目, 更新缓存。

  基本的思想就是快照为ChangeLog最后有效状态,而我们仅仅需要它。

  到此, 我们已经获得+75无尽的加成了, 但是这还不能carry 全场. 我们还需要把焚烧一些被delete的数据.

先知药剂(剔除失效时间过长的数据)

  如果数据库中存在N年前的删除记录, 而没有把他们删除掉, 这时候你就需要一瓶清洁剂, 把这些冗余的数据清理掉。清理指南如下:

  1. 划出合适的 时间线(焚烧线) ,在这个时间之前“被标记为删除”的数据都将被焚烧掉。

  2. 在app同步缓存的时候, 给定的Tc 在焚烧线或者 最旧快照时间(上一小节T4) 之前, 则下载整个快照. 否则下载Tc->最新缓存.

团战要点

  1. 避免过量焚烧数据,这会使得app每次都同步最新的快照。

  2. 合理的考虑整个快照和增量更新的大小对比。

  3. 设计好更新的时机。

基本原理

  确保时间戳之前的内容,更新时间戳之后的内容。

KO增量更新


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论