写点什么

「架构实战营」模块五《如何设计业务高性能高可用计算架构》作业

作者:DaiChen
  • 2022 年 1 月 20 日
  • 本文字数:1229 字

    阅读完需:约 4 分钟

设计微博系统中“微博评论”的高性能高可用计算架构。


【作业要求】

基于模块 5 第 6 课的微博实战案例,分析“微博评论”这个核心场景的业务特性,然后设计其高性能高可用计算架构,包括但不限于如下内容:

1. 计算性能预估(不需要考虑存储性能);

2. 非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务;

3. 热点事件时的高可用计算架构。


【提示】

1. 分析方法对照“看微博”和“发微博”的案例。

计算性能估算

2020.9 月月活 5.11 亿,日活 2.24 亿(参考《微博 2020 用户发展报告》)。

评论微博

假设平均每天每人发 1 条微博(只考虑文字微博),平均一条微博评论 10 次,则评论微博的次数为:2.5 亿 * 10 = 25 亿。

大部分人评论微博时间集中在早上 8:00-9:00 点,中午 12:00-13:00 点,晚上 20:00-22:00 点,假设这几个时间段评论微博总量占比为 60%。因此评论微博的平均 TPS 计算如下:25 亿 * 60% / (4*3600) ≈ 100k/s。

看微博评论

假设平均一条微博评论查看人数有 10 次,则看微博评论的次数为:25 亿 * 10 = 250 亿。

大部分人看微博评论的时间段和评论微博的时间段基本重合,因此看微博评论的平均 QPS 计算如下:

250 亿 * 60% / (4*3600) ≈ 1000k/s。

非热点事件时高性能计算架构

业务特性分析

【评论微博】是一个典型的写场景,可以用负载均衡。

【看微博评论】是一个典型的读场景,由于评论微博发了后不能修改(只能删除),因此非常适合用缓存架构,同时由于请求量很大,负载均衡架构也需要。

架构分析

用户量过亿,【评论微博】和【看微博评论】都要用多级负载均衡架构。覆盖 DNS -> F5 -> Nginx -> 网关的四级负载均衡架构。

【看微博评论】需要用多级缓存架构。覆盖 App 缓存/浏览器缓存 -> CDN -> Web 容器缓存 -> 进程内缓存 -> 分布式缓存的五级缓存架构。

架构设计

负载均衡算法选择

【评论微博】依赖登录状态,登录状态一般都是保存在分布式缓存中的,因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法

【看微博评论】不依赖登陆状态(游客可直接查看),因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法

服务器数量预估

【评论微博】涉及几个关键的处理:内容审核(依赖审核系统)、数据写入存储(依赖存储系统)、数据写入缓存(依赖缓存系统)。因此按照一个服务每秒处理 800 来估算,完成 100k/s 的 TPS,需要 130 台服务器(包含 5 台预留量)

【看微博评论】业务服务器数量估算假设 CDN 能够承载 90% 的用户流量,那么剩下 10% 的请求进入系统,则请求 QPS 为 1000k/s * 10% = 100k/s。假设单台业务服务器处理能力是 1000/s,需要 105 台服务器(包含 5 台预留量)

高性能整体架构设计

多级负载均衡架构


多级缓存架构


热点事件时高可用计算架构

热点事件微博【评论微博】可以采用限流,但需要保证评论尽量不丢失。采用漏桶算法进行限流,桶的大小可以设置无限大(保证微博评论写请求不丢失),达到写缓冲的效果。


热点事件微博【看微博评论】存在缓存热点问题,可以采用多副本缓存


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

DaiChen

关注

还未添加个人签名 2018.11.12 加入

还未添加个人简介

评论

发布
暂无评论
「架构实战营」模块五《如何设计业务高性能高可用计算架构》作业