写点什么

模块 2 作业

用户头像
gevin
关注
发布于: 2021 年 07 月 10 日

1. 微信朋友圈的高性能复杂度


微信朋友圈的业务复杂度和质量复杂度均不是太高,但由于微信用户基数大,需要按照业务复杂度低,质量复杂度高来设计。


朋友圈的业务主要是发朋友圈、看朋友圈和评论点赞功能,不涉及难以理解的功能,或业务流程复杂的功能,故业务复杂度低


朋友圈对性能和可用性的要求也不是特别高,无论发朋友圈、看朋友圈还是评论点赞,都不涉及高并发场景,如果出现短时间朋友圈功能不可用,影响不是特别大


但是微信朋友圈的用户基数比较大,经查询,微信日活用户 11 亿,每天有 1.2 亿用户发朋友圈,假设朋友圈活跃时段为 7:00 ~ 23:00,这 1.2 亿用户发朋友圈集中在这 16 小时中,估算 TPS 为 2.1k,QPS 估算为 2.1k * 10 = 2.1 万


故微信朋友圈是业务复杂度和质量复杂度均不高的,但考虑到微信用户基数,按业务要求低,质量要求高来设计架构

2. 架构设计、设计理由

2.1 发朋友圈


发朋友圈,按照 TPS 2.1k 要求来设计,架构设计如下:



对于发朋友圈的业务场景而言,由于不存在特别高的 TPS,数据存储于数据库即可,由于微信用户基数大,朋友圈数据会特别多,故采用分库分表方式存储数据

由于发朋友圈的业务逻辑比较简单,直接通过任务分配方式提供并发性能即可


2.2 看朋友圈和评论点赞功能


看朋友圈和评论点赞功能,业务场景于发朋友圈基本一致,采用相关的架构设计即可


2.3 朋友圈整体架构


朋友圈整体架构如上图。采用两机房部署,通过 DNS 分配用户请求,北方用户访问北方机房,南方用户访问南方机房。两个机房的数据库,采用数据复制、异步方式进行复制。


发布于: 2021 年 07 月 10 日阅读数: 6
用户头像

gevin

关注

技术、生活都要折腾 2013.07.26 加入

还未添加个人简介

评论

发布
暂无评论
模块2作业