架构实战营模块五作业
答案
性能估算
微博日活量 2.5 亿,假设每人每天评论微博次数为 4 次,则评论总次数 2.5 亿*4 = 10 亿次 。大部分的评论微博集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段评论微博总量占比为 60%,则这 4 个小时的平均发微博的 TPS 计算如下:10 亿 * 60% / (4 * 3600) ≈ 4w/s。假设读评论是发评论次数的 100 倍,则 QPS 约为 400w/s。热点微博评论次数、看评论次数都会成倍增长。
业务特性分析
评论微博是写操作,不能使用缓存,需要负载均衡。
看评论是读操作,且评论后一般都不修改,且请求量非常大,需要缓存架构、负载均衡架构。
考虑热点事件
架构分析
读写请求量都非常大,使用 4 级负载均衡架构。
读请求量非常大,使用 5 级缓存架构,尤其 CDN 缓存的设计很关键。
读写请求量级差异很大,把评论微博拆分为评论和看评论连个微服务,针对性优化。
热点事件评论、看评论量都成倍增长。为了保证评论请求不丢失,通过写缓冲方式,先把评论请求写入消息队列,业务服务器从消息队列中拉取请求慢慢处理。看评论采用多缓存副本和应用缓存,分散负载,降低单个服务器压力。
架构设计
负载均衡算法选择
评论微博依赖登录状态,登录状态一般都是保存再分布式缓存系统中,因此评论微博的时候,将请求发送给任意服务器都可以,这里选择“轮询”或随机算法。
业务服务器数量估算
写:一台业务服务器按照 TPS 500/s 来估算,需要业务服务器数量 4w / 500 ≈ 80 台,按照 20%预留量,总共需 100 台业务服务器。
读:假设 CDN 能够承载 90%的用户流量,剩下 10%的读请求进入系统,按照一台业务服务器 TPS 1000/s 来估算,需要业务服务器数量 400w * 10% / 1000 ≈ 400 台,按照 20%预留量,总共需 500 台业务服务器。
评论多级负载均衡架构设计
看评论多级负载均衡架构设计
看评论多级缓存架构设计
评论缓冲架构
评论