书签 分享 收藏 举报 版权申诉 / 19

一种资源数据共享方法、服务器及系统.pdf

  • 上传人:32
  • 文档编号:6350815
  • 上传时间:2019-06-03
  • 格式:PDF
  • 页数:19
  • 大小:1.27MB
  • 摘要
    申请专利号:

    CN201410132001.1

    申请日:

    2014.04.02

    公开号:

    CN104980454A

    公开日:

    2015.10.14

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):H04L 29/08申请日:20140402|||公开

    IPC分类号:

    H04L29/08; G06F17/30

    主分类号:

    H04L29/08

    申请人:

    腾讯科技(深圳)有限公司

    发明人:

    莫锡昌; 张正

    地址:

    518000广东省深圳市福田区振兴路赛格科技园2栋东403室

    优先权:

    专利代理机构:

    深圳市深佳知识产权代理事务所(普通合伙)44285

    代理人:

    王仲凯

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供了一种资源数据共享方法、服务器及系统,预先配置资源配置文件,读取所述资源配置文件中的所述预设的键值和所述索引名称;根据所述预设的键值向操作系统请求内存空间创建共享内存;从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机的各个场景服务器的进程共享所述资源数据。同一台物理机的各个场景服务器的进程共享内存从磁盘中所加载的所述资源数据,所述资源数据无需被各个不同的场景服务器的进程从磁盘中重复加载,也无需重复占用物理机给各个场景服务器所分配的物理内存,节省物理机的内存空间,提高物理机的利用率。

    权利要求书

    权利要求书
    1.  一种资源数据共享方法,应用于资源加载服务器,其特征在于,预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据,所述方法包括:
    读取所述资源配置文件中的所述预设的键值和所述索引名称;
    根据所述预设的键值向操作系统请求内存空间创建共享内存;
    从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。

    2.  根据权利要求1所述的方法,其特征在于,所述向各个场景服务器的进程共享所述资源数据包括:
    当各个场景服务器的进程通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空间。

    3.  根据权利要求1所述的方法,其特征在于,所述从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存后还包括:
    设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。

    4.  根据权利要求1-3任意一项所述的方法,其特征在于,所述资源数据包括:
    策划配置数据、美术资源数据和地图资源数据。

    5.  一种资源数据共享方法,应用于各个场景服务器,其特征在于,所述方法包括:
    执行进程启动;
    读取资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据 为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据;
    根据所述预设的键值访问共享内存,所述共享内存是所述资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有所述资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据;
    将所述共享内存中的所述资源数据映射到内存空间。

    6.  根据权利要求5所述的方法,其特征在于,所述执行进程启动包括:
    接收启动指令,执行进程启动。

    7.  根据权利要求5所述的方法,其特征在于,所述执行进程启动包括:
    从所述资源加载服务器获得信号量键值;
    每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。

    8.  一种资源加载服务器,其特征在于,所述服务器包括:
    配置单元,用于预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据;
    第一读取单元,用于读取所述资源配置文件中的所述预设的键值和所述索引名称;
    创建单元,用于根据所述预设的键值向操作系统请求内存空间创建共享内存;
    共享单元,用于从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。

    9.  根据权利要求8所述的服务器,其特征在于,
    所述共享单元,具体用于当各个场景服务器的进程通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空 间。

    10.  根据权利要求8所述的服务器,其特征在于,所述服务器还包括:
    设置单元,用于设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    存储单元,用于将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。

    11.  一种场景服务器,其特征在于,所述服务器包括:
    启动单元,用于执行进程启动;
    第二读取单元,用于读取所述资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据;
    访问单元,用于根据所述预设的键值访问共享内存,所述共享内存是所述资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据;
    映射单元,用于将所述共享内存中的所述资源数据镜像到内存空间。

    12.  根据权利要求11所述的服务器,其特征在于,所述启动单元包括:
    接收子单元,用于接收启动指令;
    第一启动子单元,用于执行进程启动。

    13.  根据权利要求11所述的服务器,其特征在于,所述启动单元包括:
    获取子单元,用于从所述资源加载服务器获得信号量键值;
    检测子单元,用于每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    第二启动子单元,用于当所述信号量存在,且对所述信号量执行wait 操作成功后,执行进程启动。

    14.  一种资源数据共享系统,其特征在于,
    所述系统包括权利要求8-10任意一项所述的资源加载服务器以及多个权利要求11-13任意一项所述的场景服务器。

    说明书

    说明书一种资源数据共享方法、服务器及系统
    技术领域
    本发明涉及计算机技术领域,特别是涉及一种资源数据共享方法、服务器及系统。
    背景技术
    网络游戏服务器是指与网络游戏客户端相对应,安装在互联网数据中心(Internet Data Center,IDC)的硬件上,为网络游戏客户端提供数据转发与逻辑处理服务的程序。经典的网络游戏服务器包括一个总控服务器与多个场景服务器。其中,场景服务器主要处理网络游戏中非全局性的逻辑数据,处理不同的局部场景游戏逻辑数据。
    随着计算机技术的发展,一台物理机可以配备多个CPU核心,多核CPU的应用,推动了数据并行计算的发展,进而提高了网络游戏服务器的逻辑数据处理能力。理论上,一台物理机可以部署与CPU核心数量相同的场景服务器。当多个场景服务器进程启动时,每个场景服务器向操作系统请求一个物理内存,各个场景服务器从磁盘将各自所需的逻辑数据加载到所分配的物理内存。在场景服务器运行时,从其物理内存中读取运行所需的逻辑数据进行处理,每个场景服务器所加载的逻辑数据之间相互独立。
    对于同一个网络游戏来说,不同的场景服务器所加载的逻辑数据中,都包含有策划配置数据、美术资源数据与地图资源数据等多种相同的逻辑数据。在这种情况下,上述各个场景服务器都包含的相同的逻辑数据会被每个场景服务器从磁盘中加载到各自的物理内存中存储,这样就导致相同的逻辑数据被重复加载,并占用多个物理内存,造成物理内存大量浪费,降低了物理机的利用率。
    发明内容
    有鉴于此,本发明提供了一种资源数据共享方法、服务器及系统,资源加载服务器将同一个物理机的各个场景服务器的进程所需的相同的逻辑数据作为资源数据加载到其所创建的共享内存,向各个场景服务器的进程共享所述资源数据,节省物理机的物理内存。
    本发明实施例第一方面提供了一种资源数据共享方法,应用于资源加载服务器,预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据,所述方法包括:
    读取所述资源配置文件中的所述预设的键值和所述索引名称;
    根据所述预设的键值向操作系统请求内存空间创建共享内存;
    从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。
    本发明实施例第一方面的第一种可能的实施方式中,所述向各个场景服务器的进程共享所述资源数据包括:
    当各个场景服务器的进程通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空间。
    本发明实施例第一方面的第二种可能的实施方式中,所述从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存后还包括:
    设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    结合本发明实施例第一方面至第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述资源数据包括:
    策划配置数据、美术资源数据和地图资源数据。
    本发明实施例第二方面提供了一种资源数据共享方法,应用于各个场景服务器,所述方法包括:
    执行进程启动;
    读取资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据;
    根据所述预设的键值访问共享内存,所述共享内存是所述资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有所述资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据;
    将所述共享内存中的所述资源数据映射到内存空间。
    本发明实施例第二方面第一种可能的实施方式中,所述执行进程启动包括:
    接收启动指令,执行进程启动。
    本发明实施例第二方面第二种可能的实施方式中,所述执行进程启动包括:
    从所述资源加载服务器获得信号量键值;
    每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    本发明实施例第三方面提供了一种资源加载服务器,所述服务器包括:
    配置单元,用于预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据;
    第一读取单元,用于读取所述资源配置文件中的所述预设的键值和所述索引名称;
    创建单元,用于根据所述预设的键值向操作系统请求内存空间创建共 享内存;
    共享单元,用于从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。
    本发明实施例第三方面第一种可能的实施方式中,
    所述共享单元,具体用于当各个场景服务器的进程通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空间。
    本发明实施例第三方面第二种可能的实施方式中,所述服务器还包括:
    设置单元,用于设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    存储单元,用于将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    本发明实施例第四方面提供了一种场景服务器,所述服务器包括:
    启动单元,用于执行进程启动;
    第二读取单元,用于读取所述资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据;
    访问单元,用于根据所述预设的键值访问共享内存,所述共享内存是所述资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据;
    映射单元,用于将所述共享内存中的所述资源数据镜像到内存空间。
    本发明实施例第四方面第一种可能的实施方式中,所述启动单元包括:
    接收子单元,用于接收启动指令;
    第一启动子单元,用于执行进程启动。
    本发明实施例第四方面第二种可能的实施方式中,所述启动单元包括:
    获取子单元,用于从所述资源加载服务器获得信号量键值;
    检测子单元,用于每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    第二启动子单元,用于当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    本发明实施例第五方面提供了一种资源数据共享系统,
    所述系统包括本发明实施例第三方面至第三方面第二种可能的实现方式所述的资源加载服务器以及本发明第四方面至第四方面第二种可能的实施方式所述的场景服务器。
    由上述内容可知,本发明有如下有益效果:
    本发明提供了一种资源数据共享方法、服务器及系统,预先配置资源配置文件,读取所述资源配置文件中的所述预设的键值和所述索引名称;根据所述预设的键值向操作系统请求内存空间创建共享内存;从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机的各个场景服务器的进程共享所述资源数据。同一台物理机的各个场景服务器的进程共享内存从磁盘中所加载的所述资源数据,所述资源数据无需被各个不同的场景服务器的进程从磁盘中重复加载,也无需重复占用物理机给各个场景服务器所分配的物理内存,节省物理机的内存空间,提高物理机的利用率。
    附图说明
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    图1为本发明一种资源数据共享方法实施例一流程图;
    图2为本发明一种资源数据共享方法实施例二流程图;
    图3为本发明一种资源数据共享方法实施例三流程图;
    图4为本发明一种资源加载服务器结构实施例四示意图;
    图5为本发明一种场景服务器结构实施例五示意图;
    图6为本发明一种资源数据共享系统实施例六示意图;
    图7为本发明一种资源加载服务器实施例七结构示意图;
    图8为本发明一种资源加载服务器实施例八结构示意图。
    具体实施方式
    本发明公开了一种资源数据共享方法、服务器及系统,资源加载服务器将同一物理机的各个场景服务器的进程所需的相同的逻辑数据作为资源数据加载到其所创建的共享内存,向所述各个场景服务器共享所述资源数据,提高物理机的利用率。
    下面结合附图对本发明实施例进行详细说明。
    实施例一
    图1为本发明一种资源数据共享方法实施例一流程图,应用于资源加载服务器,描述了共享内存创建的方法,所述方法包括:
    步骤101:预先配置资源配置文件。
    所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据。
    键值主要是用于识别创建的共享内存的,在配置文件中预先设置好键值作为标识共享内存的标识,可以根据预设的键值访问此键值所标识的共享内存。
    所述资源数据为同一个物理机上的各个场景服务器的进程所需的相同的逻辑数据,包括策划配置数据、美术资源数据和地图资源数据等,所述 资源数据为静态只读数据。除了资源数据以外,同一个物理机的各个场景服务器的进程在运行期间还需加载运行数据,所述运行数据为动态读写数据,各个场景服务器所需的动态数据各不相同。这里需要说明的是,各个场景服务器与资源加载服务器并不是不同的硬件服务器,各个场景服务器是位于同一个物理机上的处理不同网络游戏中非全局性逻辑数据的软件程序。资源加载服务器也是在所述物理机上创建共享内存的软件程序。
    所述资源数据的索引名称主要用于标识所需加载的资源数据,以便加载逻辑数据时,从磁盘中准确的加载各个场景服务器所需的共同的逻辑数据。
    步骤102:读取所述资源配置文件中的所述预设的键值和所述索引名称。
    资源加载服务器读取预设的资源配置文件中的所述预设的键值和所述索引名称,资源加载服务器是指安装在互联网数据中心(Internet DataCenter,IDC)的硬件上,可以根据预设的键值创建共享内存,并将磁盘中的资源数据加载到共享内存的应用程序。
    步骤103:根据所述预设的键值向操作系统请求内存空间创建共享内存。
    符合可移植操作系统接口(Portable Operating System Interface,POSIX)标准的操作系统都提供了共享内存(Shared Memory)功能,可以通过一个键值创建一块共享内存,当创建进程退出时,所创建的共享内存不会和进程一起删除。创建好的共享内存可以向多个进程共享内存中的数据。
    资源加载服务器根据所读取的资源配置文件中的预设的键值创建一个共享内存,操作系统接收到资源加载服务器的请求后,给其分配一块物理内存空间作为共享内存,所述共享内存以预设的键值作为标识。
    步骤104:从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。
    资源加载服务器按照从资源配置文件中所读取的资源数据的索引名 称,将同一台物理上的各个场景服务器的进程所需的相同的资源数据加载到所创建的共享内存。则所述资源数据从磁盘中加载一次即可,向所述物理机的各个场景服务器的进程共享加载到共享内存中的资源数据。
    现有技术中,由于每个场景服务器的进程的逻辑数据彼此相互独立,每个场景服务器的进程在运行时所需的相同的逻辑数据(即资源数据)都在物理机给各个场景服务器所分配的物理内存中占有内存空间,每个场景服务器的进程都需要从磁盘中加载所述资源数据。所述资源数据被重复的从磁盘中加载到物理机中,假设一组资源数据所占的内存为8G,有3个场景服务器,则现有技术中,各个场景服务器的进程启动时,每个场景服务器的内存空间都存储有8G的所述资源数据,则所述资源数据一共占有物理机的24G的物理内存。
    而使用本发明所提供的一种资源数据共享方法,将所述资源数据从磁盘加载到共享内存中,所述资源数据只需要加载一次即可,并且只占用物理机的8G的物理内存空间,与现有技术相比,节省了16G的物理内存空间,并且减少了相同的资源数据从磁盘中的加载次数。共享内存中的资源数据可以向3个场景服务器的进程共享。节省出的物理内存空间可以部署更多的场景服务器,提高游戏服务器逻辑数据的处理能力。
    进一步的,向各个场景服务器的进程共享所述资源数据具体实现方式为:
    当各个场景服务器的进程通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空间。
    各个场景服务器的进程可以根据预设的键值访问所述键值所标识的共享内存,共享内存中的所述资源数据会映射到各个场景服务器的内存空间,各个场景服务器的进程可以从其内存空间中读取所述资源数据。由于所述资源数据从所述共享内存中映射到各个场景服务器的内存空间,并不占用各个场景服务器的物理内存空间,这样可以节省物理机的物理内存空间。
    可选的,从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存后,还包括:
    设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    资源加载服务器设置的信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同,同时创建一个与所述信号量对应的信号量键值,根据所述信号量键值向操作系统请求内存空间存储所述信号量。信号量键值是所述信号量存储的内存空间的标识,可以根据所述信号量键值可以访问所存储的信号量。
    各个场景服务器的进程会从所述资源加载服务器获得所述信号量键值,每隔一段时间,根据所述信号量键值检测所述信号量,当所述信号量存在,对所述信号量执行wait操作成功后,执行进程启动。Wait操作是操作系统的一个通用操作指令,对所述信号量执行wait操作,是对信号量执行减1的操作,并返回所述信号量不为0的响应,各个场景服务器接收到所述信号量不为0的响应时,执行进程启动。当所有场景服务器的进程都启动后,所述信号量为0,此时无法检测到信号量。
    这种方法可以实现各个场景服务器的进程在共享内存加载所述资源数据后再进行启动,各个场景服务器的进程才能通过预设的键值访问共享内存中的所述资源数据,实现先加载资源数据再访问资源数据的先后执行时序。
    由上述内容可知,本发明有如下有益效果:
    预先配置资源配置文件,读取所述资源配置文件中的所述预设的键值和所述索引名称;根据所述预设的键值向操作系统请求内存空间创建共享内存;从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机的各个场景服务器的进程共享所述资源数据。同一台物理机的各个场景服务器的进程共享内存从磁盘中所加载的所述资源数据,所 述资源数据无需被各个不同的场景服务器的进程从磁盘中重复加载,也无需重复占用物理机给各个场景服务器所分配的物理内存,节省物理机的内存空间,提高物理机的利用率。
    实施例二
    图2为本发明一种资源数据共享方法实施例二流程图,应用于场景服务器,描述了场景服务器的进程共享资源数据的方法,所述方法包括:
    步骤201:执行进程启动。
    同一个网络游戏的服务器构架中包含有多个场景服务器,在资源加载服务器创建好共享内存,并将所述资源数据从磁盘中加载到共享内存后,各个场景服务器的进程才能访问所述共享内存。资源加载服务器创建共享内存后加载所述资源数据与各个场景服务器的进程访问共享内存这两个执行步骤之间必须按照严格的先后顺序进行部署,否则各个场景服务器的进程则无法共享所述资源数据。
    各个场景服务器执行启动有两种可能的实施方式:
    第一种可能的实施方式为:
    接收启动指令,执行进程启动。
    当资源加载服务器创建共享内存并完成所述资源数据的加载后,人工输入一个启动各个场景服务器的启动指令,当各个场景服务器接收到所述启动指令后,执行进程启动。这种执行进程启动的方式比较简单,但是容易出错。
    第二种可能的实施方式:
    从所述资源加载服务器获得信号量键值;
    每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    所述资源加载服务器设置的信号量的初始值与所述物理机上所运行的 场景服务器的进程的个数相同,同时创建一个与所述信号量对应的信号量键值,所述信号量键值用于标识所述信号量在操作系统内存空间的存储位置。
    同一物理机上的各个场景服务器的进程从所述资源加载服务器获得所述信号量键值,每隔预定时间根据所述信号量键值检测所述信号量。当检测到所述信号量不为0,执行wait操作成功后,执行场景服务器的进程启动。当所述信号量重新归0时,所述物理机上的所有场景服务器进的进程启动完毕。
    第二种可能的实施方式与第一种可能的实施方式相比,提高了按照时序的先后顺序执行进程启动的精确性。
    步骤202:读取资源加载服务器预先配置的资源配置文件中的所述预设的键值。
    所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一台物理机的各个场景服务器的进程所需的相同的逻辑数据。
    场景服务器的进程从预先配置的资源配置文件中获取预设的键值,所述预设的键值是资源加载服务器所创建的共享内存的标识,可以根据所获取的键值访问资源加载服务器所创建的共享内存。
    步骤203:根据所述预设的键值访问共享内存。
    所述共享内存是资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据。
    步骤204:将所述共享内存中的所述资源数据映射到内存空间。
    由于所述资源加载服务器在创建所述共享内存后,将资源数据从磁盘中加载到所创建的共享内存中,各个场景服务器的进程根据所述预设的键值访问共享内存,将所述共享内存中的所述资源数据映射到各个场景服务器各自的内存空间。场景服务器的进程在需要所述资源数据时,从其内存空间中读取所述资源数据。
    所述资源数据映射到场景服务器的内存空间中并不占用场景服务器的 物理内存,物理机只需要给所述资源数据分配一个物理内存空间——共享内存即可,所述资源数据不会在物理机给每一个场景服务器分配的物理内存重复占用一部分物理内存。这样,可以节省物理机的物理内存空间。
    实施例三
    图3为本发明一种资源数据共享方法实施例三流程图,实施例三描述了共享内存创建和共享数据资源的流程,所述方法包括:
    步骤301:资源加载服务器预先配置资源配置文件。
    所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一物理机的各个场景服务器的进程所需的相同的逻辑数据。
    步骤302:场景服务器的进程每隔预定时间检测信号量是否存在。
    这里需要说明的是,场景服务器的进程检测信号量是否存在是在整个资源数据共享系统启动一开始就执行的。初始时,由于资源加载服务器还没将所述资源数据加载完毕,此时,场景服务器的进程无法检测到信号量,直至所述资源加载服务器将所述资源数据加载到共享内存后,设置好所述信号量后,才能检测到所述信号量。
    步骤303:所述资源加载服务器读取所述资源配置文件中的所述预设的键值和所述索引名称。
    步骤304:所述资源加载服务器根据所述预设的键值向操作系统请求内存空间创建共享内存。
    步骤305:所述资源加载服务器从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存。
    步骤303至步骤305与实施例一类似,参考实施例一的描述,这里不再赘述。
    步骤306:所述资源加载服务器设置一个信号量并创建与所述信号量对应的信号量键值,将所述信号量根据所述信号量键值存储至操作系统的内存空间。
    所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个 数相同。
    步骤307:所述场景服务器的进程从所述资源加载服务器获得信号量键值,根据所述信号量键值从操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    一个网络游戏的构架中有多个场景服务器,每个场景服务器的进程都会从所述资源加载服务器获得所述信号量的键值,根据所述信号量的键值从操作系统的内存空间检测所述信号量。当所述资源加载服务器将所述资源数据加载到所述共享内存后,设置一个信号量并创建与所述信号量对应的信号键值。此时,场景服务器的进程可以根据所述信号键值检测到所述信号量不为0,则执行wait操作。所述wait操作即为控制操作系统将所述信号量减1,当执行wait操作成功后,接收到信号量存在的响应。场景服务器根据所述信号量存在的响应,执行进程启动。
    所述信号量存在对于各个场景服务器来说,是所述资源加载服务器以及将所述资源数据加载到共享内存,以及准备好向各个场景服务器的进程共享所述资源数据,各个场景服务器可以启动进程的标识。由于所述资源加载数据设置所述信号量的初始值与所述场景服务器的进程的个数相同,也就是说,当所述信号量重新归0时,所述物理机中的所有场景服务器的进程启动完毕。
    步骤308:所述场景服务器的进程读取所述资源加载服务器预先配置的资源配置文件中的所述预设的键值。
    步骤309:所述场景服务器的进程根据所述预设的键值访问共享内存。
    步骤310:所述场景服务器的进程将所述共享内存中的所述资源数据映像到内存空间。
    步骤307至步骤310与实施例二类似,参考实施例二的描述,这里不再赘述。
    实施例四
    图4为本发明一种资源加载服务器结构实施例四示意图,所述资源加 载服务器用于创建共享内存,是与实施例一所述的方法所对应的装置,所述服务器包括:
    配置单元401,用于预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据。
    第一读取单元402,用于读取所述资源配置文件中的所述预设的键值和所述索引名称。
    创建单元403,用于根据所述预设的键值向操作系统请求内存空间创建共享内存。
    共享单元404,用于从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。
    可选的,所述共享单元404,具体用于当各个场景服务器的进程通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空间。
    可选的,所述服务器还包括:
    设置单元,用于设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    存储单元,用于将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    实施例四是与实施例一所描述的方法所对应的服务器,参考实施例一的描述,这里不再赘述。
    实施例五
    图5为本发明一种场景服务器结构实施例五示意图,所述场景服务器 用于映射共享内存中的资源数据,是与实施例二所述的方法所对应的装置,所述服务器包括:
    启动单元501,用于执行进程启动。
    可选的,有两种可能的结构:
    第一种可能的结构,所述启动单元501包括:
    接收子单元,用于接收启动指令;
    第一启动子单元,用于执行进程启动。
    第二种可能的结构,所述启动单元501包括:
    获取子单元,用于从所述资源加载服务器获得信号量键值;
    检测子单元,用于每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    第二启动子单元,用于当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    第二读取单元502,用于读取资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据。
    访问单元503,用于根据所述预设的键值访问共享内存,所述共享内存是资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据。
    映射单元504,用于将所述共享内存中的所述资源数据镜像到内存空间。
    实施例五是与实施例二所描述的方法所对应的服务器,参考实施例二的描述,这里不再赘述。
    实施例六
    图6为本发明一种资源数据共享系统实施例六示意图,是与实施例三 所述的方法所对应的系统,所述系统包括:
    实施例四所述的资源加载服务器601以及多个实施例五所述的场景服务器602。
    所述资源加载服务器601包括:
    配置单元,用于预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据。
    第一读取单元,用于读取所述资源配置文件中的所述预设的键值和所述索引名称。
    创建单元,用于根据所述预设的键值向操作系统请求内存空间创建共享内存。
    共享单元,用于从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向同一台物理机上的各个场景服务器的进程共享所述资源数据。
    设置单元,用于设置一个信号量并创建与所述信号量对应的信号量键值,所述信号量的初始值与所述物理机上所运行的场景服务器的进程的个数相同;
    存储单元,用于将所述信号量根据所述信号量键值存储至操作系统的内存空间,以便所述各个场景服务器的进程根据所述信号量键值从所述操作系统的内存空间检测所述信号量,当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    所述场景服务器602包括:
    启动单元,用于执行进程启动。
    第二读取单元,用于读取资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个物理机的各个场景服务器的进程所需的相同的逻辑数据。
    访问单元,用于根据所述预设的键值访问共享内存,所述共享内存是 资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据。
    映射单元,用于将所述共享内存中的所述资源数据镜像到内存空间。
    获取子单元,用于从所述资源加载服务器获得信号量键值;
    检测子单元,用于每隔预定时间根据所述信号量键值从操作系统的内存空间检测所述信号量;
    第二启动子单元,用于当所述信号量存在,且对所述信号量执行wait操作成功后,执行进程启动。
    实施例七
    图7为本发明一种资源加载服务器实施例七结构示意图,所述服务器包括:
    处理器701、存储器702、输入装置703和输出装置704。浏览器服务器中的处理器701的数量可以一个或多个,图7中以一个处理器为例。在本发明的一些实施例中,处理器701、存储器702、输入装置703和输出装置704可通过总线或其它方式连接,其中,图7中以通过总线连接为例。
    存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行浏览器服务器的各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置703可用于接收输入的数字或字符信息,以及产生与浏览器服务器的用户设置以及功能控制有关的键信号输入。
    具体在本实施例中,处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能:
    预先配置资源配置文件,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个网络游戏的各个场景服务器所需的相同的逻辑数据,
    读取所述资源配置文件中的所述预设的键值和所述索引名称;
    根据所述预设的键值向操作系统请求内存空间创建共享内存;
    从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存,向各个场景服务器共享所述资源数据。
    可选的,所述向各个场景服务器共享所述资源数据包括:
    当各个场景服务器通过所述预设的键值访问所述共享内存时,将所述资源数据映射到各个场景服务器的内存空间。
    可选的,所述从磁盘中将所述索引名称所对应的资源数据加载到所述共享内存后还包括:
    设置信号数量值,所述信号数量值与同一个网络游戏所启动的场景服务器的个数相同;
    每接收到一个场景服务器的检测信号,向所述场景服务器返回所述信号数量值,并对所述信号数量值减1,以便实现各个场景服务器的启动。
    所述资源数据包括:策划配置数据、美术资源数据和地图资源数据。
    实施例八
    图8为本发明一种资源加载服务器实施例八结构示意图,所述服务器包括:
    处理器801、存储器802、输入装置803和输出装置804。浏览器服务器中的处理器801的数量可以一个或多个,图8中以一个处理器为例。在本发明的一些实施例中,处理器801、存储器802、输入装置803和输出装置804可通过总线或其它方式连接,其中,图8中以通过总线连接为例。
    存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行浏览器服务器的各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中, 存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置803可用于接收输入的数字或字符信息,以及产生与浏览器服务器的用户设置以及功能控制有关的键信号输入。
    具体在本实施例中,处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的应用程序,从而实现各种功能:
    执行进程启动;
    读取资源加载服务器预先配置的资源配置文件中的所述预设的键值,所述资源配置文件包括预设的键值和资源数据的索引名称,所述资源数据为同一个网络游戏的各个场景服务器所需的相同的逻辑数据;
    根据所述预设的键值访问共享内存,所述共享内存是资源加载服务器根据所述预设的键值向操作系统请求内存空间创建的,所述共享内存存储有资源加载服务器根据所述索引名称从磁盘中加载的所述资源数据;
    将所述共享内存中的所述资源数据镜像到内存空间。
    可选的,所述执行进程启动包括:
    接收启动指令,执行进程启动。
    可选的,所述执行进程启动包括:
    每隔预定时间向资源加载服务器发送检测信号,所述检测信号用于检测资源加载服务器设置的信号数量值;
    当检测到所述信号数量值不为0时,执行进程启动。
    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

    关 键  词:
    一种 资源 数据 共享 方法 服务器 系统
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种资源数据共享方法、服务器及系统.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6350815.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1