前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >韩伟:解谜腾讯游戏海量服务架构

韩伟:解谜腾讯游戏海量服务架构

原创
作者头像
腾讯云开发者社区
发布2018-01-22 17:55:29
1.7K0
发布2018-01-22 17:55:29
举报
文章被收录于专栏:腾讯云开发者社区头条

网络游戏和其他互联网服务一样,需要面对承载海量用户的压力,同时还需要满足游戏所要求的低延迟、业务逻辑高复杂度的特性。腾讯游戏研发部资深架构师韩伟为大家带来了“解谜腾讯游戏海量服务架构”的主题分享。

韩伟
韩伟

对于游戏开发者来说,全区的好处在于开服合服很简单。这个简单体现在三点。第一是把两个服务器合在一起导入并且合并数据,第二是负载均衡,运维操作比较简单。第三点就是有稳定性,全区架构中的所有服务器都是玩家的备份服务器,只要架构有足够弹性,就可以在一部跟服务器出故障的情况下使玩家不受影响。

韩伟讲解到,全区架构的核心就是要有分布式的设计和实践,而分布式系统的门槛就是通信和缓存。因为多个进程之间的相互协作就需要一个很好的通信机制。此外,由于游戏服务是一个带状态的服务,它的进程里面往往是存有很多数据而且玩家会频繁发出指令,延迟要求十分苛刻,但问题就在于很多机器、进程之间的内存是不通的,要让它们协调运作就需要考虑到缓存的事情。

韩伟接着介绍了腾讯云对于游戏的分布进程集群图。在集群图中,不管介入进程也好,逻辑进程也好,都是在一个统一的集群当中。在腾讯的实践当中,有的项目使用这个来充当集群中心,即由一个集群中心管理。有了集群中心,集群进程之间才能互相知道后面有哪些服务,该发给谁,或者任何一个逻辑进程只负责某一个功能。当然,腾讯还有别的集群方案,比如区域中心化的管理系统,在这个集群中,每一个逻辑进程其实都相当于小的集群中心,它们会自己相互协调。它们当中的任意节点都能够充当这个集群中心的管理。在腾讯的实际运营中,我们发现,把进程放在不同的服务器上运行,可以达到负载均衡。因为如果机器本身能力强大的话,可以把一些不同功能的服务拆分到不同进程中。所以如果某个进程出现问题,可以在代码层面很快得知哪一块可能是有问题的,不用在全功能的代码里排查问题。

接下来,韩伟介绍了腾讯云的分布式通信,虽然都是运用消息队列技术,但和现在的分布式通信不同的是,腾讯的消息队列不一定有一个消息队列服务的进程,而每一个消息的收发端可能都是一个消息队列服务,这样可以明显减少50%的传递时间。腾讯攻破的另一难点就是数据储存。腾讯的分布式储存系统可以达到负载均衡。当主机断了时,可以很快切换到热备机上,数据也不需要准备,因为每个数据储存其实都是同步的。

对于第二个门槛——缓存,韩伟指出最大的问题就是有异常,比如有逻辑根据客户端计算下来的结果,就不能访问原来的进程,可能访问到别的进程上面去。而腾讯云的服务器集群之间,逻辑进程还是会按照正常的哈希结果,把这个数据转化给有缓存的地方,这样对于客户端来说,就相当于连接哪个都是相同的,只是连接错误的延迟会稍高一些。

韩伟:解谜腾讯游戏海量服务架构.pptx

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档