架构实战营作业 M02
朋友圈复杂度是一个业务复杂度低、质量复杂度高的业务。整个朋友圈业务可以分为下面 3 种业务:
在网上没有找到具体的业务指标数值。但是从质量要求从高到低排序应该为:看朋友圈 > 朋友圈互动 > 发朋友圈。
发朋友圈
发朋友圈从抽象角度讲,其实就是将一条动态信息入库的过程。但是主要考虑到看朋友圈的高性能要求,可以将朋友圈动态时间线放在 Redis 中,避免从数据库中读取大量的“动态”记录。
进程模型和网络模型按照之前的即可,没有“创新”的意义。而由于发朋友圈本质是一个 Insert 的动作,所以计算高性能和存储高性能上主要考量一个负载的均衡。
看朋友圈
看朋友圈的业务主要是从浏览朋友圈的动态时间线,以及对应动态的评论等信息。得益于发朋友圈时对时间线做的缓存,看朋友圈业务能够简化为从缓存中读取时间线数据。又譬如评论等信息,也可以视场景走这样一套“缓存+关系型数据库”的形式。形式雷同,下面没有体现出来。
朋友圈互动
朋友圈互动主要涉及朋友圈动态的评论、点赞等功能。但是和红包业务不同的是,评论、点赞数据的生命周期可能相对更长、对应数据量也更大。所以这块自己考虑是不是使用传统数据库形式更加合适。但是如果业务指标硬要求高,可以考虑从时间维度来拆分互动数据。如最近 3 天的互动数据在 Redis 中,历史归档数据用关系型数据库或其他方案。
架构图如下:
总结
整体架构 - 单机房示例:
评论