设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

容器技术在游戏云应用展望

2014-12-2 12:01| 发布者: joejoe0332| 查看: 1834| 评论: 0|原作者: 腾讯云|来自: 腾讯云

摘要: 容器技术是一种轻量级虚拟化技术,能够以很细的粒度,虚拟化独立的系统运行环境。这就意味着,一台物理的服务器,或者是一台云上面的虚拟服务器,能够同时运行成百上千个独立的容器。 ...

  【编者按】容器技术是一种轻量级虚拟化技术,能够以很细的粒度,虚拟化独立的系统运行环境。这就意味着,一台物理的服务器,或者是一台云上面的虚拟服务器,能够同时运行成百上千个独立的容器。


  基于游戏行业“短平快”的鲜明特点, 每一个游戏世界里面,每一种业务逻辑,譬如控制人物的行走,战斗,场景,聊天,存档,数据库等,都可以运行在一个独立的容器中。这一系列的容器,就构成了一个独立的游戏世界的自治系统。 目前,腾讯内部业务运行环境基本全部实现了容器化,在2014 Container技术大会中,腾讯云高级产品经理刘永峰曾发表演讲“Docker时代,公有云面临的挑战和机遇”。本文中刘永峰展望了容器技术在游戏云的应用。以下为原文:


什么是容器?

  容器(Container)是一种轻量级的虚拟化技术,所谓轻量级虚拟化,就是使用了一种操作系统层虚拟化技术,这种技术允许一个操作系统上用户空 间被分割成几个独立的单元在内核中运行,彼此互不干扰,这样一个独立的空间,就称之为一个容器。举个例子,一个操作系统,可以类比成一套公寓,那么容器, 就相当于公寓中的一个房间,大家共享同一个客厅,厨房和卫生间。但是房间和房间之间彼此隔离,一个房间里面的人的活动,不会影响到其他房间的住客。房间也 有门,有一定的安全措施。随着虚拟化技术的发展,一台物理的机器可以虚拟成多台虚拟机,但是虚拟一个独立操作系统是存在系统损耗的,不可能虚拟太多。而容 器就不同了,同一台机器,可以运行几十个甚至数百个容器。基本没有太大的性能上的损耗,并且启动一个容器,就像启动一个进程那么简单,在秒级的时间即可完 成。因此在某些场景下,容器技术会有非常大的优势。


容器技术的发展历程

  容器的技术并不是一项很新的技术,早在十多年前,其思想就已经开始得到应用了。2005年,Solaris系统率先推出了容器的概念。2007年的 时候,容器技术的核心特性cgroup正式进入Liunux内核。2011年,已经形成了标准化的规范。业界在对容器的使用上,也越来越广泛,特别是一些 大的互联网公司,国内的腾讯,百度,都已经在内部生产环境中大规模使用了容器技术。对于容器技术使用最成熟的当属Google,Google内部的几乎所 有的业务,其运行环境基本全部实现了容器化。容器发展的最重要的一个里程碑是Docker的出现。很多人有误解,Docker其实并不是一种虚拟化的技 术,而是一种容器的管理技术,它主要由容器管理引擎,客户端以及AUFS文件系统组成。将容器的构建,分发和运行标准化了。因此出来一年多,其热度已经席 卷全球。


容器技术有哪些优势

  随着容器技术的发展,特别是插上Docker的翅膀后,显得如虎添翼。它有什么优势,能够解决什么问题呢?


  这里总结了如下几点:

  • 提升了虚拟化的粒度:由于Container是一 种操作系统层的虚拟化技术,可以在进程级别进行隔离,因此一台物理的机器,可以运行非常多的容器,而将性能损耗降到最低。当然也支持在虚拟机上运行容器。 因此,一些低成本,支持动态伸缩的微服务成为可能。譬如一个个人站点,一个公众账号,一个个人博客。当然也可以用于游戏服的场景。
  • IT服务交付标准化:在Docker中,有容器和 仓库的概念,任何服务,都可以打包成容器。容器可以存储在仓库中。当需要执行式,直接从仓库中拉取进行执行。屏蔽了底层IT基础设施之间的差异。服务的运 营实体不需要了解容器内部的结构,只需要从仓库中拉取进行执行就行了。因此可以在IT服务的交付和使用者之间划开一条清晰的界限。非常适合目前IT服务分 工越来越细的趋势。
  • 开发,测试,部署一体化:系统的持续集成,持续部 署,一直是IT开发人员,运维人员梦寐以求的事情,但是实际上,解决起来非常困难,很多时候,开发出来后,要花很大力气搭建一套测试环境,测试完成后,又 得重新搭建一套运营环境。而Docker三个核心的概念Build,Ship,Run,其实涵盖了从开发到部署到执行的全流程。以容器为单位,当开发完成 后,打包成容器,放到仓库,然后进入测试流程,测试完成后,依然push到仓库,最后到生成环境。让三个环节平滑的衔接。避免了复杂的运行环境搭建的工作 量。


游戏托管的主要特点

  前一部分主要介绍了容器技术的优势和特点,那如何和游戏来结合呢。这得现成游戏行业本身的特点以及业务特征说起。其实游戏行业是对云的接受度最高,但是也是对云的特点使用最不充分的行业。俗话说,游戏行业,特别是现在比较火的手游行业,本质是“短平快”:

  • 短:游戏生命周期短,特别是手游,一般一款游戏,只有一年左右的生命周期;
  • 平:游戏后台架构是一个扁平的架构,大部分游戏都是单区单服,一台机器,一个数据库,可以搞定好多个游戏服;
  • 快:游戏滚服快,很多游戏,用户都是爆炸式增长,通常一个游戏服,只支持固定数量的用户,达到用户上线,就开一个新的服,因此主要表现在开服快,同时,也由于生命周期短,也需要开发快,部署上线快。

  游戏业务的后台服务器架构,目前大多数也沿袭了传统的模式,以比较常见的单区单服架构为例,通常都是使用一台性能比较好的机器,譬如16核64G内 存,在机器上开一定数量的游戏服(相当于同时运行多个游戏后台服务进程,通过不同的端口来提供服务)。每个服支撑固定数量的在线用户。每个游戏服,构成了 一个独立的游戏世界,不同游戏服之间,数据是不互通的。游戏服有多有少,以腾讯云的某一款游戏为例,一台16核的云服务器,开到80~100个游戏服。为 什么不是一台服务器开一个游戏服呢?主要还是成本方面的考虑。当然也有人会问,为什么不能每个游戏服用户数多一些,从而开少一些的游戏服呢?这主要是由于 游戏特点决定的,例如MMORPG(多人在线RPG)类的游戏,每个游戏服,地图有限,不可能支撑太多用户,同时,用户太多,等级差异较大,造成游戏生态 系统不平衡。因此,每个游戏服用户数,是一个恒定的量。


传统游戏后台架构存在的问题

  1. 一台机器同时运行大量的游戏服,当机器宕机时,影响的用户面比较广;
  2. 由于每一个游戏服是一个后台服务进程,进程之间没有强隔离,会导致不同游戏服之间资源分配不均匀,或者资源相互抢占的问题;
  3. 一个游戏中,会涉及很多不同种类的业务逻辑,譬如登录,聊天,战斗,行走,甚至记录日志。传统的方式情况下,为了简化部署,大多都运行在同一台服务器上面。因此需要不同的进程或者线程去完成这些业务逻辑。管理起来非常的复杂,特别是当一台机器上同时存在很多组游戏服时。

  当然,也有一些优化后的架构,譬如将一个游戏大区里面登录逻辑独立出来,由一组单独的服务器去承载。但是,要让一个游戏世界,所有的业务逻辑都能协调运行,依然是一个非常复杂的事情。特别是一台物理的机器,部署了多组游戏服时。


一个全新的游戏自治系统

  前面的章节谈到了容器技术的优点。其中比较重要的一个优势是,容器技术是一种轻量级虚拟化技术,能够以很细的粒度,虚拟化独立的系统运行环境。这就 意味着,一台物理的服务器,或者是一台云上面的虚拟服务器,能够同时运行成百上千个独立的容器。每一个游戏世界里面,每一种业务逻辑,譬如控制人物的行 走,战斗,场景,聊天,存档,数据库等,都可以运行在一个独立的容器中。这一系列的容器,就构成了一个独立的游戏世界的自治系统。一个自治系统里面的所有 容器,可以运行在一台物理的机器上面,也可以分布在彼此独立的机器上面。同时,还可以根据每一类业务使用资源的不同,合理的规划这一类容器的资源用量,做 到彼此互不干扰。当然,如果只是纯粹的容器技术,这个自治系统里面的容器管理也是一个大问题。但是Docker技术的出现,为我们完美的解决了这个问题。 Docker里面有仓库的概念,所有的自治系统的基本单元(容器),都可以存储在仓库中,同时,借助于FIG,SERF等容器编排,以及服务自发现的技 术。当这些容器被分发到一个运行环境(一批执行的服务器)时,能够将一个自治系统快速构建出来。让一个游戏世界的后台架构,能够在秒级的时间里面快速重 建。这将完全颠覆游戏开服的概念。我们知道,现在的开服,需要申请机器,安装软件版本,修改配置等非常繁琐的操作,虽然通过脚本,可以基本实现自动化,但 是依然需要一部分人工去介入。结合了Docker等技术,只需要分发和复制就可以了,将Docker所提倡的三个核心概念Build,Ship,Run体 现的淋漓极致。


容错和热迁移

  游戏的稳定性一直是运营方最为关心的问题。一次异常的宕机,可能导致非常大得损失。传统模式下,一台服务器,同时运行几十组游戏服时,一次宕机,可 能会影响数万的游戏玩家。当游戏服的所有业务逻辑实现容器化后,某一次机器故障,可能只是影响到了部分游戏服里面的某些业务逻辑。我们可以将一个游戏自治 系统看做是一个正在运转的机器。一起出现故障时,需要重新启动并组装机器,现在可以做到在不停机的情况下,替换零件。譬如控制行走任务的容器正好位于某个 故障机器时,可能只是瞬时的卡顿,立即就恢复正常。借助某些监控的手段,一些重要的业务逻辑甚至可以同时运行多个备份容器,当一个逻辑出现问题时,能够快 速切换到另外一个备用容器。


未来的展望

  游戏对于云的使用,目前还处于非常初级阶段,大部分游戏厂商,还是使用的传统的IDC托管,即使使用云的厂商,也是将云主机当传统的物理机在使用。 容器技术虽然有多年的发展,但是Docker之类技术目前还只是襁褓中的婴儿。游戏领域能够接受容器的概念,还需要一个探索和实践的过程。但是随着游戏领 域的竞争加剧,低成本,精细化运营是未来的趋势。游戏一直是腾讯云最重要的拓展领域,由于有国内最大规模的游戏用户群体,因此对于游戏理念的理解,游戏架 构的设计以及运营经验,一直是腾讯云最重要的竞争优势之一,所以腾讯云很早就启动了容器技术在游戏领域的研究。目前,容器技术在腾讯的社交网络已经有多年 的实践经验,内部业务运行环境基本全部实现了容器化。相信很快在游戏领域也会逐步应用开来。在文章的最后,我想到和某个从国外回来的大型游戏公司的老板在 聊天时,他给我描述的未来游戏世界的一种场景。全世界所有游戏玩家都在一个游戏世界里面。有堪比现实世界般广袤的地图。游戏中的场景和人物都由强大云计算 支撑的AI智能控制,整个游戏,就是现实世界的完全模拟。或许借助于文章中展望的技术,我们会看到类似的这种大同的景象。

酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部