架构训练营模块二作业
分析微信朋友短的高性能复杂度
从复杂度分析,微信用户业务复杂度不高,仅有简单的列表查看,朋友圈发布,点赞评论,以及不同的查看权限功能。但是微信是 DAU 十亿级别的 app,因此其复杂度属于高质量,低业务复杂度的模型。
可扩展性分析:因为微信用户数量级不会明显的提升,所以可以确定微信需要支持十亿级别的用户,而无需考虑用户更大量级的提升。所以不需要考虑架构的可扩展性。
高性能复杂度分析:微信属于读多写少的业务场景,但社交并不存在高并发,所以对于单机性能复杂度来说,可以加入缓存来缓解 db 压力。通过 db 读写分离进一步。对于集群来看,通过 nginx 来做反向代理分流。
高可用复杂度分析:不要求强一致性,DB 集群通过异步复制,半同步复制或者多数复制都可。
安全性:社交业务,一般安全指标满足即可。
成本:国内最大的互联网企业之一,WXG 又是最有钱的事业部,需要考虑这些吗?
架构设计
设计理由
通过负载均衡(F5,nginx)来进行用户分流
web 服务器集群满足亿级用户并发需要
用户朋友圈图片/视频通过 CDN 服务缓存,提高读速度
jedis-cluster 分片缓存,按照用户分片,提升性能
sharding-jdbc 进行数据库分库分表,读写分离
可以考虑异地机房提升服务可用性
评论