数据人看Feed流-架构实践(11)

图7是推拉结合的模式

  • 增加发信箱 , 大V的发布进入其独立的发信箱 。 非大V的发布直接发送到用户的收信箱 。 其好处是解决大量的僵尸账号和非活跃账号的问题 。 用户只有在请求新消息的时候(比如登陆、下拉消息框)才会去消耗系统资源 。

  • 发信箱的多级缓存架构 。 一个大V可能有百万粉丝 , 一条热点消息的传播窗口也会非常短 , 即短时间内会对发信箱中的同一条消息大量重复读取 , 对系统挑战很大 。 终态下我们可能会选择两级缓存 , 收信箱数据还是要持久化的 , 否则升级或者宕机时数据就丢失了 , 所以第一层是一个分布式数据存储 , 这个存储推荐使用HBase , 原因和Inbox类似 。 第二层使用redis缓存加速 , 但是大V过大可能造成热点问题还需要第三层本地缓存 。 缓存层的优化主要包括两个方向:第一提高缓存命中率 , 常用的方式是对数据进行编码压缩 , 第二保障缓存的可用性 , 这里涉及到对缓存的冗余 。

图7 基于关系传递的推拉混合模式

推荐阅读