数据结构论坛

首页 » 分类 » 问答 » 游戏开发经验总结分布式架构数据库与进程
TUhjnbcbe - 2021/2/10 17:10:00
寒假白癜风诊疗计划 https://m-mip.39.net/disease/mipso_6298361.html

如果把游戏看成一辆赛车,那么,游戏开发在其中扮演着至关重要的发动机角色,控制着玩家所感知到的剧情、关卡、实时社交沟通、版本更新、兼容和性能等问题;而运维则充当了决定赛车生死的安全刹车,不管是端游、页游还是手游,能否扛住卡顿、宕机与DDoS攻击等都离不开运维的支持。但开发者往往在突破核心玩法、保障运维质量、抵御恶意攻击等方面,会遇到诸多挑战。

腾讯云,基于自身业务与海量用户,在如何打造一款爆款游戏上摸索出了一系列完整的解决方案。1月12日腾讯云联合InfoQ举办的游戏主题沙龙,来自腾讯云、腾讯游戏和三七互娱的专家们,就游戏的云端开发与运维展开了深入探讨,本文整理了部分精彩内容,感兴趣的读者可以点击文末下载讲师完整PDF。

    提供云端技术支持腾讯云游戏解决方案概述  

来自腾讯云的腾讯游戏云解决方案架构副总监王璋,从游戏业务云上最佳实践和案例入手,深度剖析了游戏开发面临的技术挑战,以及腾讯云在游戏行业提供的各种解决方案,与一众参会者探讨如何寻找适合自身业务的游戏云方案。

    游戏开发面临的技术挑战?  

王璋首先介绍到,过去一年,游戏开发者最关心的问题主要包含加速+专线、攻击、游戏语音、IOPS+PPS以及Hadoop+AI大数据分析等,这也是当前游戏开发者比较头疼的几个方面,基于这些问题,腾讯云提供了系列通用解决方案。

    腾讯云游戏行业技术解决方案      网络加速  

玩家到服务端的加速,尤其是跨国加速更多的还是由玩家去购买迅游、网易等提供的加速器产品,为降低玩家体验游戏的门槛,提升玩家的体验,腾讯云提供两套方案来实现服务端解决跨域长距离传输网络质量问题。

如下图为腾讯云的“游戏加速家架构(一)”,具体实现方式为在玩家所在的区域与游戏服务器之间架设一条专线通道构建起对等网络,通过专线链路为玩家提供上下行稳定可靠的访问体验。当然这套方案需要游戏开发者在玩家和服务器所在的区域搭建两个代理集群,用于上下行流量的转发,有一定成本开销,同时对于已经在线运营的业务涉及到玩家请求IP地址的变更。

另一套方案,业务的改造成本较低,即保持原有RS(RealyServer)IP地址不变,新增其他区域的LBSIP地址与映射RS映射,公网IP所在的网关集群与RS间为专线链路,实现一台RS通过多个公网IP辐射到不同的地域。比如,RS在香港,国内的玩家可分别从腾讯云华北、华东、华南Region的LBSIP上行,走专线到RS,韩国、日本、新加坡区域的玩家也同样可以就近通过本地的LBSIP上行访问RS的服务。

    安全防护  

除了加速解决方案,腾讯云在网络攻击的安全防护上也提供了多套方案来对抗不同特点的攻击,包括超大流量攻击对抗方案、精细化攻击对抗方案、棋牌游戏攻击对抗方案等等。以超大流量攻击对抗为例,业务遭受攻击时长占业务在线时长其实不大,所以业务的常态服务可以通过体验较好的BGP网络提供,并且BGP可以提供百G规模攻击流量的清洗,超出百G的攻击BGP的清洗成本会直线上升,因此会通过腾讯云提供的中间域名将流量自动调度到三网出口进行超大攻击流量的清洗。

    其他场景的应用探索  

除了上述解决方案,腾讯云针对游戏业务的痛点,还在尝试其他解决方案的探索,比如全球支付、游戏智能客服、游戏营销安全等。以游戏智能客服为例,玩家在游戏中遇到的问题大多是相似的,通过对知识库数据的分析,实现在线自动应答,依靠腾讯海量的用户标签数据,和优秀的算法,训练出真正智能的客服,游戏都可以通过智能客服解答玩家的疑问,提升玩家问题的处理效率和游戏本身的体验。

    腾讯游戏海量服务架构构建之路  

网络游戏和其他互联网服务一样,需要面对承载海量服务的压力,同时还需要满足游戏所要求的低延迟、高业务逻辑复杂度特性。来自腾讯游戏研发部资深架构师韩伟,基于腾讯游戏的海量架构构建经验,为大家分享了游戏海量服务的架构特征、核心模块以及弹性能力的实现手段等技术内容,为游戏开发者在面对海量用户时提供了一些借鉴思路。

    分布式进程框架构建  

现在的腾讯游戏,包括业界其他很多游戏,如魔兽世界等大多使用的是跨服务器,所以现在游戏服务器端的趋势是全面的分布式系统。相较于古老的游戏架构,分布式系统,具有方便部署到不同机器、更精细的负载均衡单位以及便于监控和问题定位等优势,更加符合闲杂用户对游戏系统的体验要求。

下图是腾讯云的分布式集群架构图,主要包括接入进程和逻辑进程。左边是客户端,腾讯有一些接入进程,主要是处理网络连接,把这些网络连接的数据做初步处理之后,再放到逻辑进程进行分析。有可能这个逻辑进程并不是自己的进程,因此可能还会转发到别的逻辑请求,最后给客户端回应,也有一种情况是游戏需要多个回应,即一对多的请求,这个时候整个过程需要由多个进程同时满足,不同的客户端可能连接在不同的进程上面。

不管是接入进程还是逻辑进程,都需要统一的集群中心来管理,集群中心是所有集群管理的最核心的节点,用来管理多进程的模型。可以看到,如果将整个集群看成一个单位的话,每一个进程其实都可以方便的部署到不同的机器上去,通过集群中心,进程之间也可以知道对方的信息、收发数据,然后合理的将进程分布到不同的机器上,提高整个集群的容量。

那么,腾讯云是如何构建这样一个分布式的集群系统的?韩伟提到了两个关键点:分布式通信和缓存系统。

分布式通信:现在分布式通信基本上都会使用到消息队列技术,腾讯的消息队列有一个特点,每一个消息的收发端都是一个消息队列服务。这个消息队列服务的收发端只收取自己相关的数据,这种方式可以明显减少消息列队在中转过程的传递时间。另外,腾讯云也会采用自定义路由的方式,由客户端根据需求选取合适的路由方式,灵活配置集群中心的地址。

分布式存储:分布式存储的核心要点为持久化和缓存两大块。接入代理在接到请求后,会带上一个数据片,包含数据来源等相关信息,用以做数据的追踪和留存;在缓存方面,逻辑进程负责承载玩家所要读写的数据缓存,按照腾讯游戏运营标准,玩家丢失数据的时间不能超过十分钟,因此,腾讯云会做一个定时自动回写的代码,每十分钟自动回写一次,防止数据丢失。

这套系统每个进程之间的链接看起来比较复杂,但是实际上这个复杂性被一套通用的分布式通信消息队列所接管,开发者只需要了解这个集群里面有什么样的服务,并不需要自己管理这个复杂性进程,因此,这一整套系统的开发和维护上并不困难。

    海量服务器运维实践  

那么,这套分布式系统是如何做运维的呢?首先腾讯云会从部署角度搭建一个云服务平台,做整个集群的进程部署、进程监管等工作这个平台软件会把所有的功能划分成一个个集群,这个里面的节点数量非常多;因此,腾讯云也配套搭建了一套计算能力伸缩平台,根据需求进行自动的扩容和缩容的操作;对于服务接口的定义,系统有服务的绑定、服务的发现才能做服务对接,所以在分布式开发框架之外,也会配置服务管理系统;最后是基础运营服务平台,包含一些非功能性的能力,比如可以输出标准的日志,输入标准的监控指标等,这个平台主要是支持一些运维的操作。

韩伟最后向现场观众透露道,腾讯研发部已经将部分跟游戏逻辑关系不是特别紧密的服务都做成了云平台,比如储存方面,王者荣耀采用这套云平台的储存的同时,全民突击也会用这个存储系统,这样能够极大的提升运营效率以及运维效率。

    “吃鸡”类游戏架构分析  

今年从3月份开始吃鸡游戏一直占据游戏话题排行榜首位,随后,国内的厂商也开始进行这类游戏的开发,据统计,吃鸡“”类游戏的全球销量超过万份,同时在线超过万,连续43周蝉联Steam周销量榜冠*。那么,这样一个火爆游戏的背后,其游戏架构是怎样的呢?并针对“吃鸡”类游戏在反外挂、加速、安全等方面的需求,有什么样的解决方案?来自腾讯游戏云资深架构师贺广平,就“吃鸡”类游戏架构和相关解决方案做了详尽的分析。

    “吃鸡”类游戏的架构分析  

下图为一个“吃鸡”类游戏完整的架构图,这里,lobby和DS服务架构用作全球部署;安全方面有DDOS防护和TP反外挂方案,其中,TSS(tencentsecuritysystem)是腾讯的反外挂系统;XMMP是即时通讯系统,负责信息的传递;TC为腾讯充值系统-IDIP。

整个系统看起来比较复杂,但开发者实际上只要

1
查看完整版本: 游戏开发经验总结分布式架构数据库与进程