网络游戏分布式数据热更新方法及装置与流程

文档序号:17474289发布日期:2019-04-20 06:01阅读:232来源:国知局
网络游戏分布式数据热更新方法及装置与流程

本发明实施例涉及数据处理技术领域,具体而言,涉及一种网络游戏分布式数据热更新方法及装置。



背景技术:

在大型网络游戏中开发过程中,经常要访问各种数据,这些数据可能会分布在的多个进程、多台物理服务器中。传统的访问数据的方法可能是通过进程间通信去不同的服务器进程请求需要的数据。这种数据的请求方式是一种异步的方法,在实际的系统逻辑中会带来一系列的问题:首先无法保证游戏系统逻辑的顺序,可能造成灾难性的后果,其次想要实时监听数据,在数据进行改变时获取通知在传统的做法下会较为复杂,最后由于网络游戏是一种对游戏延迟要求高的系统,异步的方法无法保证数据访问的效率,一般进行进程间通信获取的远端的数据会有几毫秒甚至十几毫秒的延迟,而网络游戏中这种数据的访问可能要求微秒级甚至纳秒级,如果数据不能立刻返回,可能导致玩家的体验较差,某一些游戏操作无法进行的可能。



技术实现要素:

有鉴于此,本发明提供了一种网络游戏分布式数据热更新方法及装置。

本发明实施例提供了一种网络游戏分布式数据热更新方法,应用于与至少一个逻辑服务器通信连接的分布式容器主机,所述方法包括:

检测本地文件中的数据元表文件内容是否已更新;

若检测到所述数据元表文件内容已更新,根据所述数据元表文件内容的更新方式生成更新消息包,将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新;

检测所述至少一个逻辑服务器是否完成对所述当前数据元表文件内容的更新,若检测到所述至少一个逻辑服务器完成对所述当前数据元表文件内容的更新,控制所述至少一个逻辑服务器将完成更新的当前数据元表文件内容同步至另一分布式容器主机。

可选地,根据所述数据元表文件内容的更新方式生成更新消息包的步骤,包括:

若所述更新方式为列增删更新方式,根据所述列增删更新方式生成第一更新消息包;

若所述更新方式为列数据类型转换更新方式,获取所述数据元表文件内容中指定列的待转换数据类型和目标数据类型,根据所述待转换数据类型和所述目标数据类型生成第二更新消息包。

可选地,将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新的步骤,包括:

若所述更新消息包为第一更新消息包,使所述至少一个逻辑服务器解析获得所述第一更新消息包中包括的列增删更新方式,使所述至少一个逻辑服务器根据解析得到的列增删更新方式对所述当前数据元表文件内容进行列增删。

可选地,将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新的步骤,包括:

若所述更新消息包为第二更新消息包,使所述至少一个逻辑服务器解析获得所述第二更新消息包中包括的指定列的待转换数据类型和目标数据类型,使所述至少一个逻辑服务器根据解析得到的指定列的待转换数据类型和目标数据类型对所述当前数据元表文件内容进行列数据类型转换。

可选地,所述方法还包括:

若所述逻辑服务器为多个,获取多个所述逻辑服务器中的其中一个逻辑服务器发送的同步规则更新包;

解析获得所述同步规则更新包中包括的更新规则,

若所述更新规则为增加一分布式容器数据集,获取该分布式容器数据集并将该分布式容器数据集进行添加;

将该分布式容器数据集打包并发送至多个所述逻辑服务器中的其他逻辑服务器以使所述其他逻辑服务器根据打包之后的分布式容器数据集进行更新。

本发明实施例还提供了一种网络游戏分布式数据热更新装置,应用于与至少一个逻辑服务器通信连接的分布式容器主机,所述装置包括:

检测模块,用于检测本地文件中的数据元表文件内容是否已更新;

更新模块,用于若检测到所述数据元表文件内容已更新,根据所述数据元表文件内容的更新方式生成更新消息包,将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新;

同步模块,用于检测所述至少一个逻辑服务器是否完成对所述当前数据元表文件内容的更新,若检测到所述至少一个逻辑服务器完成对所述当前数据元表文件内容的更新,控制所述至少一个逻辑服务器将完成更新的当前数据元表文件内容同步至另一分布式容器主机。

可选地,所述更新模块通过以下方式根据所述数据元表文件内容的更新方式生成更新消息包:

若所述更新方式为列增删更新方式,根据所述列增删更新方式生成第一更新消息包;

若所述更新方式为列数据类型转换更新方式,获取所述数据元表文件内容中指定列的待转换数据类型和目标数据类型,根据所述待转换数据类型和所述目标数据类型生成第二更新消息包。

可选地,所述更新模块通过以下方式将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新:

若所述更新消息包为第一更新消息包,使所述至少一个逻辑服务器解析获得所述第一更新消息包中包括的列增删更新方式,使所述至少一个逻辑服务器根据解析得到的列增删更新方式对所述当前数据元表文件内容进行列增删。

可选地,所述更新模块通过以下方式将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新,包括:

若所述更新消息包为第二更新消息包,使所述至少一个逻辑服务器解析获得所述第二更新消息包中包括的指定列的待转换数据类型和目标数据类型,使所述至少一个逻辑服务器根据解析得到的指定列的待转换数据类型和目标数据类型对所述当前数据元表文件内容进行列数据类型转换。

可选地,所述装置还包括:

同步规则更新模块,用于若所述逻辑服务器为多个,获取多个所述逻辑服务器中的其中一个逻辑服务器发送的同步规则更新包;解析获得所述同步规则更新包中包括的更新规则,若所述更新规则为增加一分布式容器数据集,获取该分布式容器数据集并将该分布式容器数据集进行添加;将该分布式容器数据集打包并发送至多个所述逻辑服务器中的其他逻辑服务器以使所述其他逻辑服务器根据打包之后的分布式容器数据集进行更新。

本发明实施例还提供了一种分布式容器主机,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的网络游戏分布式数据热更新方法。

本发明实施例还提供了一种计算机可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在分布式容器主机执行上述的网络游戏分布式数据热更新方法。

有益效果

本发明实施例提供的网络游戏分布式数据热更新方法及装置,逻辑服务器与分布式容器主机为多对多连接关系,当一个分布式容器主机检测到本地文件中的数据元表文件内容更新时,会生成对应的更新消息包发送至与该分布式容器主机通信连接的至少一个逻辑服务器以使至少一个逻辑服务器对当前数据元表文件内容进行更新,并控制至少一个逻辑服务器将完成更新的当前数据元表文件内容同步至另一分布式容器主机,如此,多个分布式容器主机与多个逻辑服务器形成数据更新、同步网络,保证了数据更新的时效性,减少了数据更新的延时。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例所提供的一种分布式容器主机10的方框示意图。

图2为本发明实施例所提供的一种网络游戏分布式数据热更新方法的流程图。

图3为本发明实施例所提供的一种分布式容器主机与逻辑服务器的结构框图。

图4为本发明实施例所提供的一种网络游戏分布式数据热更新方法的另一流程图。

图5为本发明实施例所提供的一种网络游戏分布式数据热更新装置20的模块框图。

图标:

10-分布式容器主机;11-存储器;12-处理器;13-网络模块;

20-网络游戏分布式数据热更新装置;21-检测模块;22-更新模块;23-同步模块;24-同步规则更新模块;

31-第一逻辑服务器;32-第二逻辑服务器;

40-第二分布式容器主机;41-第三分布式容器主机。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

发明人经调查发现,在大型网络游戏中开发过程中,对数据更新的时效性要求较高,但是现有技术大多难以满足时效性需求。具体地,常见的数据更新处理方法采用redis等nosql的分布式数据库,但redis这种nosql的分布式数据库架构一般是cs架构,实际的数据是存在远端服务器(或者服务器组)中。由于网路游戏中对数据读写需要非常高的实时性,对一些数据的需要实时读取、写入,因此redis这种远端分布式数据库的架构存在无法满足高实时性数据的要求,无法满足某一些游戏功能的要求。

而常见的另一种数据更新处理方法采用本地内存数据库,但是由于数据都是存储在本地的内存中的,在网络游戏分布式服务器的应用场景下无法完成不同服务器之间相同数据的同步。

以上现有技术中的方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。

基于上述研究,本发明实施例提供了一种网络游戏分布式数据热更新方法及装置,能够提高数据更新同步的时效性。

图1示出了本发明实施例所提供的一种分布式容器主机10的方框示意图。本发明实施例中的分布式容器主机10具有数据存储、传输、处理功能,如图1所示,分布式容器主机10包括:存储器11、处理器12、网络模块13和网络游戏分布式数据热更新装置20。

存储器11、处理器12和网络模块13之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件互相之间可以通过一条或多条通讯总线或信号线实现电性连接。存储器11中存储有网络游戏分布式数据热更新装置20,所述网络游戏分布式数据热更新装置20包括至少一个可以软件或固件(firmware)的形式储存于所述存储器11中的软件功能模块,所述处理器12通过运行存储在存储器11内的软件程序以及模块,例如本发明实施例中的网络游戏分布式数据热更新装置20,从而执行各种功能应用以及数据处理,即实现本发明实施例中的网络游戏分布式数据热更新方法。

其中,所述存储器11可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器11用于存储程序,所述处理器12在接收到执行指令后,执行所述程序。

所述处理器12可能是一种集成电路芯片,具有数据的处理能力。上述的处理器12可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

网络模块13用于通过网络建立分布式容器主机10与其他通信终端设备之间的通信连接,实现网络信号及数据的收发操作。上述网络信号可包括无线信号或者有线信号。

可以理解,图1所示的结构仅为示意,分布式容器主机10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例还提供一种计算机可读存储介质,所述可读存储介质包括计算机程序。所述计算机程序运行时控制所述可读存储介质所在分布式容器主机10执行下面的网络游戏分布式数据热更新方法。

图2示出了本发明实施例所提供的一种网络游戏分布式数据热更新方法的流程图。所述方法有关的流程所定义的方法步骤应用于分布式容器主机10,可以由所述处理器12实现。

该分布式容器主机10与多个逻辑服务器通信连接,其中,各个逻辑服务器又通信连接有其他分布式容器主机,请结合参阅图3,分布式容器主机10通信连接于第一逻辑服务器31和第二逻辑服务器32,第一逻辑服务器31通信连接于第二分布式容器主机40,第二逻辑服务器32通信连接于第三分布式容器主机41,本实施例仅以三个分布式容器主机和两个逻辑服务器为例进行说明,在实际情况中,可以由多个分布式容器主机和多个逻辑服务器形成数据更新处理网络,如此,能够提高数据更新的时效性,减少延时。

下面将对图2所示的具体流程进行详细阐述:

步骤s21,检测本地文件中的数据元表文件内容是否已更新。

分布式容器主机10检测本地文件中的数据元表文件内容是否已更新,若检测到数据元表文件内容已更新,转向步骤s22。

步骤s22,根据数据元表文件内容的更新方式生成更新消息包,将更新消息包发送至至少一个逻辑服务器以使至少一个逻辑服务器对当前数据元表文件内容进行更新。

在本实施例中,更新方式包括两种:列增删更新方式和列数据类型转换更新方式。

分布式容器主机10会根据不同的更新方式生成不同的更新消息包,例如,根据列增删更新方式生成第一更新消息包,根据列数据类型转换更新方式生成第二更新消息包。

若分布式容器主机10检测到的更新方式为列增删,分布式容器主机10将第一更新消息包分别发送至第一逻辑服务器31和第二逻辑服务器32,使第一逻辑服务器31和第二逻辑服务器32解析获得第一更新消息包中包括的列增删更新方式并根据该方式对各自的当前数据元表文件内容进行列增删。

若分布式容器主机10检测到的更新方式为列数据类型转换更新方式,获取数据元表文件内容中指定列的待转换数据类型和目标数据类型,根据待转换数据类型和目标数据类型生成第二更新消息包,可以理解,在获取数据元表文件内容中指定列的待转换数据类型和目标数据类型之前,分布式容器主机10已在本地文件中完成更新。将第二更新消息包发送至第一逻辑服务器31和第二逻辑服务器32,使第一逻辑服务器31和第二逻辑服务器32解析获得第二更新消息包中包括的指定列的待转换数据类型和目标数据类型并根据指定列的待转换数据类型和目标数据类型对各自的当前数据元表文件内容进行列数据类型转换。

步骤s23,检测至少一个逻辑服务器是否完成对当前数据元表文件内容的更新。

若完成更新,转向步骤s24。

步骤s24,控制至少一个逻辑服务器将完成更新的当前数据元表文件内容同步至另一分布式容器主机。

例如,若分布式容器主机10检测到第一逻辑服务器31完成列增删的更新,控制第一逻辑服务器31将完成列增删的当前数据元表文件内容同步至第二分布式容器主机40。

又例如,若分布式容器主机10检测到第二逻辑服务器32完成列数据类型转换的更新,控制第二逻辑服务器32将完成列数据类型转换的当前数据元表文件内容同步至第三分布式容器主机41。

一般情况下会在游戏大区部署多个分布式容器主机,采用上述方法能够实现数据的及时更新,减少数据访问延时。

可选地,请参阅图4,为本发明实施例所提供的一种网络游戏分布式数据更新方法的另一流程图,可以理解,该数据更新方法由逻辑服务器开启:

步骤s31,获取逻辑服务器发送的同步规则更新包。

当逻辑服务器检测到本地计算机中同步规则文件有更新时,会生成同步规则更新包并发送至与该逻辑服务器通信连接的分布式容器主机。

请结合参阅图3和图4,例如,分布式容器主机10获取第一逻辑服务器31发送的同步规则更新包。

步骤s32,解析获得同步规则更新包中包括的更新规则,根据解析得到的更新规则进行对应更新操作。

例如,若更新规则为增加一分布式容器数据集,分布式容器主机10获取该分布式容器数据集并将该分布式容器数据集进行添加,并将该分布式容器数据集打包并发送至第二逻辑服务器32以使第二逻辑服务器32根据打包之后的分布式容器数据集进行更新。

又例如,若更新规则为删除一分布式容器数据集,则分布式容器主机10不产生新的更新。

可选地,为了提高系统稳定性,会为每个分布式容器主机配备至少一个备机,备机之间由优先级来确定下一个主机是哪台备机。分布式容器主机在宕机后,在分布式组中的备机会根据事先配置好的优先级选出下一台分布式容器主机。

可选地,本发明实施例还提供了对逻辑服务器进行同步的相关说明,具体如下:

对于任一逻辑服务器,在启动时需要根据当前逻辑,发送消息通知与之通信连接的分布式容器主机,其中,消息中包括该逻辑服务器订阅的分布式容器数据。

分布式容器主机在接收到消息后,同步当前记录的所有分布式容器数据集对应的分布式容器数据到逻辑服务器。

逻辑服务器在接收到分布式容器主机和备机的所有自身订阅的分布式容器数据后,可正式开始工作。同时会发送消息通知分布式容器主机和备机自身已经开始工作。

对于任一逻辑服务器,分布式容器提供一种key-value型的数据更新接口,该接口要求逻辑服务器在更新数据时传入数据的key值,该值要求在整个分布式容器表中唯一。分布式容器提供生成key值的方法,或逻辑服务器采用自己能保证唯一的键值进行分布式容器数据更新。

分布式容器使用者调用更新数据接口后,分布式容器使用者会自动生成分布式容器数据更新包将数据更新传递到分布式容器数据主节点和备节点,消息传递会采用压缩算法对数据内容进行数据压缩,以保证在网络上进行的数据传输是一种较小的数据。

分布式容器主机收到上述压缩之后的数据内容,将数据内容在本地进行存储,同时将数据内容更新到所有已经订阅该内容的其他逻辑服务器。

其他逻辑服务器在收到分布式容器主机发送的数据内容更新消息后,会更新本地的分布式容器数据表中的内容,以供其他系统使用。

可以理解,上述方法为大规模的分布式网络游戏服务端框架提供了基础高性能的数据读写支持,在编写游戏逻辑的不用在意数据的来源,为基础的逻辑系统功能的编写提供基础支持。由于支持热更新,为游戏实际运营不停机更新游戏逻辑提供数据端的支持。提供了分布式一致锁保证方案,为数据一致性提供了基础支持。

在上述基础上,如图5所示,本发明实施例提供了一种网络游戏分布式数据热更新装置20,所述网络游戏分布式数据热更新装置20包括:检测模块21、更新模块22、同步模块23和同步规则更新模块24。

检测模块21,用于检测本地文件中的数据元表文件内容是否已更新。

由于检测模块21和图2中步骤s21的实现原理类似,因此在此不作更多说明。

更新模块22,用于若检测到所述数据元表文件内容已更新,根据所述数据元表文件内容的更新方式生成更新消息包,将所述更新消息包发送至所述至少一个逻辑服务器以使所述至少一个逻辑服务器对当前数据元表文件内容进行更新。

由于更新模块22和图2中步骤s22的实现原理类似,因此在此不作更多说明。

同步模块23,用于检测所述至少一个逻辑服务器是否完成对所述当前数据元表文件内容的更新,若检测到所述至少一个逻辑服务器完成对所述当前数据元表文件内容的更新,控制所述至少一个逻辑服务器将完成更新的当前数据元表文件内容同步至另一分布式容器主机。

由于同步模块23和图2中步骤s23和步骤s24的实现原理类似,因此在此不作更多说明。

同步规则更新模块24,用于若所述逻辑服务器为多个,获取多个所述逻辑服务器中的其中一个逻辑服务器发送的同步规则更新包;解析获得所述同步规则更新包中包括的更新规则,若所述更新规则为增加一分布式容器数据集,获取该分布式容器数据集并将该分布式容器数据集进行添加;将该分布式容器数据集打包并发送至多个所述逻辑服务器中的其他逻辑服务器以使所述其他逻辑服务器根据打包之后的分布式容器数据集进行更新。

由于同步规则更新模块24和图4中步骤s31和步骤s32的实现原理类似,因此在此不作更多说明。

综上,本发明实施例所提供的网络游戏分布式数据热更新方法及装置,使得多个分布式容器主机与多个逻辑服务器形成数据更新、同步网络,保证了数据更新的时效性,减少了数据更新的延时。

在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,分布式容器主机10,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1