获得腾讯投资的Dream11平台可以让用户创建由真实玩家组成的虚拟团队,并允许他们根据实际游戏中玩家的数据表现来组织比赛。获奖者将获得积分奖励,每场比赛都有参赛费。该平台提供梦幻板球、足球、卡巴迪和NBA的比赛:
对于 1 亿 Dream11 用户来说,在我们的平台上玩梦幻体育的刺激和兴奋是无与伦比的。他们喜欢创建自己的团队并与其他粉丝和朋友竞争!但是,从后端的角度来看,我们在 Dream11 的流量和参与度变化方面面临着各种挑战,主要是在比赛开始时间之前。为了确保应用程序在用户流量高的关键时刻顺利运行,作为一个团队,我们提出了一个可扩展和可定制的解决方案。因此,我们能够同时运行多场比赛,每秒高效处理数百万个用户请求,而不会影响他们玩梦幻体育的体验。
我们如何管理 Dream11 平台上这种在短时间内剧烈波动的流量变化?
架构支持:
- 超过1亿的用户群
- 用户并发超过550万
- 边缘服务的每分钟请求数 (RPM) 超过 1 亿
- 超过 30K+ 的计算资源来支持峰值 IPL 流量
- 超过 100 多个并行运行的微服务
- 用户兴趣取决于比赛和球员在现实生活中的受欢迎程度,这会影响 RPM 的大小。
- 特定于比赛的事件,例如抛球、小队公告、由用户发布小队公告的团队创建,以及中间时段的事件,例如小门倒下、击中六分球、帽子戏法、突围事件和其他不可预测的因素(例如下雨)。
- 节点的现货Spot 可用性有限且竞争激烈——尤其是在关键时间!
- 如果要考虑 Dream11 的规模,此时步进Step缩放也可能不起作用,因为它仅限于一定数量的节点
- 基于资源的可用性重新平衡或重新安排跨可用区 (AZ) 的节点数量可能会进一步增加与时间有关的供应成本。
- 根据吞吐量创建负载均衡器分片,因为负载均衡器上生成的请求数量有限制。为了基于用户并发性获得更高的吞吐量,需要创建分片并根据服务路由对其进行管理。
- 必须对 ELB 进行预热以应对突然的流量激增。
- 此外,我们的云提供商的功能也有限制。应用程序接口 (API) 调用率因业务而异,在分配资源时需要考虑这一点
- 由于供应的资源数量众多,控制台操作很繁重。
- 扩展到 100 多个微服务的运营开销。
- 我们自产的并发预测模型
- 性能测试和游戏日
- 性能指标和验证:
- 定义应用延迟——为业务服务的可接受延迟
- 识别个人服务能力
- 基准计算和网络吞吐量
- 识别应用程序的故障和饱和点
- 产生突然的尖峰和浪涌以识别对后端基础设施的影响并识别架构中的级联效应
- 测试基础设施边界,包括计算、网络、API 限制和操作。
- 部署优化以减少配置时间
- 完全烘焙的 Amazon 机器映像 (AMI),用于使用应用程序工件进行部署以实现更快的扩展
- 跨可用区配置多种计算实例类型(多样化),减少容量挑战
- Spot 实例的容量优化分配策略
- 成本优化确保 100% 资源在现场运行
- 在现场不可用的情况下通知失败并启用按需供应。
- 加权域名系统 (DNS) 记录以支持 ELB 分片。
- 使用 Scaler 缩放关键时间
- Dream11 的 DevOps 和 SRE 团队精心设计了一个平台“Scaler”,它有助于根据并发预测和性能基准进行主动扩展。
- 基于与预测的并发性和趋势相关的性能测试,系统被输入不同的用户并发块和各自的基础设施,以在比赛前、比赛中和比赛后跨微服务提供。