架构训练营模块二作业
分析一下微信朋友圈的高性能复杂度
【作业要求】
1.对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。
2.针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。
3.给出你的架构方案中关键的设计理由。
4.3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。
【提示】
1.分析过程可以参考模块 2 第 5 课的实战案例,但是不需要将分析过程一一列举出来。
微信朋友圈复杂度总体分析
业务复杂度低,质量复杂度高
微信朋友圈的复杂度本身的业务复杂度不高,主要是发布动态,点赞,评论,广告。但是质量复杂度会比较高,例如:疫情期间,转发相关的公众号文章到朋友圈。评论后的动态跟踪。
参考文档
https://cloud.tencent.com/developer/article/1150966?from=15425
微信朋友圈高性能复杂度分析
朋友圈:发布动态,点赞评论,相册,刷朋友圈。
微信朋友圈高性能 - 发布动态,相册,刷朋友圈
除夕的时候大量的用户发布拜年动态
单机
计算高性能:无需考虑进程模型,网络模型,缓存模型,因为微信已经是一个成型的产品了。
存储高性能:海量的动态需要存储,会涉及到,会使用关系型数据库。
集群
计算高性能:
任务分解:发布动态本身比较简单了,所以不需要再分解任务了;
任务分配:直接用负载均衡就行了。
存储高性能:
任务分解:朋友圈动态数据分片存储即可,图片存储使用 CDN。
任务分配:不使用。
发布动态架构图
微信朋友圈高性能 - 点赞评论
单机
计算高性能:进程模型和网络模型参考发布动态的高性能分析,存储模型需要使用 Redis 来存储当前用户发布的动态的点赞和评论红点。
存储高性能:使用 Redis List 存储评论和点赞记录。
集群
计算高性能:
任务分解:发布动态本身比较简单了,所以不需要再分解任务了;
任务分配:直接用负载均衡就行了。
存储高性能:
任务分解:评论和点赞红点和点赞评论记录可以使用 Redis Cluster
任务分配:不使用。
微信朋友圈高性能 - 整体架构
朋友圈业务
集群
计算高性能:
任务分配:双机房
存储高性能:
任务分配:双机房
任务分解:发布动态和点赞评论已经分开了
微信朋友圈整体架构图 - 单机房示意图
评论