架构训练营模块二作业
题目
分析下微信朋友圈的高性能复杂度
1. 朋友圈服务的复杂度
朋友圈属于业务复杂度低,质量复杂度高
业务复杂度低
•主要业务:发布新内容/点赞评论/加载新内容
质量复杂度高
•大流量:微信用户基数大,每时每刻有海量请求
•高可用:即使小部分用户无法使用朋友圈,也会是社会热点新闻,对公司声誉造成影响
•非强一致性:用户不需要立即阅读最新发布的内容,用户可以容忍几分钟的延迟
•分区可容忍:即使不同用户同一时刻看到的内容不一致也是可以接受的,只要最终一致即可
2.朋友圈服务的高性能方案
发布新内容 / 点赞评论高性能方案
加载新内容高性能方案
3.朋友圈架构图
只需任务分配器保证负载均衡,Nginx 即可
Redis 用来缓存文本/链接地址,CDN 用来缓存图片/短视频
文本内容,链接地址存入 MySQL,图片存储在专用多媒体安文件服务器
发布内容,评论点赞是纯写入操作,写入主数据库服务器
加载新内容是读取操作,从从数据库服务器读取。主从数据库服务器间可以用异步/半同步的方式复制数据
所有已加载的朋友圈内容都缓存在用户手机内,在确认内容没有被修改/删除的情况下,不需要重复加载。
Redis/CDN 内缓存 N 天内的数据(N 可以是 2~3 天,或者 1 周).过于老旧的内容(>1 星期)访问量非常稀少
评论