请教大家一个问题,微博关注好友动态主页,和微信朋友圈动态列表,后端架构设计都是如何实现的?
自己想到的是:
方案一:
1:首选是取我的好友列表,这个有自己的好友列表cache维护,不能直接查询db,考虑到数据量很大情况下的伸缩性必须满足。
2:再根据我的好友ids再去取他们发表的微博或者动态,按照时间排序,这个无疑是拿着user_ids in 动态数据表,这点感觉性能很致命。
方案二:
对比方案一,关系性数据库在面临大数据的时候系能会显得比较疲惫,考虑采用NoSQL,如:Mongodb,HBase ,Redis等产品。
综合对比,倾向选用HBase。Mongodb莫名丢数据时而常有的事情;Redis Master-Slave结构面临单机内存垂直增长受限,Redis 3.0目前支持Cluster,配合Sentinel,貌似能保证sharding nothing又能保证高可用,但是Redis Cluster生产环境没有实用经验。得补充一点就是代码上线前,需要处理已有好友关系的动态数据存储,从mysql考虑用job一次性跑到NoSQL中,这样保证我关注的人,先前发的动态我也能看到。
大家有什么好的建议呢?