写点什么

架构实战营模块 5 作业

作者:天琪实刚亮
  • 2022 年 5 月 15 日
  • 本文字数:811 字

    阅读完需:约 3 分钟

用户量估算

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

关键行为:

1. 发评论;

2. 看评论

本作业主要针对评论微博和看评论两个关键行为。根据业务重要性及耗时容忍度排序, 看微博 < 发微博 < 看评论 < 发评论。


按照课程中的预估,每天微博发送量约为 2.5 亿条。看微博量 250 亿次。发评论、看评论的数据量缺少支撑。


因此假设发评论量也为 2.5 亿条。看评论量约为看微博量的 30%,大约 75 亿次。


假设 4 个小时内数据量占比 60%,则:

发评论 TPS 为 2.5 亿 * 60% /(4*3600)  ≈ 10 K/s

看评论 QPS 为 75 亿 * 60%/(4*3600)  ≈ 300K/s

计算架构设计

服务拆分设计

发评论和看评论服务拆开

理由:

1、发评论和看评论并没有特别强的关联,举个例子发评论以后并不需要被马上看到

2、发评论和看评论的性能差距比较大,特别是热点微博的热点评论,在架构设计上也有一些差别,所以拆开比较好设计和维护

负载均衡架构设计

发评论和看评论均采用 5 层负载均衡:

1 层负载均衡:dns,采用双机房负载均衡

2 层负载均衡:F5

3 层负载均衡:LVS

4 层负载均衡:nginx

5 层负载均衡:网关

业务服务器量预估

发评论也涉及到审核等多个步骤,评估 MQ 的性能,以及服务器消费性能,因此按照一个服务支撑突发流量 2000/s 计算,完成 10K/s,需要 5 台服务器,加上一些与流量 8 台差不多了。


多级负载均衡架构


热点事件高可用架构设计

请求量预估

由于热点事件的时间和流量的不确定性,因此不太好预估请求量

限流/缓冲设计

发评论

由于发评论的数据是不能丢的,否则会造成较差的用户体验,因此发评论不适合使用类似令牌桶算法的限流策略;

这里可以使用消息队列实现缓冲,设计理由:

1、消息队列有出色的消息积压能力

2、消息队列能做到削峰填谷,

3、评论实时性要求没有很高,发出去 1 分钟后才展示出来并没有太大的影响

看评论

看评论是允许消息丢失的,因为丢失后无非就是重新请求一次,并没有太大的影响,那么就可以使用我们常用的令牌桶算法,也可以使用漏桶算法

用户头像

软件开发老兵 2022.03.04 加入

从事java开发十多年的一位软件开发老兵

评论

发布
暂无评论
架构实战营模块5作业_天琪实刚亮_InfoQ写作社区