架构实战营模块二作业
1)分析微信朋友圈的复杂度。
a)微信朋友圈业务复杂度,微信朋友圈业务并不复杂,简单讲就是分为发布动态,读取动态,点赞/评论,这三个部分。
b)高性能复杂度分析
估算微信朋友圈各个功能的 TPS 和 QPS,海量数据加上高 TPS/QPS,性能方面的质量复杂度是要求较高的
c)高可用性复杂度分析
朋友圈由于是一个免费的服务。故障如果 5 分钟内可以解决,应该也能接受。但是如果超过 50 分钟还没恢复,由于用户众多,应该也会影响腾讯/微信的声誉,也会造成一定的损失,因此 5 个 9 的可用率也是需要保证的。因此,业务服务器以及存储的异地多机房部署也是必须的。
2)微信朋友圈架构设计方案图
以上是发动态架构设计
以上是看动态架构设计
以上是点赞的架构设计
设计理由:
1)考虑海量数据的数据,以及高 TPS,考虑使用 HBase 的大数据存储方案。(如果已经有和 Hbase 性质类似的存储也可以)
2)同样的原因加上高可用的需求,需要按用户 pin 一致性 hash 去做异地多中心的 单元化设计。单数据中心容易遇到瓶颈,且无法容灾。
3)单个数据中心,可以再根据用户 pin 一致性 hash 去做分库分表处理,进一步分散存储压力。
4)对于热点数据,比如朋友圈的快照(不包括最近更新)可以做缓存处理,减轻 Hbase 压力同时,加快打开朋友圈的速度。
5)发动态,可以通过异步发消息比如 KAFKA,去异步写入关注好友的时间线。只需要插入相关动态的 id,这样也不造成太多数据冗余。这样可以大大减轻读动态的时候的业务复杂度。
评论