写点什么

微信朋友圈高性能复杂度分析

作者:唐尤华
  • 2022 年 2 月 02 日
  • 本文字数:630 字

    阅读完需:约 2 分钟

微信朋友圈高性能复杂度分析

一、朋友圈复杂度总体分析


朋友圈质量复杂度高,业务复杂度普通


朋友圈复杂度总体分析


质量复杂度分析:

  • 节日、特殊事件高并发

  • 动态扩容、快速访问

  • 评论的跨机房(跨区)时序一致性


二、朋友圈高性能业务指标分析


朋友圈业务参考数据


  • 高性能:

  • 发消息:0.07 万 TPS(高峰 2 小时),赞/评论:0.34 万 TPS(高峰 8 小时)

  • 【节日】:发表 0.14 万 TPS,评论与点赞 0.7 万 TPS

  • 【突发事件】:发表 0.35 万 TPS,评论与点赞 1.5 万 TPS

  • 高可用:

  • 服务区内高可用,北方、南方、海外不同区域;多区域高可用

  • 不同运营商网络之间高可用

  • 可扩展

  • 重大节日、突发事件与活动动态扩容

  • 新业务上线与老业务升级扩容,例如朋友圈支持 20 张图片


参考数据:



三、朋友圈高性能复杂度应对思路

朋友圈高性能复杂度应对思路


3.1 发消息

朋友圈高性能方案-发消息


发消息架构图


3.2 评论

朋友圈高性能方案-评论


朋友圈评论架构图


3.3 动态

朋友圈高性能方案-动态


朋友圈动态架构图

四、朋友圈业务高性能整体架构

朋友圈业务高性能方案-整体架构


朋友圈整体架构图

五、设计理由

微信架构


  • 按照架构设计简单原则:利用微信现有基础设施,如上图

  • 保持现有分层架构,在逻辑层、存储代理层增加朋友圈业务

  • 根据朋友圈业务的逻辑,基于分布式 Key/Value 存储,设计对应的存储结构

  • 在设计动态时,采用拉取(Pull)模式。即在发布消息时,为各用户添加时间线记录。避免推送(Push)模式的计算复杂性,后者在拉取消息时进行计算


朋友圈存储结构示例

结合朋友圈的业务特点,将图片与视频资源采用 CDN


  • 按照架构设计演化原则,在设计中考虑数据中心的扩展

  • 高峰期的数据扩展:Key/Value 适合做水平扩展

  • 基于用户或消息 Key 进行 Sharding


  • 按照架构设计的合适原则,在设计评论功能时需要考虑评论展示的时序问题

  • 采用因果一致性:即先看到因再看到果

  • 本地消息 ID 保持递增,多个数据中心同步评论消息时根据因果进行排序计算


发布于: 刚刚阅读数: 5
用户头像

唐尤华

关注

还未添加个人签名 2018.03.27 加入

还未添加个人简介

评论

发布
暂无评论
微信朋友圈高性能复杂度分析