写点什么

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

作者:Geek_f3e842
  • 2022 年 2 月 13 日
  • 本文字数:557 字

    阅读完需:约 2 分钟

一、关键场景分析

【关键场景和对象】

  • 人员

  • 添加 / 删除 好友

  • 动态

  • 发 / 删除 动态

  • 点赞动态

  • 浏览动态

  • 评论

  • 发 / 删除 评论

  • 查看评论


二、架构设计

1. 高性能复杂度分析

【访问量评估】

  • 发动态 / 评论 / 点赞等操作,TPS 为万级别。

  • 浏览朋友圈,QPS 为十万级别。


【架构分析】

  • 计算高性能分析

  • 缓存模型

  • 朋友圈动态缓存:

  • 朋友圈动态 Feed 流,可以用 Redis 缓存,提升朋友圈的查询效率。

  • Redis 只需要缓存动态的 id,从缓存查询 Feed 列表后,再从数据库查询详细动态信息。

  • 当账号发动态后,更新这个帐号所有好友的 Feed 缓存。

  • 任务分解

  • 人员,动态和评论等业务场景比较简单,可以不做分解,放在一个朋友圈后台服务里实现。

  • 任务分配

  • 后台服务的负载比较大,通过水平扩容,增加服务节点的方式来解决。

  • 部署方式,可以用容器化部署,k8s 来做容器管理,实现动态扩容。


  • 存储高性能分析

  • 存储方式

  • 图片等资源文件:可以存到统一的云存储服务里(文件服务器),支持 CDN 访问和自动容灾备份。

  • 业务数据:可以存到关系型数据库 MySQL,分布式数据库 PolarDB / OceanBase,或 NoSQL 数据库 Tablestore / MongoDB 里。

  • 数据分片

  • 可以以微信 ID 为维度进行业务数据的分库。

  • 任务分配

  • MySQL 可以用 ShardingJDBC 方案做读写分离,只读节点数可以根据流量来增加。

  • Redis 缓存用集群方式部署。

  • 如果用分布式关系数据库或 NoSQL,直接支持分布式存储。

2. 架构设计

【部署架构图】


用户头像

Geek_f3e842

关注

还未添加个人签名 2021.01.23 加入

还未添加个人简介

评论

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