写点什么

架构实战营模块 5 作业

用户头像
Veek
关注
发布于: 2021 年 06 月 05 日

【作业详情】 设计微博系统中”微博评论“的高性能高可用计算架构

【作业要求】 分析“微博评论”这个核心场景的业务特性,然后设计其高性能高可用计算架构,包括但不限于如下内容: 1)计算性能预估(不需要考虑存储性能) 2)非热点事件时的高性能计算架构,需要考虑是否要拆分独立的服务 3)热点事件时的高可用计算架构


1 计算性能预估

用户量预估

用户行为建模

性能需求计算


用户量预估


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


用户行为建模

從發微博、看微博類推到微博評論的用戶行為模式:

本作业假设的是只针对文字微博,现实有图和影音的不在少数,架构设计会有所不同。


发微博

考虑到微博是一个看得多发的少的业务,假设平均每天每人发 1 条微博(只考虑文字微博),则微博每天的发送量约为 2.5 亿条。 大部分的人发微博集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段发微博总量占 比为 60%。


看微博

由于绝大部分微博用户看微博的对象是大 V 和明星,因此我们假设平均一条微博观看人数有 100 次。


微博评论

什么情况会发微博评论?

读微博评论和发微博评论的时间和读微博,发微博的时间基本上是重合的。


看微博也可能会看微博评论,会做

  • 发微博评论

  • 发微博评论的评论


其它的可能的动作

收藏微博评论

对微博评论点赞

转发微博


性能需求计算


從發微博、看微博類推到微博評論加上预备的所需服务器大约 140 台。

计算如下:

发微博:

平均发微博的 TPS 计算如下:2.5 亿 * 60% / (4 * 3600) ≈ 10 K/s

看微博:

看微博的次数为:

2.5 亿 * 100 = 250 亿.

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

250 亿 * 60% / (4*3600) = 1000K/s


微博评论:

发微博评论:


看微博评论:



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

微博是一个读多写少,而且发了就鲜少更动。

但微博评论有点不同,一般是看微博之后,才会顺道看评论,和发评论

以评论区会处在一个写的动作较原发博文来得高。


评论微博可考虑与以下服务独立拆分:

读微博:挑大 V,明星或是自己感兴趣的主题读

发微博:一般人较少发微博,除了记日志

转发微博:针对大 V, 明星的微博会有大量的(百万以上)的转发,应可独立拆分



3 热点事件

热点事件很难预估

高可用套路用预防

有以下几种:

限流/排队/降级/熔断

也會有双机房、三机房增加高可用


微博评论

适合用

限流

漏桶算法变种 - 写缓冲 (Buffer)

漏桶的容量无限,漏桶可以用来写缓冲

例如:Kafka 的消息队列

做到所有的评论都不丢失

也不像秒杀活动涉及到顺位和商品的有限

所以可以不用到排队

但对于热点事件

可以有熔断和降级的机制预防万一


用户头像

Veek

关注

还未添加个人签名 2020.03.05 加入

还未添加个人简介

评论

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