架构实战营模块二作业
微信朋友圈高性能复杂度分析
用户量级:查阅资料显示在 2021 年三季度微信用户月活为 12.63 亿用户,1.2 亿用户每天发朋友圈,照片 6.7 亿张,7.8 亿用户浏览朋友圈。
一. 朋友圈核心功能
二. 流量预估
三.服务分解
因为浏览朋友圈功能 QPS 较大,且需要融入广告穿插能力和算法,再考虑到应用服务扩展性和降低耦合度,不相互影响的考虑下,故而将浏览服务和发送服务拆分到 2 个微服务中
四.朋友圈服务架构以及说明
4.1 发送朋友圈
不同用户数据存在在多机房 IDC, 视屏、图片存在在 OSS 对象数据库中并推送至 CDN 服务器,文本、链接、评论、点赞以及视屏、图片地址存在在缓存以及 LSM 数据库中
Redis 缓存存储用户好友时间顺序朋友圈列表,以及自身发表的朋友圈信息(可存储近期数据),长期数据可以从关系数据库加载。
需要具备跨 IDC 通知机制,同步好友间朋友圈数据
LSM 数据库分为冷热数据库,热数据库存储一年内朋友圈信息,冷数据存储一年外数据
proxy 模块进行数据分片,扩容、迁移等能力
消息队列系统进行削峰填谷,减少数据库实时访问压力
用户朋友圈发布完成后可写入本地缓存,在读取时可以实时获取,提升体验
4.2 浏览朋友圈
1.从本地缓存获取已经被本地缓存的朋友圈数据
2.若有新数据则调用服务,近期朋友圈最新数据从缓存获取,翻页加载长期朋友圈数据加载 LSM 数据库获取
3.图片、视屏等静态资源从就近 CDN 获取,或者从 OSS 服务器获取后推送至 CDN
图就不画了
评论