模块五作业
微博评论包括发评论和看评论两种业务场景。
发评论:
假设每条微博下面评论数有 0.1 条,则微博评论每天的发送量约为 2500w 条。
大部分的人发微博集中在早上 8:00~9:00 点,中午 12:00~13:00,晚上 20:00~22:00,假设这几个时间段发微博总量占比为 60%,则这 4 个小时的平均发微博的 TPS 计算如下:
2500w * 60% / (4 * 3600) ≈ 1 K/s。
按照每台服务器每秒处理 500 来估算,需要 2 台服务器,留一定的冗余量,需要 3 台发评论服务器。
看评论:
假设每条评论观看人数有 100 次,则观看微博评论的次数为 25 亿次,同理,看微博的 TPS 为 100 K/s。
由于看评论人数远大于发评论人数,为了避免看评论人数过多影响发评论的服务,因此发评论和看评论的服务应该分开。
由于 90%的看评论能够直接从 CDN 缓存中获取,因此服务器实际 TPS 为 10K/s,按照每台服务器每秒处理 1000 来估算,需要 10 台服务器,留一定的冗余量,需要 12 台看评论服务器。
高性能:
发评论和看评论用户量均过亿,所以都采用多级负载均衡架构,,覆盖 DNS -> F5 -> Nginx -> 网关的多级负载均衡,负载均衡算法采用轮询或随机算法。发评论为写操作,因此不能用缓存。看评论使用多级缓存,由于看前三页评论的用户数远大于其他页的用户数,其中 CDN 负责缓存前三页的微博评论。
热点事件高可用:
热点事件微博发评论可以用漏桶算法,尽量减少丢弃请求。
评论