写点什么

模块 5 作业

作者:Asha
  • 2021 年 12 月 02 日
  • 本文字数:897 字

    阅读完需:约 3 分钟

用户行为建模和性能

根据第 6 课的案例中的数据:日活:2.5 亿/人,我们假设如下:

高峰 4 小时:30%人发微博、60%人看微博、10%评论微博

其他时间段(10 小时): 30%发微博、60%人看微博、10%人评论微博


发微博的数量:

TPS:2.5 亿 * 30% / (4 * 3600) ≈ 5.5 K/s(高峰 4 小时)。

TPS:2.5 亿 * 30% / (10 * 3600) ≈ 2.1 K/s(其他 10 小时)。

评论微博的数量:

TPS:2.5 亿 * 10% / (4 * 3600) ≈ 1.8 K/s(高峰 4 小时)。

查看评论:

QPS: 2.5 亿 * 10*10% / (4 * 3600) ≈ 18 K/s(高峰 4 小时)。

发评论

业务特性分析:

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

架构分析:

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

架构设计:

1 负载均衡算法选择:发评论的时候依赖登录状态,登录状态一般都是保存在分布式缓存中,因此发评论的时候,则请求发送给任意服务器都可以,这里选择轮询或者随机

2 缓存选择:

因为发评论不需要实时处理,因此可以把评论内容暂时存放到 app 或单体页面中,后端收到请求后把数据存放到消息队列中(使用写缓冲减少请求量降低服务器压力),最后业务系统处理。所以需要页面缓存和服务器缓存(如消息队列)

2 业务服务器数量估算:

发评论设计几个关键的处理:内容审核(依赖审核系统),数据写入存储(依赖存储系统),数据写入缓存(依赖缓存系统),假设 kafka 能接受的最大积压数据(桶的总量为 2G),每个评论大小为 100 个汉字,则最多可以存储 1 千万条评论,因此按照一个服务每秒处理 500 来处理 ,要 3 台服务器,加上一定的预留量,5 台服务器。


微博看评论

选择“hash”算法,假设 CDN 能够承载 90%的用户流量,那么剩下 10%的读微博的请求进入系统,则请求 QPS 为 18K/s * 10% = 1.8K/s,由于读取微 博的处理逻辑比较简单,主要是读缓存系统,因此假设单台业务服务器处理能力是 1000/s,则机器数量为 2 台。

架构图:

缓存架构:


热点微博的评论高可用的计算框架

【业务特性分析】

热门微博写评论:漏桶算法限流,可以放在消息队列里慢慢写入数据库,在上述架构中,已经使用了写缓冲应对,可以使用和普通写评论同样的架构。

热门微博看评论:可以读不到数据,降级


用户头像

Asha

关注

还未添加个人签名 2019.12.26 加入

还未添加个人简介

评论

发布
暂无评论
模块5作业