【架构实战营作业】模块二——朋友圈高性能架构
一:需求分析
微信朋友圈复杂度总体分析
朋友圈高性能业务指标
背景
2021-01-19,张小龙在演讲中表示,每天有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;
峰值预估
刷朋友圈—1000wQPS(每天有 7.8 亿用户进入朋友圈,假设流量高峰值为 1000w)
发布—1000w/100=10wTPS(假设 1000w 进入朋友圈的人有 10w 人发帖)
评论—1000w/100=10wTPS(假设 1000w 进入朋友圈的人有 10w 人进行评论)
点赞—1000w/20=50wTPS(假设 1000w 进入朋友圈的人有 50w 人进行点赞)
朋友圈质量复杂度分析
高性能:每天有 7.8 亿用户进入朋友圈,在高峰时段 22:00 预估峰值在千万级,并发量较大,对性能有一定的要求(在微信现有的技术体系下,主要考虑集群高性能)。
高可用:作为一款社交娱乐产品,短暂的读不可用容忍度高;但用户数据不能丢失,需要保障数据高可用。
可扩展:朋友圈业务相对比较简单,主要围绕帖子发布,点赞与评论,扩展性这块可以先不考虑。
成本和安全:微信作为主流社交产品,成本这块不会是瓶颈;安全这块由于涉及到用户数据,需要考虑朋友圈个人隐私保护,采用数据加密及产品解决方案。
二:总体架构方案
三:架构设计说明
1、CDN 层:主要用于静态资源(图片)存储,用户发布朋友圈时将图片上传至就近的 CDN,为发布及浏览朋友圈提速;
2、集群高性能通过 nginx 进行任务分配;
3、选用 hbase 存储发布、点赞及评论数据,数据拉取根据 key 获取数据更快,mysql 对于海量数据的读写性能有瓶颈;
数据安全这块,通过集群半同步进行复制保障数据高可用;
4、时间线存储在 redis 中,读写更快;
用户朋友圈发布后,图片保存在 CDN 中,hbase 中的发布表保存用户信息,cdn 中的图片 url,查看权限信息等,
发布表持久化完成后,同步更新用户的朋友圈时间线,同时发起异步批量更新用户好友(仅限拥有查看权限的好友)时间线处理。
by@huihui
版权声明: 本文为 InfoQ 作者【聆息】的原创文章。
原文链接:【http://xie.infoq.cn/article/518d94dfb3fa0c38b2a5fca85】。文章转载请联系作者。
评论