本发明涉及计算机领域,具体而言,涉及一种数据请求的处理方法、装置及系统。
背景技术:
现有大部分游戏架构设计中,玩家状态数据保持基于uid值hash到固定的游戏服务器(gs)。玩家每次登入都会连接到相同的游戏服务器(gs)。从而实现玩家状态数据保持。
图1是先有技术的一种玩家状态数据保存的原理的示意图,如图1所示,门服务器根据uid值hash到固定的游戏服务器(gs),确定每个玩家状态数据对应的游戏服务器(gs)。
通过uid值hash到固定的游戏服务器(gs)的方式无法实现架构的高可用性的效果,如果出现游戏服务器(gs)故障,hash到故障游戏服务器(gs)的玩家状态信息会出现问题,运维人员必须找一台备机做切换,还需做复杂的配置文件修改等操作,影响用户的体验。
在游戏模块的设计中,为了提高游戏服务器(gs)处理效率,有时会做成状态信息,例如,游戏服务器(gs)会保存玩家金币,装备等状态数据。如果玩家断线重连到不同的游戏服务器(gs),断线前的游戏服务器(gs)的状态数据可能会丢失,出现玩家数据回档情况。
针对上述相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种数据请求的处理方法、装置及系统,以至少解决相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的技术问题。
根据本发明实施例的一个方面,提供了一种数据请求的处理方法,包括:接收目标账号发送的数据请求,其中,所述数据请求中携带有所述目标账号的标识信息;判断第一服务器中是否存在与所述目标账号的标识信息相对应的目标位置信息,其中,所述第一服务器中存储有多个第二服务器的位置信息,所述目标位置信息用于指示保存有所述目标账号的状态数据的第一目标服务器的位置,所述多个第二服务器包括所述第一目标服务器;在所述第一服务器中存在与所述目标账号的标识信息相对应的目标位置信息的情况下,将所述数据请求传输至所述第一目标服务器进行处理。
根据本发明实施例的另一方面,还提供了一种数据请求的处理装置,包括:接收单元,用于接收目标账号发送的数据请求,其中,所述数据请求中携带有所述目标账号的标识信息;判断单元,用于判断第一服务器中是否存在与所述目标账号的标识信息相对应的目标位置信息,其中,所述第一服务器中存储有多个第二服务器的位置信息,所述目标位置信息用于指示保存有所述目标账号的状态数据的第一目标服务器的位置,所述多个第二服务器包括所述第一目标服务器;第一传输单元,用于在所述第一服务器中存在与所述目标账号的标识信息相对应的目标位置信息的情况下,将所述数据请求传输至所述第一目标服务器进行处理。
根据本发明实施例的另一方面,还提供了一种数据请求的处理系统,包括:客户端,其中,目标账号登录所述客户端发送数据请求,其中,所述数据请求中携带有所述目标账号的标识信息;第一服务器,用于存储多个第二服务器的位置信息;所述多个第二服务器,用于处理所述数据请求;第三服务器,用于接收所述数据请求;判断所述第一服务器中是否存在与所述目标账号的标识信息相对应的目标位置信息,其中,所述目标位置信息用于指示保存有所述目标账号的状态数据的第一目标服务器的位置,所述多个第二服务器包括所述第一目标服务器;在所述第一服务器中存在与所述目标账号的标识信息相对应的目标位置信息的情况下,将所述数据请求传输至所述第一目标服务器进行处理。
在本发明实施例中,目标账号通过客户端发出携带有目标账号的标识信息的数据请求,再由第三服务器接收该数据请求,从第一服务器中存储的多个第二服务器的信息中,判断第一服务器中是否存与目标账号的标识信息相对应的,用于指示保存有目标账号的状态数据的第一目标服务器的位置,其中,多个第二服务器包括第一目标服务器,并在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求发送至用于处理数据请求的多个第二服务器中的第一目标服务器进行处理,可以解决相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的技术问题,进而达到准确为使用目标账号的游戏玩家匹配存有该游戏玩家的状态数据,确保该玩家的状态数据不会丢失的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是先有技术的一种玩家状态数据保存的原理的示意图;
图2是根据本发明实施例的数据请求的处理系统的硬件环境的示意图;
图3是根据本发明实施例的一种可选的数据请求的处理系统的示意图;
图4是根据本发明实施例的一种可选的游戏架构的示意图;
图5是根据本发明实施例的另一种可选的游戏架构的示意图;
图6是根据本发明实施例的一种可选的基于redis的游戏服务器(gs)状态数据架构的示意图;
图7是根据本发明实施例的一种可选的查询玩家在游戏服务器(gs)上的状态信息的示意图;
图8是根据本发明实施例的一种可选的数据请求的处理方法的流程图;
图9是根据本发明实施例的一种可选的数据请求的处理装置的示意图;
图10是根据本发明实施例的另一种可选的数据请求的处理装置的示意图;
图11是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
gs:gameserver游戏主逻辑服务器。
redis集群:通过引入twemproxy组件,作为redis前端的代理,在twemproxy层按key分片,实现redis集群管理。对gameserver(gs)提供透明的redis服务,twemproxy组件兼容redis协议。实现高可用并且秒级master,slave主备切换。
实施例1
根据本发明实施例,提供了一种数据请求的处理系统的实施例。
可选地,在本实施例中,上述数据请求的处理系统可以应用于如图2所示的由服务器102和终端104所构成的硬件环境中。如图2所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的数据请求的处理方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的数据请求的处理方法也可以是由安装在其上的客户端来执行。
图3是根据本发明实施例的一种可选的数据请求的处理系统的示意图,如图3所示,该系统可以包括:
客户端31,其中,目标账号登录客户端发送数据请求,其中,数据请求中携带有目标账号的标识信息;
第一服务器33,用于存储多个第二服务器的位置信息;
多个第二服务器35,用于处理数据请求;
第三服务器37,用于接收数据请求;判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息,其中,目标位置信息用于指示保存有目标账号的状态数据的第一目标服务器的位置,多个第二服务器包括第一目标服务器;在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求传输至第一目标服务器进行处理。
根据本发明上述实施例,目标账号通过客户端发出携带有目标账号的标识信息的数据请求,再由第三服务器接收该数据请求,从第一服务器中存储的多个第二服务器的信息中,判断第一服务器中是否存与目标账号的标识信息相对应的,用于指示保存有目标账号的状态数据的第一目标服务器的位置,其中,多个第二服务器包括第一目标服务器,并在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求发送至用于处理数据请求的多个第二服务器中的第一目标服务器进行处理,可以解决相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的技术问题,进而达到准确为使用目标账号的游戏玩家匹配存有该游戏玩家的状态数据,确保该玩家的状态数据不会丢失的技术效果。
在上述实施例中,客户端可以是与服务器相对应,为用户提供本地服务的程序。目标账号,是服务器识别用户的唯一标识(例如,登录客户端的游戏账号),用户使用目标账号登录客户端,向服务器发出携带有目标账号的标识信息的数据请求。目标账号的标识信息,是可以被服务器识别的信息(例如,uid),服务器可以通过该标识信息,确定对应的目标账号。
可选地,安装有客户端的终端可以是移动终端,例如,手机、平板电脑等;安装有客户端的终端可以是pc终端。
在上述实施例中,第一服务器可以是数据库,用于存储多个第二服务器的位置信息,可以通过第一服务器确定与目标账号的标识信息对应的目标位置信息。
作为一种可选的实施例,第一服务器为redis集群。
采用本发明上述实施例,第一服务器可以是redis集群,redis是一个开源的可以是用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言api(应用程序编程接口)。使用redis集群作为第一服务器,可以便于其他服务器从第一服务器中调取第二服务器的位置信息。
作为一种可选的实施例,redis集群包括多个服务器,其中,redis集群中的每个服务器可以将所接收到的多个第二服务器的位置信息实时地通知给redis集群中的其他服务器。
采用本发明上述实施例,redis集群中包括多个服务器,redis集群中的每个服务器可以将该接收到的多个第二服务器的位置信息实时通知给redis集群中的其他服务器,从而可以通过调用redis集群中的任意一个服务器,便可获取多个第二服务器的位置信息,便于调用第一服务器中存储的多个第二服务器的位置信息。
可选地,redis集群中包括每个服务器可以接收第二服务器的位置信息。
作为一个可选的示例,redis集群中可以包括2个服务器,分别为服务器a、服务器b,服务器a在接收到第二服务器的位置信息,则服务器a可以将位置信息a和位置信息b实时发送给服务器b。
作为一种可选的实施例,第一服务器还用于在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况下,将已存储的其中一个第二服务器的位置信息进行删除。
采用本发明上述实施例,通过第一服务器接收第二服务器的位置信息,在预定时间间隔内,若第一服务器未接收到多个第二服务器中的某一个第二服务器的位置信息,则第一服务器将已存储的该第二服务器的位置信息进行删除,排除异常的第二服务器,减小第一服务器存储的第二服务器的位置信息的数量,便于从第一服务器中快速确定第二服务器的位置信息。
可选地,在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况,可以是多个第二服务器中的一个第二服务器出现故障,若多个第二服务器中的一个第二服务器出现故障,则该第二服务器将不会向第一服务器发送该第二服务器对应的位置信息。
作为一个可选的示例,若多个第二服务器中的第二服务器a出现故障,则该第二服务器a不会向第一服务器发送该第二服务器a的位置信息,因此,第一服务器也不会接收到该第二服务器a的位置信息。若预定时间段为5分钟,则第一服务器在连续5分钟内未接收到第二服务器a的位置信息,则在第一服务器中删除全部历史存储的第二服务器a对应的位置信息。
可选地,在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况,可以是多个第二服务器中的一个第二服务器与第一服务器之间的连接出现故障。
在上述实施例中,第二服务器可以是记录有目标账号状态信息游戏服务器(gameserver),其中,每个游戏服务器与多个目标账号对应,每个游戏服务器用于处理该游戏服务器对应的目标账号发出的数据请求,多个第二服务器共同处理多个目标账号发出的多个数据请求。
在上述实施例中,第三服务器可以是调度服务器,由第三服务器接收数据请求,并在第三服务器接收到数据请求的情况下,通过第一服务器中存储的与目标账号的标识信息相对应的目标位置信息,确定与该数据请求对应的多个第二服务器中的第一目标服务器,其中,第一目标服务器中存储由发出该数据请求的游戏账号对应的状态数据,例如,gameservera中存储有该游戏账号对应的状态数据。再将该数据请求传输至第一目标服务器,由第一目标服务器处理该数据请求。
可选地,第三服务器可以是第三方模块,例如versionserver或者gateserver。
作为一种可选的实施例,第三服务器分别与第一服务器和客户端通信连接,客户端直接与第一目标服务器通信连接或者客户端通过第三服务器与第一目标服务器通信连接。
采用本发明上述实施例,第三服务器分别与第一服务器和客户端建立通信连接,使第三服务器可以根据第一服务器中存储的多个第二服务器的位置信息,确定与客户端对应的多个第二服务器中的第一目标服务器;其中,客户端可以通过第三服务器与第一目标服务器通信连接,由第三服务器将目标账号发出的数据请求,调度到对应的第一目标服务器中,由第一目标服务器对该数据请求进行处理,实现了将目标账号发出的数据请求传输至对应的第一目标服务器的效果;客户端还可以直接与第一目标服务器通信连接,由客户端接收第三服务器的调度指令,将目标账号发送的数据请求直接发送至对应的第一目标服务器,实现了将目标账号发出的数据请求传输至对应的第一目标服务器的效果。
作为一个可选的示例,第三服务器分别与第一服务器和客户端通信连接,多个第二服务器中的目标服务器可以通过第三服务器与客户端连接,由第三服务器接收客户端发出的数据请求,并根据第一服务器中存储的多个第二服务器的位置信息将数据请求发送至对应的多个第二服务器中的第一目标服务器。
作为另一个可选的示例,第三服务器分别与第一服务器和客户端通信连接,多个第二服务器中的目标服务器可以直接与客户端连接,第三服务器根据第一服务器中存储的多个第二服务器的位置信息发出相应的调度指令,使客户端可以在发送数据请求的情况下,直接将该数据请求发送至对应的第一目标服务器。
作为一种可选的实施例,第一服务器中还存储有多个第二服务器的负载信息,其中,第一服务器还可以用于:在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,根据多个第二服务器的负载信息从多个第二服务器中确定出第二目标服务器,其中,第二目标服务器为多个第二服务器中的负载最少的第二服务器;以及将数据请求传输至第二目标服务器进行处理。
采用本发明上述实施例,在第一服务器中还可以存储多个第二服务器的负载信息,在第一服务器中不存在与目标账号标识信息相对应的目标位置信息的情况下,可以根据第二服务器的负载信息,从多个第二服务器中确定负载最少的第二服务器作为第二目标服务器,并将数据请求传输至第二服务器中进行处理,从而可以为多个第二服务器中负载较小第二服务器分配新的数据请求,并由该第二服务器进行处理,达到多个第二服务器的负载均衡的效果。
作为一个可选的示例,多个第二服务器包括第二服务器a、第二服务器b、以及第二服务器c,其中,第二服务器a的负载为满负载的80%,第二服务器b的负载为满负载的75%,第二服务器c的负载为满负载的30%,则第一服务器中存储有第二服务器a、第二服务器b、以及第二服务器c的上述负载信息。在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,可以将包括目标账号的标识信息的数据请求传输至第二服务器c中,由第二服务器c进行处理。
本发明还提供了一种优选实施例,该优选实施例还提供了一种基于redis的gameserver状态数据保持解决方案。
在该实施例中,把玩家在具体哪台游戏服务器(gs)的位置信息保存在redis集群中。玩家断线后重现连线,可以从redis获取玩家的位置信息,然后连上断线之前对应的游戏服务器(gs),从而实现玩家数据状态保持。利用redis集群的特点,可实现redis故障秒级切换且玩家位置信息不会丢失。游戏服务器(gs)除了上报具体玩家的位置信息,还会上报游戏服务器(gs)的负载,在游戏服务器(gs)机器故障的情况下也能被redis集群感知,还实现了游戏服务器(gs)的容灾效果。
需要说明的,容灾是指在相隔较远的异地,建立两套或多套功能相同的it系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。
本发明上述实施例,首先利用了redis集群的高可用性,确保玩家位置信息不会丢失。在redis本身故障的情况下,可以实现秒级切换,在游戏服务器(gs)故障的情况下,redis集群也能感知,因此,在游戏服务器(gs)故障的情况下,无需运维做任何操作,可以根据redis中游戏服务器(gs)负载信息连接其他的游戏服务器(gs),还实现了游戏服务器(gs)的容灾效果。
游戏架构设计中,为了确保游戏服务器(gs)的性能和玩家的用户体验,可以将部分模块设计成有状态信息的数据;为了确保游戏架构的容量,可以部署多台游戏服务器(gs)。玩家在某台模块上有状态信息的情况下,可以在断开后,需要重新连接到原来有状态信息的游戏服务器(gs)。如果有类似此架构设计的场景,都可应用基于redis的游戏服务器(gs)状态数据保持解决方案。
图4是根据本发明实施例的一种可选的游戏架构的示意图,如图4所示,有状态信息的游戏服务器(gs)模块直接连接客户端,第三方模块(如图4所示的versionsvr模块)可以从redis集群中获取玩家的位置信息并传发给手机客户端,手机客户端根据玩家的位置信息连到对应的游戏服务器(gs)。
图5是根据本发明实施例的另一种可选的游戏架构的示意图,如图5所示,有状态信息的游戏服务器(gs)模块不直与客户端连接,游戏服务器(gs)和第三方模块(比如,网关gatesvr)连接。gatesvr从redis集群中获取位置信息,gatesvr根据玩家位置信息连到对应的游戏服务器(gs)。
在本发明上述实施例中,位置信息是标记玩家的状态信息的数据在具体哪台游戏服务器(gs)上,该位置信息保存在redis中。当游戏服务器(gs)有玩家对应的状态信息的数据,则存在一个标志位记录游戏服务器(gs)有这个玩家数据,并且在redis会记录玩家的位置信息。在持续一段时间后,玩家没有任何操作且游戏服务器(gs)无状态信息的数据,则这个标志位一直为0,并从redis中的位置信息中移除。
图6是根据本发明实施例的一种可选的基于redis的游戏服务器(gs)状态数据架构的示意图,如图6所示,gateserver(门服务器),负载用户请求的接入和分发,起到负载均衡的作用。游戏服务器(gs),负责处理客户端请求及大部分逻辑处理,后端连接其它逻辑服务器,部分请求通过游戏服务器(gs)转发其它逻辑服务器,隐藏玩家信息,定时回写数据库。redis集群,用于隐藏玩家的部分数据,并保存玩家位置信息。
玩家uid(304536766)通过客户端登入gateserver,由gateserver通过redis集群查询该玩家在游戏服务器(gs)上是否有状态信息,如果没有在redis集群到该玩家对应的游戏服务器(gs)的位置信息,会选择一个相对空闲的游戏服务器(gs)连接,完成登入游戏的过程,其中,reids集群实现了对游戏服务器(gs)的负载均衡功能。
如果玩家登入后,由gateserver通过redis集群查询到该玩家在游戏服务器(gs)上有状态信息。
图7是根据本发明实施例的一种可选的查询玩家在游戏服务器(gs)上的状态信息的示意图,如图7所示,通过reids命令查看,发现在编号3的游戏服务器(gs)还有状态信息,并且可以查询编号3的游戏服务器(gs)具体的ip和端口。玩家就会连到编号3服务器上。这样就实现了编号3的游戏服务器(gs)上玩家uid(304536766)的状态保持。
传统的uinhash方式保存游戏服务器(gs)状态,如果出现游戏服务器(gs)故障的情况,需要运维人员手动对故障机切换。有些业务还可能需停服做业务切换的操作,对用户体验影响很大。
采用本发明上述实施例,该架构具有高可用性,游戏服务器(gs)除了上报具体玩家的位置信息以外,还会上报游戏服务器(gs)的负载,所以redis不仅可以保存玩家的位置信息还了解游戏服务器(gs)的负载情况。游戏服务器(gs)若出现故障也会被redis集群感知,实现了对游戏服务器(gs)的容灾效果。在某个游戏服务器(gs)故障的情况下,会连接到其他空闲游戏服务器(gs)中,实现无人工干的预快速恢复,对业务影响非常小,间接提高了游戏的效果。
采用本发明上述实施例,为了达到保持玩家状态数据的效果,业务架构可以添加一个新模块locationsvr,并通过该模块保存玩家位置信息。但该模块本身是有状态信息的,如果只有一台则是单点,为了考虑容灾,需要2台该模块进行部署,2台具有该模块的服务器的状态数据需要实时同步。
实施例2
根据本发明实施例,提供了一种数据请求的处理的方法实施例。
图8是根据本发明实施例的一种可选的数据请求的处理方法的流程图,如图8所示,该方法可以包括以下步骤:
步骤s802,接收目标账号发送的数据请求,其中,数据请求中携带有目标账号的标识信息;
步骤s804,判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息,其中,第一服务器中存储有多个第二服务器的位置信息,目标位置信息用于指示保存有目标账号的状态数据的第一目标服务器的位置,多个第二服务器包括第一目标服务器;
步骤s806,在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求传输至第一目标服务器进行处理。
通过上述步骤s802至步骤s806,目标账号发出携带有目标账号的标识信息的数据请求,再由第三服务器接收该数据请求,从第一服务器中存储的多个第二服务器的信息中,判断第一服务器中是否存与目标账号的标识信息相对应的,用于指示保存有目标账号的状态数据的第一目标服务器的位置,其中,多个第二服务器包括第一目标服务器,并在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求发送至用于处理数据请求的多个第二服务器中的第一目标服务器进行处理,可以解决相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的技术问题,进而达到准确为使用目标账号的游戏玩家匹配存有该游戏玩家的状态数据,确保该玩家的状态数据不会丢失的技术效果。
在步骤s802提供的技术方案中,目标账号,是服务器识别用户的唯一标识(例如,登录客户端的游戏账号),用户使用目标账号登录客户端,向服务器发出携带有目标账号的标识信息的数据请求。目标账号的标识信息,是可以被服务器识别的信息(例如,uid),服务器可以通过该标识信息,确定对应的目标账号。
可选地,安装有客户端的终端可以是移动终端,例如,手机、平板电脑等;安装有客户端的终端可以是pc终端。
在步骤s804提供的技术方案中,第一服务器可以是数据库,用于存储多个第二服务器的位置信息,可以通过第一服务器确定与目标账号的标识信息对应的目标位置信息。第二服务器可以是记录有目标账号状态信息游戏服务器(gameserver),其中,每个游戏服务器与多个目标账号对应,每个游戏服务器用于处理该游戏服务器对应的目标账号发出的数据请求,多个第二服务器共同处理多个目标账号发出的多个数据请求。在多个第二服务器中,与数据请求对应的第二服务器即为第一目标服务器。在发送数据请求后,通过第一服务器中存储的与目标账号的标识信息相对应的目标位置信息确定与该数据请求对应的多个第二服务器中的第一目标服务器其中,第一目标服务器中存储由发出该数据请求的游戏账号对应的状态数据,例如,gameservera中存储有该游戏账号对应的状态数据。
作为一种可选的实施例,第一服务器可以为redis集群。
采用本发明上述实施例,第一服务器可以是redis集群,redis是一个开源的可以是用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言api(应用程序编程接口)。使用redis集群作为第一服务器,可以便于其他服务器从第一服务器中调取第二服务器的位置信息。
作为一种可选的实施例,redis集群可以包括多个服务器,其中,redis集群中的每个服务器可以将所接收到的多个第二服务器的位置信息实时地通知给redis集群中的其他服务器。
采用本发明上述实施例,redis集群中包括多个服务器,redis集群中的每个服务器可以将该服务器接收到的多个第二服务器的位置信息实时通知给redis集群中的其他服务器,从而可以通过调用redis集群中的任意一个服务器,便可获取多个第二服务器的位置信息,便于调用第一服务器中存储的多个第二服务器的位置信息。
可选地,redis集群中包括每个服务器可以接收第二服务器的位置信息。
作为一个可选的示例,redis集群中可以包括2个服务器,分别为服务器a、服务器b,服务器a在接收到第二服务器的位置信息,则服务器a可以将位置信息a和位置信息b实时发送给服务器b。
在步骤s806提供的技术方案中,在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,可以将该数据请求传输至第一目标服务器,由第一目标服务器处理该数据请求。
作为一种可选的实施例,第一服务器在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况下,将已存储的其中一个第二服务器的位置信息进行删除。
采用本发明上述实施例,通过第一服务器接收第二服务器的位置信息,在预定时间间隔内,若第一服务器未接收到多个第二服务器中的某一个第二服务器的位置信息,则第一服务器将已存储的该第二服务器的位置信息进行删除,排除异常的第二服务器,减小第一服务器存储的第二服务器的位置信息的数量,便于从第一服务器中快速确定第二服务器的位置信息。
可选地,在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况,可以是多个第二服务器中的一个第二服务器出现故障,若多个第二服务器中的一个第二服务器出现故障,则该第二服务器将不会向第一服务器发送该第二服务器对应的位置信息。
作为一个可选的示例,若多个第二服务器中的第二服务器a出现故障,则该第二服务器a不会向第一服务器发送该第二服务器a的位置信息,因此,第一服务器也不会接收到该第二服务器a的位置信息。若预定时间段为5分钟,则第一服务器在连续5分钟内未接收到第二服务器a的位置信息,则在第一服务器中删除全部历史存储的第二服务器a对应的位置信息。
可选地,在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况,可以是多个第二服务器中的一个第二服务器与第一服务器之间的连接出现故障。
作为一种可选的实施例,在判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息之后,该实施例还可以包括:在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,根据第一服务器中存储的多个第二服务器的负载信息从多个第二服务器中确定出第二目标服务器,其中,第二目标服务器为多个第二服务器中的负载最少的第二服务器;将数据请求传输至第二目标服务器进行处理。
采用本发明上述实施例,在第一服务器中还可以存储多个第二服务器的负载信息,在第一服务器中不存在与目标账号标识信息相对应的目标位置信息的情况下,可以根据第二服务器的负载信息,从多个第二服务器中确定负载最少的第二服务器作为第二目标服务器,并将数据请求传输至第二服务器中进行处理,从而可以为多个第二服务器中负载较小第二服务器分配新的数据请求,并由该第二服务器进行处理,达到多个第二服务器的负载均衡的效果。
作为一个可选的示例,多个第二服务器包括第二服务器a、第二服务器b、以及第二服务器c,其中,第二服务器a的负载为满负载的80%,第二服务器b的负载为满负载的75%,第二服务器c的负载为满负载的30%,则第一服务器中存储有第二服务器a、第二服务器b、以及第二服务器c的上述负载信息。在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,可以将包括目标账号的标识信息的数据请求传输至第二服务器c中,由第二服务器c进行处理。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述数据请求的处理方法的数据请求的处理装置。图9是根据本发明实施例的一种可选的数据请求的处理装置的示意图,如图9所示,该装置可以包括:接收单元91,用于接收目标账号发送的数据请求,其中,数据请求中携带有目标账号的标识信息;判断单元93,用于判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息,其中,第一服务器中存储有多个第二服务器的位置信息,目标位置信息用于指示保存有目标账号的状态数据的第一目标服务器的位置,多个第二服务器包括第一目标服务器;第一传输单元95,用于在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求传输至第一目标服务器进行处理。
需要说明的是,该实施例中的接收单元91可以用于执行本申请实施例2中的步骤s802,该实施例中的判断单元93可以用于执行本申请实施例2中的步骤s804,该实施例中的第一传输单元95可以用于执行本申请实施例2中的步骤s806。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
作为一种可选的实施例,如图10所示,该实施例还可以包括:确定单元97,用于在判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息之后,在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,根据第一服务器中存储的多个第二服务器的负载信息从多个第二服务器中确定出第二目标服务器,其中,第二目标服务器为多个第二服务器中的负载最少的第二服务器;第二传输单元99,用于将数据请求传输至第二目标服务器进行处理。
通过上述模块,目标账号通过客户端发出携带有目标账号的标识信息的数据请求,再由第三服务器接收该数据请求,从第一服务器中存储的多个第二服务器的信息中,判断第一服务器中是否存与目标账号的标识信息相对应的,用于指示保存有目标账号的状态数据的第一目标服务器的位置,其中,多个第二服务器包括第一目标服务器,并在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求发送至用于处理数据请求的多个第二服务器中的第一目标服务器进行处理,可以解决相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的技术问题,进而达到准确为使用目标账号的游戏玩家匹配存有该游戏玩家的状态数据,确保该玩家的状态数据不会丢失的技术效果。
实施例4
根据本发明实施例,还提供了一种用于实施上述数据请求的处理方法的终端。
图11是根据本发明实施例的一种终端的结构框图,如图11所示,该终端可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205,如图11所示,该终端还可以包括输入输出设备207。
其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的数据请求的处理方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据请求的处理方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置205用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器203用于存储应用程序。
处理器201可以调用存储器203存储的应用程序,以执行下述步骤:接收目标账号发送的数据请求,其中,数据请求中携带有目标账号的标识信息;判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息,其中,第一服务器中存储有多个第二服务器的位置信息,目标位置信息用于指示保存有目标账号的状态数据的第一目标服务器的位置,多个第二服务器包括第一目标服务器;在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求传输至第一目标服务器进行处理。
处理器201还用于执行下述步骤:在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,根据第一服务器中存储的多个第二服务器的负载信息从多个第二服务器中确定出第二目标服务器,其中,第二目标服务器为多个第二服务器中的负载最少的第二服务器;将数据请求传输至第二目标服务器进行处理。
处理器201还用于执行下述步骤:redis集群包括多个服务器,其中,多个服务器中的每个服务器将多个第二服务器的位置信息实时通知给多个服务器中的其他服务器。
处理器201还用于执行下述步骤:第一服务器在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况下,将已存储的其中一个第二服务器的位置信息进行删除。
采用本发明实施例,提供了一种数据请求的处理的方案。目标账号通过客户端发出携带有目标账号的标识信息的数据请求,再由第三服务器接收该数据请求,从第一服务器中存储的多个第二服务器的信息中,判断第一服务器中是否存与目标账号的标识信息相对应的,用于指示保存有目标账号的状态数据的第一目标服务器的位置,其中,多个第二服务器包括第一目标服务器,并在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求发送至用于处理数据请求的多个第二服务器中的第一目标服务器进行处理,可以解决相关技术中游戏玩家断线后如果重连到不同的游戏服务器,将会导致断线前该游戏玩家的状态数据丢失的技术问题,进而达到准确为使用目标账号的游戏玩家匹配存有该游戏玩家的状态数据,确保该玩家的状态数据不会丢失的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图11所示的结构仅为示意,终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图11并不对上述电子装置的结构造成限定。例如,终端还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据请求的处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
s1,接收目标账号发送的数据请求,其中,数据请求中携带有目标账号的标识信息;
s2,判断第一服务器中是否存在与目标账号的标识信息相对应的目标位置信息,其中,第一服务器中存储有多个第二服务器的位置信息,目标位置信息用于指示保存有目标账号的状态数据的第一目标服务器的位置,多个第二服务器包括第一目标服务器;
s3,在第一服务器中存在与目标账号的标识信息相对应的目标位置信息的情况下,将数据请求传输至第一目标服务器进行处理。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在第一服务器中不存在与目标账号的标识信息相对应的目标位置信息的情况下,根据第一服务器中存储的多个第二服务器的负载信息从多个第二服务器中确定出第二目标服务器,其中,第二目标服务器为多个第二服务器中的负载最少的第二服务器;将数据请求传输至第二目标服务器进行处理。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:第一服务器为redis集群。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:redis集群包括多个服务器,其中,多个服务器中的每个服务器将多个第二服务器的位置信息实时通知给多个服务器中的其他服务器。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:第一服务器在预定时间段内未接收到多个第二服务器中的其中一个第二服务器发送的位置信息的情况下,将已存储的其中一个第二服务器的位置信息进行删除。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。