【设计】推拉模型

122 阅读2分钟

一、背景

用户互动包括用户之间关注和取关,这个动作将会改变关注的人视频中的数据展示,有必要通过文字来描述处理的过程。

二、推模型

推,见文知意,表示主动的去推送,在用户发布视频并审核通过的时候,会把视频推送给粉丝,放入粉丝的收件箱

三、拉模型

拉,见文知意,表示主动的去拉取,在用户在页面加载的时候,会主动的去关注的博主发件箱按照时间线拉取视频到收件箱

四、推拉对比

  • 推模型,用户粉丝多的场景,耗时较高服务器压力较大,同时缓存中要维护更多的数据,因为在主动推送给粉丝到收件箱
  • 拉模型,用户关注的人多的场景耗时较高,因为用户关注的人多,需要把所有博主的发件箱读取到收件箱
  • 推拉结合,粉丝量大的拉,粉丝量小的推送,耗时较低,压力较小,但实现更复杂,需要做好发件箱和收件箱的同步

五、个人考虑

  • 选用拉模型,用户查询触发同步最新收件箱,依据前端查询的时间参数返回数据,底层选用sorted set,得分是视频审核通过时间,保证数据不乱序和不重复可按照得分查询
  • 发件箱、收件箱中的数据过期时间是2周 降低服务器压力 冷数据

缺点

  • 在实际场景中,用户关注了几百个博主在两周可能发布了几百条视频,用户不一定可以刷的完,为了让用户刷到自己更喜欢的博主,可增加关注的人亲密度优先展示逻辑