首页 运维干货YY游戏使用云平台的经验及云计算随想

YY游戏使用云平台的经验及云计算随想

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

1.1 云计算发展趋势

自从2006年亚马逊AWS上线它的第一个EC2实例以来,云计算已经在全球得到飞速发展,并且被企业用户和个人开发者广泛接受。RightScale公司发布的2016年度云计算报告[1]显示,采访了1060名IT专业人士,其中42%的受访者所在公司的规模大于1000人,95%的受访者已经在使用各类云计算,如图1-1所示。

云计算

图1-1 调查显示95%的受访者在使用云计算

RightScale公司的调查报告同时指出了2016年云计算相对于2015年的增长趋势,如图1-2所示。

增长趋势

图1-2 2016年云计算相对于2015年的增长趋势

上述数据表明,2016年相对于2015年公有云的使用率仅上升了1%,而私有云的使用率攀升了14%,使用混合云(这里定义为同时使用公有云和私有云资源池)的比例则从58%跃升至71%。

RightScale公司的两份数据,一份说明了云计算的市场前景,一份说明了几种不同类型云平台的发展趋势。从我们所接触的互联网企业的云计算布局来看,也基本符合报告中描述的规律。这说明在未来的IT时代,云计算规模会持续扩大,企业应用会更多地往云上靠。而企业自建私有云,以及私有云跟公有云结合(混合云),是主要发展趋势。

再看另一份对比数据,如表1-1所示。市场研究公司Gartner称,全球公有云服务市场规模在2016年有望达到2040亿美元,比2015年的1750亿美元增长16.5%[2]。

“公有云服务市场继续呈现出高速发展的态势。Gartner公司预计,这种发展势头将会持续到2017年。”Gartner公司的研究主管希德•纳格(Sid Nag)在一份声明中说,“这种强劲的发展势头反映了人们从传统IT服务向云端服务的转变,因为企业越来越倾向于追求数字化商业战略。”

Gartner公司指出,虽然公有云服务呈现出稳定发展的态势,但是2016年发展速度最快的却是IaaS(基础架构即服务)。2016年,IaaS有望增长38.4%;到年底,IaaS市场规模有望达到224亿美元。

云应用服务(SaaS)有望实现年增长20.3%,达到377亿美元。云管理和安全服务的增长率有望达到24.7%。云应用基础架构服务(PaaS)也有望表现出强劲的发展势头,达到21.1%的增长率。云服务呈现出的这种强劲发展势头,有望在未来5~7年内仍然保持下去。

服务预测

表1-1 全球公有云服务预测(单位是10亿美元)

1.2 YY游戏使用云平台的经验

自2013年起,YY游戏[3]就使用私有云平台服务于自身的页游业务。

在开发云平台之前,游戏运营面临的问题是:

  • 页游开服快、密度大、周期短,导致运维变更频繁。
  • 传统开服、合服涉及大量的运维人工操作,例如安装服务器、配置网络、部署游戏、配置数据库等。
  • 用物理机开服,资源分配不合理,一个物理机上分配较多的游戏进程,会导致风险过高;分配较少的进程,又导致成本浪费。
  • 数据备份、监控、故障转移在传统模式下都成为挑战。

针对这些痛点,我们在OpenStack的基础上,开发了第一代云平台,即Cloud 1.0。云平台上线后,资源管理更加灵活,在性能和成本之间取得良好的均衡,并极大地增强了运维自动化能力。到现在为止,Cloud 1.0已经支撑了几十万游戏用户同时在线。

如图1-3所示是Cloud 1.0的基础产品架构,包括云主机、云存储、云DB、云缓存、云网关五大核心产品。用户可通过控制面板访问它们,也可通过调用API在应用程序中访问它们。

产品架构

图1-3 YY游戏Cloud 1.0的基础产品架构

在Cloud 1.0的OpenStack实现中,虚拟计算是Nova管理的KVM,虚拟网络是Neutron管理的VLAN供应商网络(ProviderNetwork)。关于VLAN供应商网络,Rackspace有一篇博客[4]描述得比较清楚,可以参考。在Cloud 1.0中我们没有使用分布式块存储服务(如Ceph)。

在Cloud 1.0中,我们并没有实现租户网络,不同的游戏厂家接入同一Flat网络,这对隐私和安全都不利。Cloud 1.0的云网络架构如图1-4所示。

云网关是游戏平台中一个重要产品,请参考腾讯游戏的TGW[5]。简言之,云网关有两个重要作用:一是收敛公网IP,节省IP成本;二是集中安全防护,降低单个云主机被DDoS攻击的可能性。所有的云主机都只有内网IP,运行在云网关后面。除了云主机外,还有云DB、云缓存、云存储等配套产品,都是游戏服务需要的。

云网络架构

图1-4  YY游戏Cloud 1.0的云网络架构

随着云平台规模越来越庞大,慢慢暴露了OpenStack的一些弱点,比如结构复杂、可靠性一般、扩展性弱,导致我们在云的可控性方面很被动,从而产生了对第二代云平台的需求。

那么我们需要一个什么样的云呢?首先,它是基于私有云的;其次,这个私有云一定要满足业务特点,比如游戏行业与金融行业,业务特点截然不同;最后,这个云一定要可管理、可扩展、可控。对于一个平台服务来说,存在性能短板、运行故障并不可怕,可怕的是出问题后用户无法跟踪和定位,从而失去可控性。

在此需求推动下,我们着手开发第二代云平台。正是随着第二代云平台,即Cloud2.0的自主研发和上线,我们在此过程中积累了大量的实践经验,从而得以推动本书的形成。

1.3 云计算随想

本书作者之一风河,作为云计算用户已有多年历史。从2011年起,就先后使用了多家公有云平台,包括Rackspace、AWS、Linode、Vultr等。从客观上说,云计算带给用户的不只是成本优化,还有效率方面的显著提升。

在更早期的时候,用户的网站要么使用Share Hosting(共享主机,如DreamHost、HostMonster),要么使用Dedicated Server(独立服务器,如SoftLayer、CNServers)。前者在性能、稳定性方面都存在问题,不适合流量大的站点;后者在管理上极麻烦,下单一台服务器,短的2~3天,长的1~2周才能完成上架交付。云计算出现后,有效地解决了这些问题,带给用户更稳定、更高效、更便捷的解决方案。

YY游戏有自己的云平台解决方案,主要面向公司内部的游戏运营和业务部署,既包括IaaS私有云平台,又包括PaaS升龙部署系统。在我们自己的云平台上,花了不到半个小时,就建立了一个测试站点。这个站点的配置如下:

  • 云主机:2VCPU、1GB内存、50GB硬盘、无公网IP地址
  • 云DB:1GB内存、InnoDB、SSD盘、单实例
  • 云网关:TCP转发

基本上是最低配置的云主机和云DB,并使用了支持TCP和HTTP协议的云网关(因为云主机没有配置公网IP地址)。

服务建立后,对资源的管控和监控都极为方便。如果是传统的物理机,则要装一堆的东西、写一堆的脚本去完成服务器监控与备份。而对于云主机、云DB,这些都是一键式操作。如图1-5所示是云DB集成的监控图。

监控图

图1-5  云DB集成的监控图

面向用户技术的发展趋势,应该是越来越方便、易用。以前建立一个站点,需要专业人士来完成。而现在借助各家云平台在基础层(IaaS)、业务层(PaaS)所做的铺垫工作,非专业人士也能在短期内建好一个站点。在飞速发展的移动互联网时代,产品的更新迭代极快,如果产品开发能够用现有的平台与技术快速实现,为什么不用呢?这也是云平台将来会持续存在与发展的一个原因。

而对于技术开发用户来说,接受云平台、适应云平台也是一个必然趋势。比如,对于我们

开发的业务,往往会关注如下几方面问题。

  • 弹性:根据访问规模的增减,业务弹性伸缩(Scaling)。在规模变大时,整个架构自适应Scale Up;在规模收缩时,架构Scale Down。架构里包含Web服务器、应用服务器、数据库服务器、缓存服务器、存储服务器等。
  • 自动化:业务的开发、测试、发布、部署、运行、调试整个环节,都有自动化手段辅助进行。只要执行几个命令,就可以将代码从本地环境发布到远程环境,并顺利运行。不需要关注服务器怎么分配、数据库怎么运行、路由(Route)怎么调度,只要关注自己的业务逻辑是否正常即可。
  • 分布式:随着节点的增加,业务性能(Performance)和容量(Capability)线性增长。在节点发生故障时,自动进行故障转移(Failover)。不管是水平扩展还是故障转移,对用户都是透明的,整体服务可用率高。
  • 监控:业务范围内的每个服务对象,大到IDC、CDN、服务器、存储,小到每个逻辑接口,都有自动化监控手段,在发生问题时第一时间通知到开发者,使其对业务运行环境(硬件、软件、网络)的性能、可用性指标了如指掌。

现在,上述问题越来越成为我们关注的重点。传统的开发模式和服务交付方式,比如手工部署、单机运行、自主管理、集成一体(All in one),可能还继续适用于某些业务。但是随着开发团队和业务规模的增长,开发人员迟早会面对上述问题。此时面向云的开发模式和交付方式,就显得突出和有必要了。

从传统模式到云模式,开发理念和实现方式有个转变过程。不是说把一个传统软件扔到云平台上就能随时运行。比如,业务要做到弹性和分布式,它自身需要是状态无关的(Stateless)。它的事务(Session)、日志、数据、缓存都必须去本地化,使用外部独立的存储接口。在云平台上,应用节点随时可以生成,也随时可以销毁。如果业务自身没有做到无状态,那就谈不上弹性伸缩。

总体来说,面向云平台的业务开发模式,给我们带来的不只是架构的变化,更是开发理念的转变。在这种理念下,软件开发过程更快速,软件质量更高。用户只要遵循一定的开发模式,平台就会保障软件最终运行的架构、性能、可用性和扩展性。

文章来自微信公众号:云技术实践

本文链接:http://www.yunweipai.com/14784.html

网友评论comments

发表评论

邮箱地址不会被公开。

暂无评论

Copyright © 2012-2021 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部