架构训练营 - 模块二 - 作业
流量分析
每天有 7.8 亿人进入朋友圈,1.2 亿人发朋友圈。
QPS:按照平均每秒 2 万的查询请求,高峰期按照 5 倍计算,有 10 万的并发量。
TPS:按照平均每秒 2000 的插入请求,高峰期按照 5 倍计算,有 1 万的并发量。
复杂度分析
业务复杂度
朋友圈业务包含收发动态,评论、回复、点赞等功能,从业务复杂度上看并没有很高,虽然非金融类业务,但是朋友圈的质量复杂度相对比较高。综上,朋友圈属于业务复杂度低,质量复杂度高的业务。
性能复杂度
朋友圈对于实时性、一致性要求没那么高。允许有一定的延迟,可以考虑最终一致性。不丢数据即可。
存储模型
朋友圈动态是典型的非修改类的数据,只有插入、删除操作。这类数据挺适合 KV 数据库,LSM 存储模型。
考虑到动态还有很多非业务类字段,KV 数据库并不合适。考虑可以使用 MongoDB。如果有比较成熟的 Mysql 分片架构,也可以使用 Mysql。
朋友圈动态数据会在客户端缓存,而且对外很少有大范围的数据检索需求,可以考虑缓存用户一段时间的动态数据到 Redis。
动态数据和评论数据因数据结构不同,考虑使用不同的存储模型。
评论