微信朋友圈高性能复杂度分析
一、关键场景分析
【关键场景和对象】
人员
添加 / 删除 好友
动态
发 / 删除 动态
点赞动态
浏览动态
评论
发 / 删除 评论
查看评论
二、架构设计
1. 高性能复杂度分析
【访问量评估】
发动态 / 评论 / 点赞等操作,TPS 为万级别。
浏览朋友圈,QPS 为十万级别。
【架构分析】
计算高性能分析
缓存模型
朋友圈动态缓存:
朋友圈动态 Feed 流,可以用 Redis 缓存,提升朋友圈的查询效率。
Redis 只需要缓存动态的 id,从缓存查询 Feed 列表后,再从数据库查询详细动态信息。
当账号发动态后,更新这个帐号所有好友的 Feed 缓存。
任务分解
人员,动态和评论等业务场景比较简单,可以不做分解,放在一个朋友圈后台服务里实现。
任务分配
后台服务的负载比较大,通过水平扩容,增加服务节点的方式来解决。
部署方式,可以用容器化部署,k8s 来做容器管理,实现动态扩容。
存储高性能分析
存储方式
图片等资源文件:可以存到统一的云存储服务里(文件服务器),支持 CDN 访问和自动容灾备份。
业务数据:可以存到关系型数据库 MySQL,分布式数据库 PolarDB / OceanBase,或 NoSQL 数据库 Tablestore / MongoDB 里。
数据分片
可以以微信 ID 为维度进行业务数据的分库。
任务分配
MySQL 可以用 ShardingJDBC 方案做读写分离,只读节点数可以根据流量来增加。
Redis 缓存用集群方式部署。
如果用分布式关系数据库或 NoSQL,直接支持分布式存储。
2. 架构设计
【部署架构图】
评论