写点什么

架构实战营模块二作业

用户头像
子豪sirius
关注
发布于: 1 小时前

分析微信朋友圈的高性能复杂度

朋友圈复杂度总体分析

朋友圈高可用复杂度分析

业务场景 1 - 发动态

  • 发布的数据包括文字、视频、图片等信息。视频、图片考虑发布在 CDN。

  • 存储用集群,但是数据一致性要求不高,可以采用异步或者半同步方案以提高效率。

  • 每个用户维护自己一个朋友圈动态的 timeline。当一个用户发一个动态时,把相关动态的一些关键信息插入到他所有朋友的 timeline 中。timeline 使用 Redis List 保存,这样就不需要在多个朋友发动态时加锁。


业务场景 2 - 读动态

  • 用户从自己的 Redis List 读取 timeline 中未读的动态关键信息,再从服务器或者 CDN 拉取具体的朋友动态

  • 存储做读写分离,图片、视频等从 CDN 读取


业务场景 3 - 点赞、评论

  • 每个用户维护一个未读点赞、评论的通知列表 timeline,使用 Redis 存储

  • 当一个用户对一个动态点赞或评论,推送给对该动态有点赞和评论的用户的通知列表

总体架构设计

  • 部署多台应用服务器作集群,作负载;Nginx 作任务分发

  • 数据库集群作分库分表,并读写分离

  • Redis 集群保存动态 timeline,未读通知 timeline

  • 部署 CDN 服务器,保存图片、视频,加速多媒体素材的下载

  • 后续架构演进,CDN 服务器考虑买运营商的服务,并实现多地部署,以保证不同地区的访问最佳的 CDN 服务器。CDN 服务器数据更新采用异步方式。


用户头像

子豪sirius

关注

还未添加个人签名 2018.05.03 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块二作业