写点什么

架构实战营-模块五作业

作者:无名
  • 2021 年 11 月 29 日
  • 本文字数:863 字

    阅读完需:约 3 分钟

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

【作业要求】

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

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

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

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

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

【提示】

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


答:


用户行为建模和性能估算

微博评论

考虑到微博是一个看得多评论的少的业务,由于绝大部分微博用户看微博的对象是大 V 和明星,因此假设平均一条微博评论次数为 10 次,则微博评论的次数为:

2.5 亿* 10 =25 亿

 

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

25 亿*  60% /(4 * 3600)= 100K/s.

 

业务特性分析

微博评论是典型的写操作,因此不能和缓存。但用户写的评论很快就被其它用户的评论淹盖了,但是评论要尽量不要丢,可以用缓冲(漏桶算法变种-缓冲),可以用负载均衡

 

架构分析

用户量过亿,应该要用多级负载均衡架构,覆盖 DNS -> F5 -> Nginx ->网关的多级负载均衡。

 

架构设计

1. 负载均衡算法选择

微博评论的时候依赖被评论的微博,某个用户微博只能在某台服务器处理,因此微博评论的时候,将请求发送给指定服务器,这里选择 Hash 算法。

 

2. 业务服务器数据估算

微博评论涉及几个关键的处理:内容审核(依赖审核系统)、数据写入存储(依赖存储系统),数据写入缓存(依赖缓存系统),假设微博评论的写缓冲能够承载 90%的用户请求,那么剩下的 10%的写评论的请求进入系统。则 TPS 为 100K/s *10%=10K/s,因此按照一个服务每秒处理 500 来估算,完成 10K/s 的 TPS,需要 20 台服务器,加上一定的预留量,25 台服务器差不多了。



非热点事件时的高性能计算架构,需要微博评论拆分独立的服务,第一点一条微博发出后,可能要过一两天才来评论。第二点一条微博对应的微博评论请求几百万个请求。


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

接口高可用,可以考虑对微博评论限流,可以采用漏桶算法变种 - 写缓冲(用 Kafka 消息队列),队列大小设为 100 万个。


用户头像

无名

关注

还未添加个人签名 2018.03.14 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块五作业