week5 作业
评论微博:
DAU 2.5 亿,10%的人评论微博,2500w 条微博评论。假设行为集中在 8~9,12~13,20~22,共 4hour。2500w/4hour 稍高于 1w/s,峰值性能需要满足 1w/s。
业务特点:
用户能立刻看到自己发的评论,其它人可以延迟看到某个用户发的评论。评论发出后不能丢失。
高性能:
多级负载均衡。写入不要加缓存。随机选择一台应用服务器发送请求。
评论先写 redis 再发到消息队列,写入 redis 后返回客户端写成功。通过 consumer 读消息队列写入 db。
高可用:
服务器 1w/1000 至少需要 10 台。服务器无状态,可以动态扩容。
redis 高可用 sentinel 主备*3 至少 6 个 redis 服务进程。至少要 3 台服务器。
db 需要主备高可用。至少要 2 台服务器。
消息队列另需服务器。
看评论:
假设所有人都看评论,高峰时期和发评论重合,每人看 10 条评论,峰值性能需要 100w/s。
高性能:
多级负载均衡,可以使用 cdn 服务大部分请求量。多级缓存可以降低请求量。假设 10%的量需要应用服务器处理。
每台机器处理 1000req/s,共需要 100 台服务器。
高可用:
假设 1 台 redis 能处理 5w/s 的请求,有 3 台左右就足够了。
对于热点事件:
评论服务读可以降级,推迟用户能看到最新评论的时间。可以熔断,保障响应时间上限,同时不对存储造成过大压力。两者能在不影响系统可用性的情况下保证用户可以看到一部分评论。
写服务需要异步处理,比如发消息然后返回,用专用任务写数据库。不能限流,用户不希望写的评论丢失。
评论