- Linux运维最佳实践
- 胥峰 杨俊俊
- 678字
- 2023-01-30 17:08:33
最佳实践13:设计大规模下载调度系统
在游戏运维中,高效地实现用户对游戏客户端的下载,是对CDN等分发系统的核心需求。在盛大游戏运营的大型端游公测首日,CDN的带宽使用量多次超过100Gbps,高峰时甚至达到200Gbps左右。
游戏客户端的下载,和一般的网站类应用使用到的静态文件(如图片、CSS等)具有明显的区别。
·游戏客户端一般较大,目前主流的游戏客户端往往超过10GB。如传奇世界版本号为2.1.0.40发布版为10.9GB。
·用户下载时间较集中。用户对于客户端的下载,对于新游戏来说一般集中于公测前一天、公测首日;对于运营中游戏,一般在新版本外放当天下载量较大。这种用户行为直接导致下载带宽出现集中的高峰。
在这个体量的下载流量下,我们设计了一整套CDN下载调度系统,以应对游戏客户端的高并发下载。
该调度系统有如下特点。
·支持接入多个外部CDN厂商。
·支持接入自有的下载节点。
·实现对下载客户端分流的精确配比。
·多机房同时提供服务。
·分配策略修改实时生效。
该调度系统的架构图如图2-5所示。
操作流程说明如下。
1)运维人员通过配置服务器来配置调度策略,策略内容是对某域名或者URL分配不同厂商的CDN权重。
2)客户端解析到某个调度节点(如调度节点1)然后发送HTTP请求下载游戏客户端URL。
3)DLC调度服务器根据步骤(1)中配置的权重,使用HTTP 302 Location发生,分配该玩家到指定的某外部CDN厂商,Location是NEW_URL。
4)游戏玩家使用NEW_URL请求到外部CDN节点。
5)外部CDN节点进行响应数据返回。
这种架构有以下优点。
·在这种架构中,对单个调度节点来说,使用LVS进行负载均衡后,DLC调度服务器可以横向扩展。
·多个机房使用DNS多A记录进行调度,减少单机房故障导致的影响。
图2-5 大规模下载调度系统架构图