部署传奇需要什么服务器

2021-12-10 04:04:17  阅读 195 次 评论 19 条

部署传奇需要什么服务器

腾讯内部技术:《轩辕传奇》服务器架构演变

今天给大家分享一下腾讯游戏《轩辕传奇》的服务器架构讲服务器架构如果只是得一个结果把架构示意图展示一下这种没有什么意义今天我想从一个每个人都会写的最简单的架构模型如何一步一步的演变成《轩辕传奇》分区分世界的架构。

功能扩展性切分与运维扩展性切分

最简单的游戏服务器一个进程搞定所有的功能比如支持500人同时在线开一个服A对应的玩家称,一个进程,架构如下------。如果再开第二个服B如何处理

方案一个进程同时支持两个服的玩家同时游戏----,这样的好处就是跨服通讯非常的方便在一个进程里面缺点就是服的玩家引起的宕机会影响B服的玩家。同一个进程来跑A区,B区无法发挥服务器的多核优势。那么就会演变成方案2。

方案2A服玩家由进程来提供服务B服玩家由ServerB进程来提供服务他们部署到一台机器上。这样的相比方案1的优点就是一台机器上实现了扩容缺点仍然很明显就是如果物理机器坏了两个服的玩家都不能正常的游戏。

ClientA------ServerA

ClientB------ServerB(ServerA,ServerB部署到一台机器上)

再接着演变和拆分得到方案3。

方案3:我们把不同的服放到不同的物理机器上这样不同的服就真正的独立起来。

ClientA------ServerA

ClientB------ServerB(ServerA,ServerB部署到不同机器上)

总结一下方案1到方案2叫做功能可扩展性切分方案2到方案3叫做运维扩展性切分。

分离公共服

不同的服部署到不同的物理机器上不同服之间有一些公共的服务不用每个服的实现一个每个服都架设一个所以把这些公共的服务里单独分离出来,于是架构演变成如下:

这个时候公共服就是全局唯一的多个服共用它就变成了一个单点,公共服的单点故障怎么办单点故障常用的解决方案就是主-备-从。

按功能分离每个服

上面轩辕里面所说的每个服都按照固定的功能来来分三层:连接层(tconnd)逻辑层(logicsrv),存储层(tormsvr)如下图

那么随之而来的问题又来了逻辑处理与数据持久化在一台物理机器上会到导致DB的文件IO拖慢整个系统(每个服百万级玩家,几百个G的数据)。进程运行中每日输出大量的日志像轩辕每天日志量可达几个G的数据。更致命的是如果物理机器崩溃数据库中的商业数据随时会丢失商业数据丢失在长期运营的过程中已经可以算一个很严重的运营事故。所以每个服的架构又会做后面的演变。

按重要性分离:分离逻辑计算与持久化存储部署

游戏运行中的重要数据包括了日志与数据库数据我们讲这些重要性的数据需要持久化存储部署的与逻辑计算分离开来重要的数据采用主-备-从的方式,确保商业数据的稳定性。那么我们的服务器每个服务的架构演变如下:

分区多世界原型演变

总结上面的演变我们把整个轩辕的架构图放出来给大家存储与逻辑分离每个服按功能分成3部分。Cluster级服全局只有唯一的一个World级服,每个世界一组,每个服,包含接入逻辑存储。存储做好分离做好DB,DR。

公共服进一步分离

大体的架构定下来了接下来就是分离一些轩辕里面功能部分先来分离公共服。如下图

我们把公共服的一些固定功能单独的拆分出来不同的服务进程来提供对应的服务比如目录服

版本升级账号服务等。这样把公共服拆分成了一套进程。运维的时候根据运维需求来把公共服部署一套机器。

切分轩辕逻辑进程

当前服的所有玩家都在一个进程上好处就是可以方便的操作到所有玩家风险也是有的一个特性的bug会影响到当前进程上所有其它特性的玩家。接下来我们把逻辑进程来进行拆分MMORPG里面拆分逻辑进程常用的方法是按照场景来拆那么我们的架构演变如下把逻辑拆分成世界多个Scene,如下:

让多个Scene分别服务一些用户,World负责拉取数据协调控制所有的Scene。游戏开发和其它应用用开发最大的不一样就是一个产品上线了结合玩家玩家运营要经常改上线了才刚刚开始所有的功能和特性在一个进程里面不断的更新特性会使得稳定性降低,所以我们把那些相对更新少的功能拆分独立出来提升更新对系统稳定性造成的风险。

总结

最后总结一下,游戏框架如何切分,在轩辕中得到的一些总结经验分享出来,供大家参考:

为可扩展性:一组服一套进程;

为可运维性:一组服一套机器;

为可靠性:弱相关的功能分离;

提高更新的便利性:将平凡更新的部分分离;

按服务的重要性切分:支付系统独立;

按服务特点切分:接入存储,逻辑分离;

切分稳定(基础功能)的与不稳定(业务逻辑)的

好了今天的《轩辕传奇》架构演变就分享到这里了我详细的讲解了一节课程除了分析演变以外还分享了长线运营中的一些经验分享给没有开发过大型玩家在线游戏的开发者。

附教学视频腾讯内部分享:《轩辕传奇》MMO服务器技术架构分享

本文地址:http://sbxxw.com/post/12710.html
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

评论列表