写点什么

架构实战营第 10 期 - 模块二作业:微信朋友圈高性能复杂度分析

作者:kaizen
  • 2022-12-18
    北京
  • 本文字数:686 字

    阅读完需:约 2 分钟

微信朋友圈功能在 质量四象限中,个人认为属于 质量复杂度低业务复杂度低的象限中。

原因是:

  1. 业务复杂度上,朋友圈的功能大致分为:查询,发布/删除,评论/点赞,草稿箱。很常见的增删查三个功能。并没有复杂的业务逻辑。

  2. 质量复杂度上,虽然微信的质量复杂度很高,但是单独分析朋友圈功能的话,它所提供的非实时的社交需求,则会让他并没有高质量的要求。用户可以容忍自己的动态偶尔发布失败,评论失败等情况。并不会影响特别到用户需求。在这个场景下不会有很急迫的事情。

如何设计出高性能的微信朋友圈?

从高性能复杂度模型来看,微信朋友圈是依托在微信架构之上的,所以我们只需要考虑集群模式下的高性能。

集群分为:计算高性能,存储高性能,然后均有任务分配与任务分解

我们可以发现朋友圈的功能都类似 增删查,所以我们并不对架构进行功能分解。

查询功能

用户查看自己好友们的朋友圈,也就是两个 filter 条件,好友们的 IDs 以及时间区间。我们提高高性能的方法便是,将好友朋友圈以好友 ID 进行 hash 进行分库分表存放,从而提高查询性能,同时再对近 3 天的朋友圈进行热数据存放,将近期数据存放在缓存中。同时对朋友圈内容分为结构化内容与非结构化内容,飞结构化内容存在对象存储中,增加可承载的访问频率。 朋友圈的内容是按时间线进行排序的,且内容只能删除不能更改,因此朋友圈内容每个好友按时间线倒序存储,时序性存放,增加查询效率。

发布/删除功能、评论/点赞功能

这几个功能,与查询功能近乎一致,也是时序性数据。同样利用 hash 进行分库分表存放。

总体架构设计

由朋友圈地域特点明显,因此我们直接沿用微信的异地多活,多机房,根据位置自动选择最近的机房。


用户头像

kaizen

关注

还未添加个人签名 2019-09-23 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营第 10 期-模块二作业:微信朋友圈高性能复杂度分析_「架构实战营」_kaizen_InfoQ写作社区