更多云场景实践研究案例,点击这里:【云场景实践研究合集】联合不是简单的加法,而是无限的生态,谁会是下一个独角兽
畅游在手游和端游方面做了很长时间,在游戏运维方面也积累了十几年的经验。而畅游对于混合云来讲有很明确的要求:第一,托管物理IDC质量一定要过硬,第二,云上云下一定要有大带宽,高稳定高可用的链路打通。在前端,混合云在安全上有很重要的优势,阿里安全体系很健全,混合云模式既保证了用户线下的场景核心需求,同时依托阿里安全防护体系,将安全堡垒又加固了一层,混合云可能比常规的云上云下打通更实际,优势更明显。借助阿里云提供的混合云解决方案,畅游在游戏的维护成本等各方面都有很大的进步,其故障修复和应用上线的时间速度提升几十倍甚至上百倍。
“开始使用云是比较便利的,维护成本和各方面都有很大的进步,我们的故障修复、应用上线的时间速度提升几十倍甚至上百倍。在手游井喷式的发展时,考虑资源上手游时,我们优先考虑了公有云,使用了阿里云的所有服务,目前,我们的很多业务基本都在云上跑。”
——黎志刚
畅游运维部总监
采用的阿里云产品
- 阿里云数据库 RDS
- 阿里云对象存储 OSS
- 阿里云容器服务
为什么使用阿里云
游戏的开发和版本以及应用程序特殊性很多,导致它对云上的操作系统、驱动和特殊配置上要求和其他应用不一样,这样对云的要求会更苛刻一些,不同游戏版本和类型对公有云的要求都是不一样的。
畅游与阿里云合作做端游的过程中,对一个产品的老操作系统版本进行一个改造,操作系统太老导致应用程序无法在云上拉写,新版本操作系统应用又搭建不起来,对此,阿里云为畅游定制了一个操作系统版本。
借助阿里云,畅游在服务器运维方面可以实现分钟级甚至秒级切换。
关于 畅游
畅游有限公司是中国领先的在线游戏开发和运营商,于2007年12月分拆成为一家独立运营公司。在此之前畅游作为搜狐集团的游戏事业部从2003年起开始运营大型多人在线角色扮演游戏(MMORPG)业务,随后于2009年4月在纳斯达克全球精选市场上市。畅游目前运营中国最受欢迎的大型多人在线角色扮演游戏之一的《天龙八部OL》,游戏用户数量和收入保持着强劲的增长。畅游领先的技术平台包括先进的2.5D图形引擎、统一的游戏开发平台、有效的反作弊和反黑客技术、自主研发的跨网络技术和先进的数据保护技术等。
为什么选择阿里云?
畅游的上云历程
游戏上云和其他行业上云最大的不同在于:游戏的开发和版本以及应用程序特殊性很多,导致它对云上的操作系统、驱动和特殊配置上要求和其他应用不一样,这样对云的要求会更苛刻一些,不同游戏版本和类型对公有云的要求都是不一样的。畅游与阿里云合作做端游的过程中,对一个产品的老操作系统版本进行一个改造,操作系统太老导致应用程序无法在云上拉写,新版本操作系统应用又搭建不起来,对此,阿里云为畅游定制了一个操作系统版本。开始使用云是比较便利的,维护成本和各方面都有很大的进步,畅游的故障修复、应用上线的时间速度提升几十倍甚至上百倍。在手游井喷式的发展时,考虑资源上手游时,畅游优先考虑了公有云,使用了阿里云的所有服务,目前,畅游的很多业务基本都在云上跑。
畅游的数据库架构设计
畅游之所以偏爱阿里云RDS,这与游戏架构演变有关。最开始DB和应用都放在一台机器上或两台机器上进行交互,数据的一致性和档案的完整性都会有问题, 使用阿里云以后发现,不管是从网络层、数据的交互上都提供了一整套的解决方案,Redis可以实现memory cache实现不了的功能,这个程序被应用的场景远远多于自己写的memory cache,Redis要经过各种应用的验证,Redis的健壮性和冗余性各方面都会比memory cache更强,这时候就会更倾向使用Redis服务。
畅游使用MySQL比较多,SQL server和MongoDB也有一些,畅游做了那么多年游戏,有了自己的一套MySQL配置标准,畅游对于数据库版本的各种参数都做了优化,能够支持公司内所有游戏的运行,这个版本也放在了阿里云实例中直接使用。畅游的其他游戏可能也会定制数据库,要求必须是某个版本某个数据类型,会与研发商技术团队沟通调整,我们会遵循研发商的意见。
SQL server数据库主要针对存储过程和SQL语句做一些优化,上线过程中可能会遇到某个存储过程和SQL语句处理时间很长,导致访问效率很慢,就需要对SQL server了解的人排障时候能够快速定位到问题,畅游在用MySQL的排障方式也可以去做,由于两个数据库操作模式不同,导致排障时间不一样。不同地区游戏能对研发商选择的操作系统和数据库的版本,在引入时都需要和研发商进行交流。
关于选择,主要看游戏的类型,如果是端游,畅游会优先考虑天龙验证过的MySQL,如果是web应用或手游等,畅游则会直接使用阿里云提供的服务。国内游戏行业的DB有几种类型,SQL server、MySQL和MongoDB以及自建数据库。从协同开发角度讲,在做一款项目时,他所能控制的在经验范围内,数据库有多大的并发写入量,数据块写入多少,能够有很精准的度量,如果用全新的技术,可能就会超出控制范围。阿里云RDS从设计第一天,就把高可用放在第一位,第二位是数据的可靠性,RDS已经完全可以满足游戏行业的需求,像局域缓存场景的Redis和memory cache,阿里云也打造了高规格实例,能够满足很重度的游戏需求。
畅游业务架构及运维实践
畅游业务架构从最开始基础的C/S架构,向可以进行负载均衡的架构,把很多的应用功能进行切分,比如登录、场景和验证,支付、资源都切成不同的服务器,这样服务架构相对来说就比较健壮了。上阿里云以后,有备机可能分钟级、秒级就可以切换,没有备机十分钟内也可以解决;有Redis后,数据档案的完整性会得到很大提升。
为了让档案数据不丢失,网络抖动各方面影响较少,游戏设计时在中间层数据库和应用之间做了一层缓存memorycache,这套东西可以保证所有数据交互时不出现丢失,可以解决高并发问题。手游现在基本都是负载均衡,如果遇到高并发,可以在负载均衡做更多事情。以前单个机房防御可能只做到10G,当使用到云上后,防御的整个带宽可以达到300G。
而未来,阿里云海外战略目标是要将数据中心铺到全球,从北美、东南亚到欧洲,已经上线了多个数据中心,另外一个很重要的技术特征是,有规划将数据中心通过高速通道打通,包括国内区域的跨城专线,包括国内到海外的国际专线,这种打通就解决了做全球同服时技术资源的联通性上的基础条件,全球同服对游戏类型有要求,比如SLG、棋牌以及卡牌,随着未来游戏行业在海外战略的发展,这一类项目会越来越多,阿里云希望在项目大爆发之前,将基础条件打造好,为了方便未来项目更好在云上构建。
畅游自动化运维平台
过去五六年,畅游一直想做运维自动化,最终形成了一整套完备的运维操作平台。一方面是游戏运维自动化,游戏版本的发布、上线更新维护自动化;一方面将所有的资产信息做了数据总线,构建了一套CMDB系统,该系统会将线上所有的资产信息全部在库里建好,打上标签,所有运维需要的工具、脚本和系统都经过这条总线,假如线上应用进行变更时,也是在这里先更改。 畅游也做了版本发布平台,所有在服务器上运行的脚本,全部在这里登记,由系统自动发布出去,这样可以将所有服务器执行上的风险降低。出现问题时系统自动呼叫运维人员。
将IT成本中心变成利润中心,今天畅游的体系已经非常成熟了,畅游也希望将自己的东西提炼成开源的架构,让同行的所有人都来参与调优,参与的人越多,对框架调优就越好。第一,先将畅游的东西模块化、产品化;第二,将整个的运维行业人才培养计划也开放出来。
畅游对于容器服务的探索
同时,畅游对容器服务也做了探索。Docker兴起时,畅游结合其他公司经验做了很适合资深业务的容器,优先解决业务遇到的问题,这时在容器上可以跟研发团队核心生产环境做流程的打通,研发写完后直接上传到目录,由系统自动同步到预发布环境,在预发布环境可以看到是否OK。畅游的Docker容器技术大量借鉴Docker社区和开源东西,但是定制化的东西想要通用使用还是有难度的,所以畅游想与阿里合作使用Docker容器。阿里容器服务第一是解决兼容性问题,会支持本地化部署,将线下东西和线上实例打通,在线下垂直环境、预发环境能够跑通的程序代码,可以一键直接发布到云平台,实现整个持续交付能力;第二,阿里与Docker已经做很深度的战略合作,未来会在Docker容器化领域持续发展,很有可能专门出些针对游戏行业的容器化服务。
关于畅游的更多实践详情:畅游:游戏运维最佳实践
原文发布日期:2017-03-12
云栖社区场景研究小组成员:贾子甲,仲浩。