【Kubernetes实战经验分享:雷亚游戏】手游正式环境搬上GKE满周年,仍有2大困难待克服
2017-11-18 12:20:43 | 来源:ithome | 投稿:乐乐 | 编辑:dations

原标题:【Kubernetes实战经验分享:雷亚游戏】手游正式环境搬上GKE满周年,仍有2大困难待克服

雷亚游戏技术长钟志远表示,Kubernetes已经先行将硬件资源抽象化,进行封装。因此,资料库此类非常依赖硬件的服务,现阶段该技术的支援仍然不足。(摄影/洪政伟)

从去年开始,雷亚游戏(简称雷亚)就已经开始利用容器作为基础架构,在Google云端平台GCP上,使用容器引擎GKE来建置Kubernetes丛集,作为旗下游戏的后端系端环境之用,例如目前已经推出的音乐游戏Voez,正在开发中的卡牌游戏伊甸之魂,或是新款角色扮演游戏Sdorica未来的上线正式环境,也都会部署在Kubernetes丛集上执行。

雷亚游戏技术长钟志远表示,每一款游戏都需要部署4套独立的容器丛集,用于开发环境、Alpha环境、Beta环境以及正式环境等不同阶段的执行需求,再加上这些游戏系统采用了微服务架构的设计,一款游戏包含了3至4个微服务所组成,因此光是一款游戏的运作,都需要布建至少10套容器丛集,“雷亚目前已经在GCP平台上运作了近50个Kubernetes丛集。”

复杂度是微服务必定面对的挑战

钟志远举例,以基本网络服务为主的公司,可能只需要研发一两款产品,长期提供稳定服务至终端消费者,但是游戏公司的挑战在于,每1至2年就得释出一款全新游戏。甚至,他说,日后游戏的使用人数增加后,带来的挑战就是必须要管理更多的微服务。而丛集数量越多,对微服务架构而言,管理者面临的系统复杂度挑战也更大。

“一款游戏需要许多不同的API丛集、微服务才能运作,而它们都必须要具备水平扩充能力”,钟志远举例,像是雷亚部署在GCP平台的游戏底层丛集,除了前端使用原厂负载平衡服务,还会部署Nginx元件处理终端系统发送的需求。

除了执行游戏逻辑运算的服务,雷亚也设计了一套玩家行为校验系统,检测是否有可疑的作弊行为。“而Kubernetes最大的好处就是,封闭丛集内的环境互不影响”,他表示,在GCP上通过Kubernetes,就可以调度丛集内使用容器打包的微服务。

除此之外,雷亚也常碰上自家系统或游戏API改版衍生的相容性问题。钟志远举例,例如角色扮演游戏Sdorica的开发过程,经历过两次API改版,开发团队得要在新版系统上架前,先使用旧版API,等待新版应用程序上架之后,再切换成新版API,覆盖掉旧版API,“挑战在于,在短时间内部署新版本的API丛集。”

让Kubernetes与既有CI流程整合

所幸,雷亚内部有一套用来支援新游戏开发需求的数位资产管理服务,可以针对不同的开发专案,分别部署独立的Instance,“这个资产管理服务,也整合了CI流程,直接与Kubernetes连接”,钟志远解释,过去雷亚已经花费许多心力整合CI工作流程,加速自动化流程。因此,如果开发者想要增加新的Kubernetes丛集,只需稍微修改自动化脚本程式,就可以靠CI流程自动化部署一套容器丛集,来执行新版API,解决新旧版API的相容性问题。

目前雷亚游戏的后端系统CI流程是靠GitLab搞定,主要用于部署程式码。不过钟志远表示,游戏除了后端系统外,与玩家进行互动的前端系统,“还包含大量图档、影音这类的数位美术资产”,而GitLab并非处理此类档案的最佳工具。相比之下,Jenkins让使用者随需修改的自由度更高,“让大量资料部署变得更有效率。”

整合GCP平台工具Stackdriver监控Kubernetes

不过经营一家游戏公司,面临的挑战不单只有游戏的开发,还要确保应用程序上线之后也能维持一定营运品质。雷亚也直接使用GCP提供的Log监控服务Stackdriver,来监控Kubernetes丛集的执行状况。钟志远解释,维运人员所要注意的不单只有容器节点、Pod的运作状况,“更主要的是监控应用程序,根据使用者行为,回过头判定系统服务是否正常运作。”

例如,当系统运作正常时,都可以对使用者请求做出回应。但是,每当系统开始出现HTTP△Error△500、HTTP△Error△404的讯息,即代表玩家无法正常存取服务;或是有不肖玩家反复键入密码,试图盗用他人帐号时,监控系统都会搜集相关Log资讯。

钟志远表示,目前雷亚已经将Kubernetes丛集的Log纪录与Stackdriver进行介接,“当异常事件超过一定程度,系统就会通过Slack,发送通知给维运人员”,而Stackdriver与Docker的整合程度也非常不错,容器执行的行为,也可通过Stackdriver进行监控。不仅如此,Stackdriver还可以将监控资料,汇入至GCP平台的数据分析仓储Big△Query做后续分析,“在GCP上可以建构整套的工作流程。”

一键升级风险高,仍自行实测新版Kubernetes后再升级

但是,Kubernetes的使用者都得面临官方一年推出3至4个新版的升级压力,虽然GCP平台有提供一键升级Kubernetes的服务,不过,目前有两个问题,第一是无法确定一键升级作业所需花费的更新时间。其次是无法保证,使用一键更新后,会不会造成雷亚系统当机,“官方所提供的说明并不明确。”再加上现阶段Google还未提供一键更新的SLA保证,一旦发生故障,也不会提供理赔。一键更新的高度不可预测性,“雷亚的营运模式不适合这样的机制。”所以,他们还是得自行解决一年多次的Kubernetes升版议题。

“在正式上线前,我们得先在新版Kubernetes丛集内进行测试。”钟志远表示,现在雷亚游戏采取的Kubernetes升级策略,会先额外部署一组运作最新版本的Kubernetes丛集,所幸,“只需要大约10分钟就可建置新丛集”,接着将游戏部署于该丛集进行封闭测试,当确定运作正常时,再将使用者导向新丛集,同时关闭执行旧版本的Kubernetes丛集。

资料库应用支援还有待加强

雷亚导入Kubernetes一年来,“大多可用Kubernetes执行的应用程序都已上线”,雷亚也通过这些导入经验,来精进Kubernetes的操作熟悉度。

不过,钟志远表示,目前GCP上的GKE服务,仍有两大不足,一个是Kubernetes对资料库支援程度不足,另一个是GKE无法在单一容器丛集中支援多种异质的硬件规格。这是雷亚还无法将所有系统都放到GKE上执行的原因。

在资料库支援度上,钟志远解释:“资料库应用得自行修改许多底层(作业系统层)的参数”,例如需要调整OS存取记忆体的时间来优化资料库效能等,但是Kubernetes已经先行将硬件资源抽象化,进行封装,“所有应用程序都得靠容器执行,因此资料库管理人员不能直接修改底层设定。”所以,雷亚并未将任何资料库部署到Kubernetes环境上执行,

他解释,当企业要将容器技术导入正式环境时,遇到特别讲究效能表现的系统服务,往往需要进行精密的调校,但是,“目前容器技术对这类高度依赖硬件的服务,支援度还不足。”。

雷亚遇到的第二个问题是,GKE服务的不足,无法在单一Kubernetes丛集内,搭配多种硬件规格不同的运算节点。钟志远举例,像是资料库服务必须搭配大量记忆体和高I/O的运算节点,而同一个游戏的丛集中,也会有另一个处理玩家需求的系统服务,这就需要使用CPU效能高的运算节点,“但在GKE建立Kubernetes丛集时,只能使用同样规格的节点”,导致不容易在单一丛集内,支援异质性运作需求(高CPU或高I/O)的多种服务。因应此状况,目前雷亚的解决方法,也只能额外加开使用特殊硬件规格的丛集,再将同性质的服务集中到单一Kubernetes丛集上执行。

tags:

上一篇  下一篇

相关:

【Kubernetes实战经验:91APP电商平台】新兴系统要先容器化,再靠K8s实现IT微服务架构

91APP研发处副总经理林大维表示,使用Docker、Kubernetes,开发者都必须明确定义应用程序执行所需要的环境组态,也因此,企业必须颠覆过去程式开发的思维,让应用程序具备水平扩充性,“逐步让单体架构分解。”(摄

4G开台3周年前夕 吕芳铭:工程技术打B 财务面打C

我酷新闻网记者苏元和/台北报道尽管亚太电信营运绩效表现不佳,亚太电信展现在数位我酷的布局气势依旧不减,亚太电信董座吕芳铭(19日)向媒体展示冲刺5G的关键技术之际,他先是表明不谈媒体关注的财务何时转正,吕

盘点武打明星 实战最强亚洲拳王周比利

我酷网消息 盘点华语动作片明星,从早期的成龙、洪金宝、李连杰等人,再到现今“宇宙最强”甄子丹和票房男星吴京,各有各的粉丝支持。不过实战最强的,应该是周比利。周比利演过的电影不少,像是和周星驰

阿里集团18周年年会将至 [热事件]

阿里集团18周年年会将至,今晚阿里巴巴要迎来自己的成人礼。为了庆祝公司成立 18 周年,他们要在杭州黄龙体育中心召开2017集团年会,而这也是公司史上规模最大的一次年会。那么,阿里巴巴股价是多少呢?阿里集团18周

WSJ:9月12日 苹果将发表iPhone十周年机

我酷新闻网记者蓝立晴/综合报道全世界的果粉们都翘首期盼著苹果(Apple)的iPhone十周年新机,现在,这款备受期待的智慧型手机发表的日子已经有迹象。根据《华尔街日报》(TheWallStreetJournal)报道,苹果将在下(

站长推荐: