数据人看Feed流-架构实践( 八 )
对于关系服务 , 其写入操作是建立关系和删除关系 , 读取操作是获取关系列表 , 逻辑上仅需要一个KV系统 。 如果数据量较少可以使用RDS , 如果数据量较大推荐使用HBase 。 如果对关系的QPS压力大可以考虑用Redis做缓存 。
图4 用户关系存储
消息传递
讲到Feed流一定会有关于推模式和拉模式的讨论 , 推模式是把消息复制N次发送到N个用户的收信箱 , 用户想看消息时从自己的收信箱直接获取 。 拉模式相反 , 生产者的消息写入自己的发信箱 , 用户想看消息时从关注的M个发信箱中收集消息 。
图5 消息传递的推模式和拉模式
推模式实现相对简单 , 时效性也比较好 。 拉模式要想获得好的性能需要多级的缓存架构 。 推模式重写 , 拉模式重读 , Feed流场景下写的聚合效果要优于读 , 写可以大批量聚合 。 N越大 , 写入造成的数据冗余就越大 。 M越大 , 读消耗的资源越大 。
随着业务的增长 , 推模式资源浪费会越发严重 。 原因在于两点:第一存在着大量的僵尸账号 , 以及大比例的非活跃用户几天或者半个月才登陆一次;第二信息过载 , 信息太多 , 重复信息太多 , 垃圾信息太多 , 用户感觉有用的信息少 , 消息的阅读比例低 。 这种情况下推模式相当一部分在做无用功 , 白白浪费系统资源 。
推荐阅读
- 捉迷藏|?LOL世界赛“含金量”数据出炉:EDG仅排第六,IG稳居榜首
- 碧蓝航线|碧蓝航线SR重巡福煦数据详解 期待越高失望越大 强度平平无奇
- kramer|国服极地大乱斗数据上线,来看看胜率榜符合你的预期吗?
- 米莱狄|峡谷数据榜:分均输出TOP5,干将莫邪只排第四,米莱狄至今被误解
- |S11淘汰赛数据盘点:场均时长为33分 55个不同英雄登场
- 中单|2021年英雄联盟世界赛终于落下帷幕!!大数据统计二!!
- 灵饰|梦幻西游:109级法系前排灵饰选择方法,用数据告诉你怎么做
- 卡牌|S11淘汰赛数据出炉,卡牌24场全被ban,压刀最多竟是辅助
- edg战队|堡垒之夜国服将清除数据,EDG创造队史晋级S11世界赛决赛
- 电子竞技|鱿鱼游戏:给成年人看的童话故事