写点什么

架构实战营 第 6 期 模块五课后作业

作者:火钳刘明
  • 2022 年 5 月 09 日
  • 本文字数:1103 字

    阅读完需:约 4 分钟

作业要求

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

【作业要求】

基于模块 5 第 6 课的微博实战案例,分析“微博评论”这个核心场景的业务特性,然后设计其

高性能高可用计算架构,包括但不限于如下内容:

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

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

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

【提示】

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


1. 计算性能预估

根据之前看微博的估算

假设看微博时肯定会看评论,所以看评论的平均 QPS 也是 1000K/s

假设看微博的人中每 10 个有 1 个会发表评论,则发评论的平均 TPS 为 100K/s


2. 高性能高可用计算架构分析

因为发评论和看评论的功能相对独立,可将服务拆分为“发评论”和“看评论”。

2.1 发评论

【业务特性分析】

发评论也是一个典型的写操作,因为不能用缓存,可以用负载均衡。

【架构分析】

考虑 TPS 比发微博还要高,应该要用 4 级负载均衡架构,覆盖 DNS -> F5 -> Nginx -> 网关的多级负载均衡。

【架构设计】

  1. 负载均衡算法选择

发评论的时候需要登录,并且评论要关联到某一条微博。所以登录状态需要保存在分布式缓存中。

不考虑热点事件,评论和其微博的关联关系可保存在分布式数据库中。这样将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。

  1. 业务服务器数量估算

按照一个服务每秒处理 500 来估算,完成 100K/s 的 TPS,需要 200 台服务器,加上 20%的预留量,需要 240 台服务器

2.2 看评论

【业务特性分析】

看评论也是一个典型的读操作,所以非常适合缓存架构。同时由于请求量很大,负载均衡架构也需要。

【架构分析】

请求量过亿,应该要用多级缓存架构,尤其是 CDN 缓存,是缓存设计的核心。。

【架构设计】

  1. 负载均衡算法选择

游客都可以直接看微博和评论,因此将请求发送给任意服务器都可以,这里选择“轮询”或者“随机”算法。

  1. 业务服务器数量估算

假设 CDN 能够承载 90%的用户流量,那么剩下 10%的读评论的请求进入系统,则请求 QPS 为 1000K/s * 10% = 100K/s,由于读取微博的处理逻辑比较简单,主要是读缓存系统,因此假设单台业务服务器处理能力是 1000/s,则机器数量为 100 台,按照 20%的预留量,最终机器数量为 120 台

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

负载均衡整体架构


多级缓存整体架构


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

热点事件时,虽然只有一两条微博,但引起大量用户在短时间内对其发表评论和读取评论,给系统造成很大压力。


【发评论】

对热门微博发表的评论,考虑用“漏桶算法”。为了减少丢失评论,可以将队列设的大一点。


【看评论】

可以考虑“多副本缓存”,由于评论其实也有热点评论,大多数用户其实也只看热点评论。可考虑在应用内缓存热门微博的同时,缓存其下属的热门评论。


用户头像

火钳刘明

关注

还未添加个人签名 2021.07.02 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 第 6 期 模块五课后作业_架构实战营_火钳刘明_InfoQ写作社区