Luciferoffans 2015-10-21 10:36 采纳率: 0%
浏览 6058

微信朋友圈技术实现讨论

请教大家一个问题,微博关注好友动态主页,和微信朋友圈动态列表,后端架构设计都是如何实现的?
自己想到的是:
方案一:
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中,这样保证我关注的人,先前发的动态我也能看到。

大家有什么好的建议呢?

  • 写回答

1条回答 默认 最新

  • 诸相非相 2015-10-21 15:00
    关注

    没有做过类似业务,但可以分析一下
    1)有一点可以肯定微博、朋友圈发表内容是按时间分库分表存储的,而且考虑到数据量和查询效率不会使用纯关系型数据库存储,一般Mongodb、Redis或者自研的类似db。
    2)考虑到数据的时间越久越冷,越新越热,会有cache的策略来提速“热”数据的检索和支持更大的并发;
    3)数据至少有一个热备份,数据和备份是一种弱一致性关系;
    4)使用消息队列异步化数据写入,提高前端响应。
    先想这么多,欢迎大家来补充!

    评论

报告相同问题?

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)