本文主要是介绍feed流架构设计探讨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如何设计一个feed流信息系统。
概念
feed:用户发表的内容
follower:A关注B,A是B的follower
followee:B被A关注,B是A的folowee
feed流:持续更新并展示folowee的内容
产品偏向
1:微博、twitter类
2:微信朋友圈、陌陌类
3:快手、抖音类
产品目标。
1:用户可以读取/存储微博
2:用户可以关注/取消关注他人
3:用户读取feed流
用户维度
僵尸用户、非僵尸用户
活跃用户、非活跃用户
普通用户、大V用户
百万规模、海量用户规模
feed流维度
近期微博、历史微博
热点微博、普通微博
已删除微博、取消关注者微博
底层存储资源设计(基于数据库设计,也可以直接基于hbase存储)
基于userId hash
关注者表(userId, follower) ,粉丝表(userId, followee)
基于userId hash,再加时间维度分库分表
内容表(feedId,userId, time,content)
feed流设计
推模式基于redis、hbase(userId,time,feedId),冷数据自动过期。
推模式基于MySQL(userId,time,feedId),冷数据需要手动删除。
推模式实现简单,读取性能高,缺点就是存储成本,写压力大。另外取消关注者,微博被删除,此时这些微博不可见也都需要考虑。
对于这些大v发布的信息可以采用MQ异步推送的方式,其他微博直接推送。
基于拉模式
缺点就是写性能高,读性能需要考虑。
增量实时聚合新能容。
1:遍历好友,找到最近发表过feed人。
2:遍历最近发表过feed的人,获取feedId和time。
3:聚合形成feed流。
这篇关于feed流架构设计探讨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!