模块五作业:设计微博评论的高性能高可用计算架构
计算性能预估
用户量:2020 年 9 月月或 5.11 亿,日活 2.24 亿
假设平均每人每天发 1 条微博,则微博每天的发送量约为 2.5 亿条。假设每条微博平均有 3 条评论,则微博评论每天的发送量为 7.5 亿条。
微博评论集中在早上 8 点至 9 点,中午 12 点至下午 1 点,晚上 8 点至 10 点,假设这几个时间段微博评论总量占比为 60%,则这 4 个小时的平均微博评论 TPS 计算如下:
7.5 亿 * 60% /(4 * 3600)约= 30 K/s
非热点事件的高性能计算架构
微博评论是一个典型的写操作,因此不能用缓存,可用用负载均衡。
用户量过亿,微博评论应该要用多级负载均衡架构,覆盖 DNS -> F5 -> Nginx -> 网关的多级负载均衡。
微博评论,可用将请求发送给任意服务器,因此负载均衡算法可用选择轮询或者随机算法。
微博评论对实时性要求不高,可以将微博评论写请求先写入基于漏桶算法的写缓冲中,应用服务器再从写缓冲中获取并处理请求。由于引入了写缓冲,单台服务器处理能力可以大大提高,假设每天服务器可以 3000/s,则总共需要 10 台服务器。
为了不影响写微博业务,可以将微博评论拆分为独立的服务。看微博评论一般是根据微博来关联查询的,写微博是需要记录与微博的关联关系。
热点事件的高可用计算架构
热点事件发生后,可能导致很多用户评论导致热点事件的那一条微博。
微博评论对实时性要求不高,可以对微博评论进行排队+限流的做法。排队需要用户等待更长的时间。为了不丢弃用户的评论写请求限流可以使用基于漏桶算法的写缓冲方式。
评论