回顾视频:
以下内容根据阿里云行业圆桌论坛视频整理而成。
本期嘉宾介绍:
黎志刚,畅游运维部总监;
翔贺,阿里云资深架构师。
上云趋势不可避免,越来越多的企业启动上云之路。在云计算普惠时代,各行各业都在发生着变化。
阿里云行业圆桌会,汇聚APP、网站、游戏、金融、电商、音视频、健康、教育、能源、政务、运输、制造等12大行业类别,邀请阿里云经典客户,一起聊聊他们的上云之路,以及云上技术实践!
畅游业务情况简介
黎志刚介绍说,畅游在手游和端游方面做了很长时间,在游戏运维方面也积累了十几年的经验,很高兴接到阿里云的邀请,跟大家分享运维的心得。我们在去年推出了二次元的仓之骑士团,获得了苹果几轮官网推荐;我们的旗舰天龙八部,不管是端游或手游,都表现不错,特别是在MMORPG类型游戏里,大家也都可以试玩。
阿里云对混合云提供了哪些方案?
翔贺谈到,感谢畅游的信任,从硬件到虚拟化再到操作系统,全链路兼容性很难调试,将老操作系统应用到正式生产环境还是一个很痛苦的过程。
混合云与畅游走的很近,畅游对于混合云来讲有很明确的要求。第一,托管物理IDC质量一定要过硬,第二,云上云下一定要有大带宽,高稳定高可用的链路打通,我们会和第三方合作伙伴一起打造基础设施。在前端,混合云在安全上有很重要的优势,阿里安全体系很健全,混合云模式既保证了用户线下的场景核心需求,同时依托阿里安全防护体系,将安全堡垒又加固了一层,混合云可能比常规的云上云下打通更实际,优势更明显。
畅游上云实践
游戏上云有什么不同吗?畅游的上云历程是怎样的?
黎志刚认为,游戏上云和其他行业上云最大的不同在于,它的开发和版本以及应用程序特殊性很多,导致它对云上的操作系统、驱动和特殊配置上要求和其他应用不一样,这样对云的要求会更苛刻一些,不同游戏版本和类型对公有云的要求都是不一样的,我们与阿里云合作做端游的过程中,对一个产品的老操作系统版本进行一个改造,操作系统太老导致应用程序无法在云上拉写,新版本操作系统应用又搭建不起来,对此,阿里云为我们定制了一个操作系统版本。
开始使用云是比较便利的,维护成本和各方面都有很大的进步,我们的故障修复、应用上线的时间速度提升几十倍甚至上百倍。在手游井喷式的发展时,考虑资源上手游时,我们优先考虑了公有云,使用了阿里云的所有服务,目前,我们的很多业务基本都在云上跑。
游戏上云的趋势是什么?
黎志刚觉得,使用云后的便利性很强,在手游基本用云的情况下,我们希望端游也能够到云上,可以提高冗余性、效率等,维护的成本都可以得到控制。端游我们做了多种尝试,将老的端游进行上云测试,目前进展比较顺利。未来,手游和业游都会在云上跑,端游也会逐步迁到云上来。
翔贺也说到,上云是一个循序渐进的过程,从最开始大家不敢把游戏放在云上,到一步步逐渐尝试相信这个环境,再到现在有一定的信任。我们在做云产品时,也不会很盲目的让用户将他最核心的业务一次性的迁移上云,这就是混合云存在的价值。基于游戏的场景,我们也在不断的了解用户需求,包括DB层、操作系统兼容性、性能表现层等,我们都会在产品上去丰富,现在推出的多主频类型,就是为了能够更好适应老端游,以及很依赖CPU计算性能的场景,我们都有做尝试。
目前游戏行业可能接触多个云计算厂商,简单介绍下这方面的情况?
游戏要让用户访问到,只有两个途径,iOS和android,黎志刚说到,为了让用户都能访问,由于所有渠道跟用户挂入量有关,可能在推广上可以更好的为某个渠道服务时,在选择云厂商时就会有一些区别,受到市场因素限制。
畅游:数据库优选MySQL
畅游使用哪种数据库比较多?对于自建MySQL和阿里云RDS,畅游的选择有什么考虑吗?
畅游之所以偏爱RDS,这可能与游戏架构演变有关,最开始DB和应用都放在一台机器上或两台机器上进行交互,数据的一致性和档案的完整性都会有问题,
使用云以后发现,不管是从网络层、数据的交互整个使用上都提供了一整套的解决方案,redis可以实现memorycache实现不了的功能,这个程序被应用的场景远远多于自己写的memorycache,因为我们只面向自己的游戏,redis要经过各种应用的验证,redis的健壮性和冗余性各方面都会比memorycache更强,这时候我们就会更倾向使用redis服务。
畅游使用MySQL比较多,SQLserver和MongoDB也有一些,畅游做了那么多年游戏,有了自己的一套mysql配置标准,这个版本各种参数我们自己做了优化,能够支持公司内所有游戏的运行,这个版本也放在了阿里云实例中直接使用。我们其他游戏可能也会定制数据库,要求必须是某个版本某个数据类型,我们会与研发商技术团队沟通调整,我们会遵循研发商的意见。
SQLSERVER数据库主要针对存储过程和SQL语句做一些优化,上线过程中可能会遇到某个存储过程和SQL语句处理时间很长,导致访问效率很慢,就需要对SQLserver了解的人排障时候能够快速定位到问题,我们在用MySQL的排障方式也可以去做,由于两个数据库操作模式不同,导致排障时间不一样。不同地区游戏能对研发商选择的操作系统和数据库的版本,对于我们在引入时,都需要和研发商进行交流。
关于选择,主要看游戏的类型,如果是端游,我们会优先考虑天龙验证过的MySQL,如果是web应用或手游等,我们会直接使用阿里云提供的服务。
翔贺也补充到,从我经手的项目统计来看,国内游戏行业的DB有几种类型,SQLserver、MySQL和MongoDB以及自建数据库。从协同开发角度讲,在做一款项目时,他所能控制的在经验范围内,数据库有多大的并发写入量,数据块写入多少,能够有很精准的度量,如果用全新的技术,可能就会超出我的控制范围。阿里云RDS从设计第一天,就把高可用放在第一位,第二位是数据的可靠性,RDS已经完全可以满足游戏行业的需求,像局域缓存场景的Redis和memorycache,我们也打造高规格实例,能够满足很重度的游戏需求。
对于春节前夕某款游戏数据库删库事件以及gitlab删库事件有什么思考?
黎志刚思考说,我们也发生过类似事件,当时我们就做了优化调整,定期进行校验,模拟故障进行立马恢复,来看备份策略是否OK。不过,光有恢复和检查时不够的,在进行删除和格式化的过程中,如何保障不让事件发生或发生可找回,我们对操作系统安装初始化时进行改造,我们会将一些命令封装起来,工程师在系统上执行这些命令和脚本是执行不了的,需要匹配使用脚本和定制化函数才能执行。同时我们做到,如果删除同时将删除文件直接移到另外一个位置,可以被找回。
畅游业务架构及运维实践
伴随业务的发展,畅游架构的演变历程?
从最开始基础的C/S架构,向可以进行负载均衡的架构,把很多的应用功能进行切分,比如登录、场景和验证,我们的支付、资源都切成不同的服务器,这样服务架构相对来说就比较健壮了。上云以后,有备机可能分钟级、秒级就可以切换,没有备机十分钟内也可以解决;有redis后,数据档案的完整性会得到很大提升。
游戏可能有一些大流量高并发情况,对于架构方面需要做哪些工作?
黎志刚说,为了让档案数据不丢失,网络抖动各方面影响较少,游戏设计时在中间层数据库和应用之间做了一层缓存memorycache,这套东西可以保证所有数据交互时不出现丢失,可以解决高并发问题。手游现在基本都是负载均衡,如果遇到高并发,可以在负载均衡做更多事情。以前单个机房防御可能只做到10G,当使用到云上后,防御的整个带宽可以达到300G。
提到全球同服,全球同服对数据档案的共享要求很高,也对网络访问的联合性要求很高,现在全球同服用云的实践也比较多。
说起阿里云发展的海外数据节点,翔贺说,阿里云海外战略目标是要将数据中心铺到全球,从北美、东南亚到欧洲,已经上线了多个数据中心,另外一个很重要的技术特征是,有规划将数据中心通过高速通道打通,包括国内区域的跨城专线,包括国内到海外的国际专线,这种打通就解决了做全球同服时技术资源的联通性上的基础条件,全球同服对游戏类型有要求,比如SLG、棋牌以及卡牌,随着未来游戏行业在海外战略的发展,这一类项目会越来越多,阿里云希望在项目大爆发之前,将基础条件打造好,为了方便未来项目更好在云上构建。
畅游内部有哪些相关的运维工具?
过去五六年,我们一直想做运维自动化,最终形成了一整套完备的运维操作平台。一方面是游戏运维自动化,游戏版本的发布、上线更新维护自动化;一方面将所有的资产信息做了数据总线,构建了一套CMDB系统,该系统会将线上所有的资产信息全部在库里建好,打上标签,所有运维需要的工具、脚本和系统都经过这条总线,假如线上应用进行变更时,也是在这里先更改。
我们也做了版本发布平台,所有在服务器上运行的脚本,全部在这里登记,由系统自动发布出去,这样可以将所有服务器执行上的风险降低。出现问题时系统自动呼叫运维人员,我们内部也做了APP,所有报警信息都可以通过APP传达,我们也跟微信对接了一些东西。
将IT成本中心变成利润中心,今天畅游的体系已经非常成熟了,怎么能够很好的开放出来给其它的游戏行业客户利用呢?我们希望将自己的东西提炼成开源的架构,让同行的所有人都来参与调优,参与的人越多,对框架调优就越好。第一,先将我们的东西模块化、产品化;第二,将我们整个的运维行业人才培养计划也开放出来。
对于未来运维的发展趋势,黎志刚认为,为了不让大量业务压在肩上,首先要简化业务,做自动化运维,未来也会向智能运维、无人值守运维方向发展。大多运维都是被动式的,我们也考虑利用大数据做态势感知运维。
同时,畅游对容器服务也做了探索,Docker兴起时,结合其他公司经验,我们做了很适合畅游业务的容器,优先解决业务遇到的问题,这时我们在容器上可以跟研发团队核心生产环境做流程的打通。研发写完后直接上传到目录,由系统自动同步到预发布环境,在预发布环境可以看到是否OK。我们的Docker容器大量借鉴Docker社区和开源东西,定制化的东西想要通用使用还是有难度的,所以我们想与阿里合作使用Docker容器,这样,我的容器没有满足时,可以快速使用Docker容器,这也与混合云概念有关。
翔贺接着说,阿里容器服务第一是解决兼容性问题,会支持本地化部署,将线下东西和线上实例打通,在线下垂直环境、预发环境能够跑通的程序代码,可以一键直接发布到云平台,实现整个持续交付能力;第二,阿里与Docker已经做很深度的战略合作,未来我们会在Docker容器化领域持续发展,很有可能专门出些针对游戏行业的容器化服务。