写点什么

架构实战营 模块二作业

用户头像
fazinter
关注
发布于: 2021 年 04 月 17 日
架构实战营 模块二作业

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

【作业要求】

  1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;

  2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可);

  3. 给出你的架构方案中关键的设计理由。

  4. 3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。


架构方案

一、朋友圈高性能复杂度分析

总体分析:


  微信朋友圈的复杂度分布应该在左上,业务复杂度相对不高,质量复杂度相对于业务来说会高点。

业务指标:

  在 2021 微信公开课 Pro 直播演讲中,微信创始人张小龙披露微信最新数据:每天有 7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈每天有 1 亿条视频内容。 

微信的主要场景可分为:浏览时间线、浏览好友相册、发布、点赞、评论。

对场景对如下假设:

1.微信用户每天对朋友圈的操作集中在早 6 点到晚 23 点这 18 个小时内

2.微信用户每天对朋友圈的操作高峰峰值是平均的 2 倍

3.微信用户平均每天进入朋友圈浏览时间线的次数为 18 次

4.微信用户浏览好友相册的访问量是浏览时间线访问量的 40%

5.微信用户发布朋友圈的发布频次为平均每天 3 次

6.发布朋友圈记录中有 70%的比例会被点赞,平均每条点赞数 5 次

7.发布朋友圈记录中有 50%的比例会被评论,平均每条评论 3 次

推导出:


二、朋友圈高性能方案设计

整体架构图

单机房示意图


三、朋友圈高性能方案-设计理由

设计要点

  1. 发展到现在微信朋友圈的业务体量很大,而且是全国性的业务,猜测微信朋友圈部署架构是分区域分机房部署,机房间通过高速网络连接同步数据

  2. 通过智能 DNS 路由分发流量到就近区域的机房,做地域级的负载均衡

  3. 通过分析发现时间线、相册、发布、点赞、评论的 QPS/TPS 差异较大,应做服务拆分以达到各服务各自水平伸缩扩展性能的能力

  4. 点赞、评论 TPS 比较小,业务也不复杂,合并成一个评论服务

关键点分析

  由于读请求比写请求多,同时读取时间线的功能并没有对数据延迟和一致性有极高要求。可以单独拆分出时间线表,异步为用户生成时间线表内容,简化用户读时间线时的查询。

用户头像

fazinter

关注

卓有成效 2019.02.19 加入

烂的开始是成功的一半!

评论

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