容器将改变游戏服务器托管行业

在过去的12个月中,Docker为游戏服务器开发了一些令人兴奋的产品。

核心产品已经变得更加成熟,用户基础已经大大增加,并且出现了许多高级功能,从而解决了游戏服务器和其他自带应用程序容器化的许多核心障碍。 我们还看到了许多令人兴奋的新产品和黑客技术,它们展示了容器技术和游戏服务器的一些潜在组合。

作为一个对游戏充满热情的软件工程师,我在业余时间从事与游戏相关的项目。 如果有机会,我还将讨论游戏服务器自动化 。 在本文中,我将研究Docker世界中的最后12个月如何影响游戏服务器和整个游戏世界。

尽管Docker在Web服务领域已被广泛接受,但在游戏行业中采用的速度却慢得多。

传统上,这个行业高度关注截止日期和可交付成果,而不是可重用代码,开发人员经验或代码库寿命。 这种以交付成果为中心的发展促进创新,但主要是在核心产品的范围内。 因此,游戏行业在其核心优势(人工智能,渲染,物理,分布式仿真和预测等)方面进行了巨大的创新,但在边缘服务或附带服务中带头的新技术却少得多。

因此,Web服务行业倾向于在公共API和工具,容器技术以及新语言和框架等领域取得领先。 将其与游戏行业中典型的封闭源代码,编译产品相结合,可以清楚地了解为何尽管具有明显的适用性,但Docker和其他容器技术却没有蓬勃发展。 容器可帮助解决许多行业共有的许多问题,尤其是对游戏服务器至关重要的那些问题,例如可移植性,依赖性和资源控制。

这并不是说Docker尚未进入行业。 Improbable.io一直在使用Docker来为其仿真平台提供动力,今年初, EA 就如何使用Docker进行了精彩的演讲 。 两种情况都是使用Docker托管游戏服务器,但托管的是高度自动化的平台。

托马斯·肖(Thomas Shaw)在DockerCon 2015上也发表了精彩的演讲,内容涉及使用Docker推动文化变革Demonware将Docker工具集用作其开发流程的一部分,以帮助支持长期运行的项目,并减少跨项目的广泛依赖关系带来的问题。 这是一个非常平易近人且广泛适用的方式使用Docker的好例子,无论最终产品或托管解决方案是什么。

Docker中游戏服务器的当前障碍

如我们所见,在可以应用通用工作流或应用程序仅在集中的高度自动化托管环境中运行的情况下,Docker已被游戏行业所采用。 这些入侵对于整个游戏服务器而言都是个好消息,而从适应容器化的角度来看,这无疑将大大受益。

当前,游戏服务器有以下几种口味:

  1. 独家托管。 像EA这样的公司使团体很难运行他们自己的游戏服务器,但它们确实为游戏玩家提供了不错的服务器池,供他们用于公共和私人比赛​​。 这种同质的游戏服务器环境意味着容器化易于采用,并使游戏服务器高度自动化。 通过mods和自定义游戏模式,它没有太多的创新空间。
  2. 未托管。 当大型多人游戏不是游戏的功能时,很少有游戏玩家中的一个经常在短时间内充当主机,从而消除了对专用游戏服务器的需求。 在这种情况下,服务器通常会集成到游戏客户端本身中,从而导致任何容器化成为问题。 由于游戏是本地托管的,因此游戏玩家确实倾向于对内容有更多的控制权。
  3. 混了 在大多数情况下,游戏服务器附带一个供用户运行的专用服务器,但开发人员会提供一组官方服务器来保护玩家的游戏体验。 使用专用服务器,用户可以按照自己认为合适的任何方式托管,这就是容器化选项的所在。这是我们将重点关注的领域。

这些不同的使用模式极大地影响了游戏服务器管理员的类型。 显然,在托管环境中,这很可能是由运行大量服务器的自动化支持的一组开发人员。

当有专用服务器可用时,用户群将变得更加多样化。 除了典型的托管平台(由开发人员本身或在独立组织中),您通常会发现较小的游戏组和氏族仅在平台上或独立地托管几个服务器,而单个游戏玩家通常在一个服务器上托管服务器。暂时的基础。

这些小组的技能水平发生了巨大变化,这极大地影响了是否采用Docker之类的技术。 设置越简单,管理员的技术经验越低,用户使用非标准托管方法(例如容器化)的可能性就越小。

除此之外,游戏服务器的多样化技术性质清楚地说明了为什么Docker不是通用组件。 鉴于在持久性,配置和网络方面构建不同游戏服务器的复杂方式,很明显,游戏服务器只是对容器增加了一些限制。

仅通过使用容器就可以很好地解决许多与依赖关系有关的问题,而其他问题则不那么容易解决。 IP通常会在游戏服务器上处理很多旅行,以使其受到用户的喜爱,而将高可用性功能作为游戏服务器的一部分的想法通常与开发人员无关。

有关标准化,复杂性和理解性的这些问题使我们清楚了为什么在容器中托管游戏服务器的驱动器更少了。 尽管如此,某些最早的容器映像还是Minecraft和其他游戏服务器的爱好者实现。

容器确实解决了许多常见问题,例如隔离,资源控制,速度和可移植性,就像游戏服务器在其他地方一样。 游戏服务器托管行业中的许多行业都是由速度/成本指标驱动的,该指标表示为每个插槽的成本值。 容器的潜在效率和速度使容器化成为该行业的理想选择,但是迄今为止采用的障碍阻碍了其广泛使用。

2015年最具颠覆性的Docker变化

在过去的12个月中,核心Docker产品和其他产品发生了许多变化,这将对游戏服务器的容器化产生巨大影响。

抢救

可以说,今年以来最引人注目的增加是对CRIU的支持,在DockerCon 2015Quake迁移演示中完美展示了这一点

这提供了一个早期示例,说明了如何将CRIU用作容器基础结构的一部分,从而可以在不造成中断的情况下实时迁移运行中的应用程序。 CRIU应该通过基本的runC库进入核心的Docker功能集。

由于CRIU保留内存,进程甚至开放的套接字,因此它应该与不同的游戏服务器以及许多其他类型的应用程序广泛兼容。 这意味着大多数现代游戏服务器都可以简单地从一台主机移动到另一台主机,甚至跨数据中心也可以,尽管有一些预期的滞后,但仍希望连接的用户保持连接状态。

显然,对于大多数游戏服务器来说,这是一个实质性的变化,在这些服务器中,不支持大型Web服务的群集和其他典型功能,并且在很大程度上取决于相关服务器的网络体系结构。 因此,这可能与许多现成的游戏服务器不兼容。

Docker插件

WeaveCalico和其他容器网络技术已经存在了一段时间。 但是,随着Docker插件框架的添加,这些将更易于访问。 体积插件支持也很重要,但是持久性通常在游戏服务器功能中的重要性要小得多。

许多游戏服务器会向主服务器列表进行自我注册,并自动报告其IP地址和端口。 这允许客户端自动定位并连接到游戏服务器,但是它假定了一个简单构建的网络堆栈,并且与容器范例不兼容。

通过使用网络插件,我们可以使用高级路由方法使容器IP在基础架构中成为一流的。 这不仅使动态路由变得更加简单,而且还带来了额外的好处,那就是在游戏服务器跨堆栈迁移时,允许将IP地址附加到游戏服务器的后续实例。 这是至关重要的,因为在许多情况下,服务器偏爱方法仅涉及存储连接信息中的IP和端口。

最重要的是,通过使用Docker网络插件,可以将CRIU功能集添加到具有更复杂的网络架构的更广泛的游戏服务器列表中。

牧场主和SpotInst

11月,Rancher 宣布了SpotInst集成 。 这种集成使使用SpotInst之类的服务托管任何类型的基础架构的复杂性抽象化了,这对于托管行业来说是个好消息,因为托管行业的底线就像游戏服务器行业一样。

AWS竞价型实例Google可抢占式VM均临时使用备用群集容量,并保留在很短的时间内撤销和删除VM的权利。 通常,保证正常运行时间的主机对于游戏服务器而言是一种廉价且方便的选择,因为很少有人期望服务器具有较高的正常运行时间。 在许多情况下,重新启动和频繁断开连接是常规的一部分。

借助SpotInst集成,Rancher用户可以在由动态竞价型实例组成的Docker集群上托管容器,而无需引入管理容器迁移和主机替换的复杂性。

码头工人

Minecraft的 Docker mod在DockerCon EU上展出。 与游戏相关的讨论和黑客攻击一直很流行,这也不例外。 本着Docker Doom的精神,该模块允许用户使用游戏本身中的块来创建和控制容器。

看到集成和控制复杂系统的新方法总是很棒。 就我个人而言,我迫不及待地想看到太空工程师的mod,尽管这种mod的实际用途受到一定限制。 就游戏服务器而言,这使得通过相关媒体将容器的原理更容易地向以游戏为重点的读者进行讲授。

这对2016年意味着什么?

显然,游戏行业的采用率正在增加,并且Docker产品和容器生态系统都在以极大地受益于游戏服务器的方式发展。 我们完全可以期望看到更多的大型自托管公司加入EA ,并将Docker用作其平台的一部分,以及游戏开发团队将Docker继续集成到其开发工作流中。

我认为将更有趣的是CRIU,SpotInst和网络插件对整个公共游戏服务器托管行业的影响。 在竞争激烈的市场中,这些都是极具破坏性的功能,但是在更广泛的采用方面仍然存在许多障碍。

Docker的学习曲线很高

许多游戏服务器管理员来自仅限Windows的环境,并且大多数人仅对服务器管理和托管有足够的了解,才能启动并运行服务器。 Windows支持已经大大减少了这种变化,Dockercraft之类的工具帮助人们了解了核心概念。

没有两个游戏服务器是相同的

不同的游戏服务器具有不同的应用程序和操作系统依赖性,而Docker是解决此问题理想工具

尽管这确实可以解决应用程序依赖性,但不同游戏服务器的操作方式仍然存在很大差异。 有些具有交互式控制台, 并向stdout写入机密 。 不同的服务器使用不同的配置方法,并且具有需要持久性的不同组件。

封闭源

绝大多数游戏服务器是封闭源应用程序,默认情况下,它们并不是特别易于容器化。 以标准化为目的实施社区要求的变更可能非常困难。

随着Docker在游戏行业中获得更广泛的采用,希望这将推动游戏服务器实施成为更加兼容的形式。

结论

明年,我们可以预期在所有这些方面都会有所改善。 更多的Docker工具和自定义容器服务将有助于减少学习曲线,随着大型公司采用容器,游戏服务器应朝着与容器兼容的设计方向发展。

缺乏当前的标准化和可用性确实仍然是广泛采用的主要障碍,可以通过对游戏服务器的常见容器化问题进行工具化和抽象化来改善这种情况。 这是我个人正在通过gscs项目减少的工作, 该项目是一个容器规范,旨在降低容器化不同类型游戏服务器的复杂性。

有了足够的标准化和Docker跨平台兼容性,我们甚至可以看到容器在将来成为专用游戏服务器的标准发行版! 您今年最期待游戏服务器发生哪些变化? 您认为什么会对行业产生破坏性影响?何时? 您认为哪些项目总体上会对游戏服务器托管和游戏产生影响?

我期待明年将带入游戏服务器领域。 游戏中的容器的时机已经成熟。

翻译自: https://www.javacodegeeks.com/2016/01/containers-will-change-game-server-hosting-industry.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值