写点什么

架构实战营模块二作业

用户头像
Clarke
关注
发布于: 1 小时前

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,这样也不造成太多数据冗余。这样可以大大减轻读动态的时候的业务复杂度。


用户头像

Clarke

关注

还未添加个人签名 2018.04.15 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块二作业