Linux运维最佳实践
上QQ阅读APP看书,第一时间看更新

最佳实践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 大规模下载调度系统架构图