信息流聚合类系统(如RSS阅读器)中数据同步的架构设计
目录
需求
- 要求支持用户能够用一个账号在多台设备上同步数据(这要求同步状态存储在服务器上)
- 凡是需要在服务器存储用户状态数据的,需要评估存储容量的限制
- 要求用户标记为已阅的信息下次刷新不会再从服务器重复刷新
- 要求能够支持书签(或网盘类应用)的双向同步问题
基于时间戳的设计
主要思想:
- 将信息拆分为基本的item单位,以每个用户可自定义的最小时间间隔作为桶
- 每个桶里的item要么全部读完,否则下次还会重复更新下来
- 优点:不需要额外的存储,但是每次会有计算开销
- 要点:保证各个桶是整个数据集的disjoint的子集的union
基于每个用户消息队列的设计
- 每个信息源里的item有按照时间顺序的唯一id编号,不要使用数据库生成id,使用领域自然id或对象hash id
- 信息流的聚合相当于多队列聚合为一个队列,考虑某些支持消息序列持久化的中间件?
- 优点:稳定可靠
- 缺点:每个用户的聚合队列可能是一笔不小的存储开销
- 要点: