数据请求的处理方法和装置与流程

文档序号:11250712阅读:271来源:国知局
数据请求的处理方法和装置与流程

本发明涉及计算机领域,具体而言,涉及一种数据请求的处理方法和装置。



背景技术:

由于游戏服务器的特殊性,很多游戏需要开很多分区(例如qq一区,qq二区),每个区需要对应至少一台虚拟机、容器、或者物理机的服务器。由于每个区的人数不一样,负载不一样,对于服务器的运算能力是一种严重的浪费。对于国际化类的手游来说,很多国家、地区,的人数不多,开启很多分区,对服务器的浪费现象更加严重。

考虑机架成本的因素,现有技术通常不会采用降低每个物理机服务器的配置增加服务器物理机数量的方案,而是采用降低虚拟机的配置来更加充分的利用服务器资源。例如在一台物理服务器上开启2-8个虚拟机,可以承载2-8个游戏区。

虽然通过虚拟机的手段,可以增加虚拟机的服务器的数量,但是由于每个游戏区的人数不确定,对应的虚拟机的服务器负载不稳定,很容易造成某一个区对应的虚拟机的服务器繁忙,而其他区对应的虚拟机的服务器空闲的情况。

针对上述相关技术中由于每个游戏分区分配有单独的服务器,在游戏分区负载不均衡的情况下将会导致有些服务器的资源浪费的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种数据请求的处理方法和装置,以至少解决相关技术中由于每个游戏分区分配有单独的服务器,在游戏分区负载不均衡的情况下将会导致有些服务器的资源浪费的技术问题。

根据本发明实施例的一个方面,提供了一种数据请求的处理方法,包括:分配多个线程;为所述多个线程中的每个线程分配至少一个分区,其中,所述至少一个分区中的每个分区用于接收预定数量的数据请求;通过所述多个线程,对每个线程对应的所述至少一个分区内接收到的数据请求进行处理。

根据本发明实施例的另一方面,还提供了一种数据请求的处理装置,包括:第一分配单元,用于分配多个线程;第二分配单元,用于为所述多个线程中的每个线程分配至少一个分区,其中,所述至少一个分区中的每个分区用于接收预定数量的数据请求;处理单元,用于通过所述多个线程,对每个线程对应的所述至少一个分区内接收到的数据请求进行处理。

在本发明实施例中,将服务器划分为多个线程,并为多线程中的每个线程分配至少一个分区,其中,每个分区可以接收预定数量的数据请求,再通过分配的多个线程,对每个线程中的每个分区内接收到的数据请求进行处理,从而可以为单独的服务器分配多个分区,通过多个线程对每个线程对应的数据请求进行处理,可以解决相关技术中由于每个游戏分区分配有单独的服务器,在游戏分区负载不均衡的情况下将会导致有些服务器的资源浪费的技术问题,进而达到了充分利用服务器的资源,在不影响用户体验的情况下,节约服务器运营成本和维护成本的技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的数据请求的处理方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的数据请求的处理方法的流程图;

图3是根据本发明实施例的一种可选的游戏服务的架构的示意图;

图4是根据本发明实施例的一种可选的游戏服务器内部结构的示意图;

图5是根据本发明实施例的一种可选的多线程游戏服务器系统的示意图;

图6是根据本发明实施例的一种可选的数据请求的处理装置的示意图;

图7是根据本发明实施例的另一种可选的数据请求的处理装置的示意图;

图8是根据本发明实施例的另一种可选的数据请求的处理装置的示意图;

图9是根据本发明实施例的另一种可选的数据请求的处理装置的示意图;

图10是根据本发明实施例的另一种可选的数据请求的处理装置的示意图;

图11是根据本发明实施例的另一种可选的数据请求的处理装置的示意图;

图12是根据本发明实施例的一种终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种数据请求的处理方法实施例。

可选地,在本实施例中,上述数据请求的处理方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的数据请求的处理方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的数据请求的处理方法也可以是由安装在其上的客户端来执行。

图2是根据本发明实施例的一种可选的数据请求的处理方法的流程图,如图2所示,该方法可以包括以下步骤:

步骤s202,分配多个线程;

步骤s204,为多个线程中的每个线程分配至少一个分区,其中,至少一个分区中的每个分区用于接收预定数量的数据请求;

步骤s206,通过多个线程,对每个线程对应的至少一个分区内接收到的数据请求进行处理。

通过上述步骤s202至步骤s206,将服务器划分为多个线程,并为多线程中的每个线程分配至少一个分区,其中,每个分区可以接收预定数量的数据请求,再通过分配的多个线程,对每个线程中的每个分区内接收到的数据请求进行处理,从而可以为单独的服务器分配多个分区,通过多个线程对每个线程对应的数据请求进行处理,可以解决相关技术中由于每个游戏分区分配有单独的服务器,在游戏分区负载不均衡的情况下将会导致有些服务器的资源浪费的技术问题,进而达到了充分利用服务器的资源,在不影响用户体验的情况下,节约服务器运营成本和维护成本的技术效果。

在步骤s202提供的技术方案中,线程,也被称为轻量级进程,英文名称为lightweightprocess,或lwp,是程序执行流的最小单元,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。服务器可以根据实际使用需求,分配多个线程,使每个线程都可以独自处理该线程内的数据请求。

需要说明的是,进程,英文名称为process,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系结构的基础。

可选地,本发明上述实施例可以在服务器中应用。

需要说明的是,处理器是服务器的控制核心和运算核心,用于解释服务器的指令以及处理服务器中的数据,其中,处理器主要通过处理器内的核心处理数据,处理器的核心数量越多,处理器的运算能力越强。

作为一种可选的实施例,分配多个线程可以包括:获取处理器的核心的数量,其中,处理器为一台服务器的处理器;为每个核心绑定一个线程。

采用本发明上述实施例,通过获取处理器的核心数量,并根据处理器的核心数量为每个核心绑定一个线程,使每个线程都由有个独立的核心对线程内的数据进行处理,从而确保对每个线程的数据的处理速度。

作为一个可选的示例,在服务器中处理器的核心数量为4个的情况下,为服务器分配4个线程,并为处理器中的每个核心绑定一个线程。例如,4个核心分别为核心1、核心2、核心3、以及核心4;4个线程分别为线程1、线程2、线程3、以及线程4,可以为核心1绑定线程1,为核心2绑定线程2,为核心3绑定线程3,为核心4绑定线程4。

作为一种可选的实施例,在为每个核心绑定一个线程之后,该实施例还可以包括:获取处理器的内存资源量;将处理器的内存资源量分配给多个线程。

需要说明的是,服务器的运行速度除了受到处理器内核心的运行速度以外,还受处理器的内存资源量的影响。

采用本发明上述实施例,在为每个核心绑定一个线程之后,根据处理器中的内存资源量,为每个线程分配对应的内存资源量,使每个线程都存在具有相应的内存资源量,确保每个线程可以快速地对线程内的数据进行处理。

可选地,可以将处理器的内存资源量平均分配给多个线程,使每个线程都可以获得均等的内存资源量。

作为一个可选的示例,在线程数量为4个的情况下,可以将处理器的内存资源量平均分为4份,使每个线程都可以获得原处理器的内存资源量的1/4。

可选地,可以根据实际需求,为每个线程分配对应的内存资源量,使每个线程都可以满足各自的运行需求。

作为一个可选的示例,在线程数量为4个的情况下,线程1、线程2、线程3、以及线程4在运行过程中所需的内存资源量的比例为3:2:1:4,则可以将处理器的内存资源量平均分为10份,其中,线程1分配原处理器的内存资源量3/10;线程2分配原处理器的内存资源量2/10;线程3分配原处理器的内存资源量1/10;线程4分配原处理器的内存资源量4/10。

作为一种可选的实施例,多个线程中的任意两个线程之间通信连接。

采用本发明上述实施例,建立任意两个线程之间的通信连接,使多个线程之间可以相互通信,从而可以根据该通信连接关系,使多个线程可以根据通信连接,调度多个线程之间的数据,在多个线程中的一个线程运行故障的情况下,由多个线程中的其他线程处理该线程中的数据,确保多个线程可以正常运行。

可选地,可以在多个线程中的一个线程超出负载的情况下,将该线程处理的数据根据通信连接关系分配给其他线程处理。

作为一个可选的示例,服务器包括两个线程,分别为线程1和线程2,并且,线程1与线程2之间通信连接。若线程1在运行过程中出现超出负载的情况,则将线程1超出负载部分的数据通过通信连接分配到线程2中,由线程2处理线程1中超出负载部分的数据请求。

可选地,可以在多个线程中的一个线程出现的情况下,将该线程处理的数据根据通信连接关系分配给其他线程处理。

作为一个可选的示例,服务器包括两个线程,分别为线程1和线程2,并且,线程1与线程2之间通信连接。若线程1在运行过程中出现故障,则将线程1中的全部输出分配到线程2中,由线程2处理线程1中的数据。

在步骤s204提供的技术方案中,每个分区可以用于接收预定数量的数据请求,每个线程中可以分配至少一个分区,每个线程接收的数据请求由每个线程内分区的数量和每个分区对应的数据请求的预定数量确定。

作为一个可选的示例,在至少一个分区中,每个分区都可以接收数量相同的数据请求的情况下,若服务器包括两个线程,每个线程分配4个分区,每个分区可以接收的数据请求的数量为a,则每个线程可以接收的数据请求的数量为4a,服务器可以接收的数据请求的数量为2×4a=8a。

作为一个可选的示例,在至少一个分区中,每个分区可以接收数量不同的数据请求的情况下,若服务器包括两个线程分别为线程1和线程2,其中,线程1中的至少一个分区分别为:分区1、以及分区2;线程2中的至少一个分区分别为:分区3、以及分区4,分区1可以接收的数据请求的数量为a;分区2可以接收的数据请求的数量为b;分区3可以接收的数据请求的数量为c;分区4可以接收的数据请求的数量为d。则线程1可以接收的数据请求的数量为a+b,线程2可以接收的数据请求的数量为c+d,服务器可以接收的数据请求的数量为a+b+c+d。

作为一种可选的实施例,为多个线程中的每个线程分配至少一个分区可以包括:检测每个线程的剩余内存资源量;在检测到存在剩余内存资源量大于第一预定阈值的线程的情况下,为剩余内存资源量大于第一预定阈值的线程分配新的分区。

采用本发明上述实施例,在检测到多个线程中的一个线程的剩余内存资源量低于第一预定阈值的情况下,为剩余内存资源量大于第一预定阈值的线程分配新的分区,将占用内存资源量较大的分区的数据请求分配至新的分区内,使每个线程可以在足够的内存资源量下运行。此处需要说明的是,第一预定阈值可以根据实际需求设定,此处不做具体限定。

可选地,为剩余内存资源量大于第一预定阈值的线程分配新的分区,可以将该线程中占用内存资源量较大的分区中的数据请求平均分配在新的分区中。例如,线程中占用内存资源量较大的分区中的数据请求数量为2a,则将该分区中的a个数据请求分配至新的分区中。

可选地,为剩余内存资源量大于第一预定阈值的线程分配新的分区,可以根据实际使用需求将该线程中占用内存资源量较大的分区中的数据请求分配在新的分区中。例如,线程中占用内存资源量较大的分区中的数据请求数量为3a,在将该分区中的a个数据请求进行分配后,该分区所在线程的剩余内存资源量小于第一预定阈值,则将该分区中的a个数据请求分配至新的分区中。

在步骤s206提供的技术方案中,每个分区可以接收对应的数据请求,在每个线程可以对该线程中的至少一个分区内接收到的数据请求进行处理,还可以通过多个线程对每个线程中的至少一个分区内接收的数据进行处理。

作为一个可选的示例,每个线程可以单独处理该线程中的至少一个分区的接收请求,例如,在线程1中的分区1接收到数据请求a的情况下,可以通过线程1对数据请求a进行处理。

作为一个可选的示例,每个线程可以单独处理其他线程中的至少一个分区的接收请求,例如,在线程1中的分区1接收到数据请求a的情况下,可以将分区1转移至线程2,再通过线程2对数据请求a进行处理。

作为一种可选的实施例,通过多个线程,对每个线程对应的至少一个分区内接收到的数据请求进行处理包括:检测每个线程所需要处理的或者正在处理的数据请求的数量;在检测到第一线程所需要处理的或者正在处理的数据请求的数量超过第二预定阈值的情况下,将第一线程对应的至少一个分区内的数据请求转移至第二线程中进行处理,其中,多个线程包括第一线程和第二线程,第二线程所需要处理的或者正在处理的数据请求的数量低于第三预定阈值。

采用本发明上述实施例,在检测到第一线程所需要处理的或者正在处理的数据请求的数量超过第二预定阈值的情况下,可以将第一线程对应的至少一个分区内的数据请求转移至所需要处理的或者正在处理的数据请求的数量低于第三预定阈值的第二线程中进行处理,从而可以将第一线程所需要处理的或者正在处理的所需要处理的或者正在处理的数据请求的数量限定在第二预定阈值范围内,并将第一线程中高于第二预定阈值的数据请求分配至所需要处理的或者正在处理的数据请求的数量低于第三阈值的第二线程中,确保每个线程可以快速地处理数据请求。此处需要说明的是,第二预定阈值和第三预定阈值均可以根据实际需求设定,此处不做具体限定。

作为一个可选的示例,在第一线程所需要处理的或者正在处理的数据请求的数量为1200,第二线程所需要处理的或者正在处理的数据请求的数量为300的情况下,若设置第二阈值为1000,第三阈值为600,则可以将第一线程中的高于第二阈值的200个数据请求分配至低于第三阈值的第二线程中处理。

作为一种可选的实施例,通过多个线程,对每个线程对应的至少一个分区内接收到的数据请求进行处理包括:判断第三线程接收到的目标数据请求是否属于第三线程对应的分区;在判断出接收到的目标数据请求属于第三线程对应的分区的情况下,通过第三线程对目标数据请求进行处理;在判断出接收到的目标数据请求不属于第三线程对应的分区的情况下,将目标数据请求转移至第四线程进行处理,其中,多个线程包括第三线程和第四线程,目标数据请求属于第四线程对应的分区。

采用本发明上述实施例,需要判断接第三线程接收到的目标数据请求是否属于第三线程对应的分区,若目标数据请求属于第三线程对应的分区,由第三线程对目标数据请求进行处理,若目标数据请求不属于第三线程对应的分区,则目标数据请求转移至于目标数据请求所属的第四线程对应的分区进行处理,确保每个线程可以处理属于该线程对应分区的目标数据请求。

可选地,在多个线程中的一个线程获取目标数据请求的情况下,判断目标数据请求是否属于该线程,若目标数据请求属于该线程,则由该线程处理目标数据请求,若目标数据请求不属于该线程,则将目标数据请求转移至目标数据请求所属的线程。

作为一个可选的示例,目标数据请求a属于分区15,分区15对应的线程为线程2,在线程1接收到目标数据请求a的情况下,将目标数据请求a转移至线程2,由线程2处理目标数据请求a。

本发明还提供了一种优选实施例,该优选实施例一种游戏服务的架构优化方案。

使用高性能服务器,可以最大的有效利用服务器资源,利用服务器的性能提供更高的在线人数,更好的用户体验,同时降低服务器成本和运营成本。

例如,一个在地区a上线的服务器,整个在线可能在5万人左右,可能分为了20个分区,使用了20台虚拟机。由于玩家的不可控性,可能导致某个分区的玩家很活跃,造成了某个虚拟机的负载过大,影响用户体验,而其他虚拟机的在线人数不多,运算能力完全浪费。

如果只使用一台高性能的服务器(承载6万在线),承担上述所有20个分区的玩家。无论哪个分区的用户活跃,都不会影响整个系统的性能。

图3是根据本发明实施例的一种可选的游戏服务的架构的示意图,如图3所示,用户通过网关服务器借入进网络,所有的用户消息在游戏服务器内处理。

图4是根据本发明实施例的一种可选的游戏服务器内部结构的示意图,如图4所示,提供了一个具有40个分区的游戏服务器的内部结构,其中,每个分区的名称分别为qq1区、qq2区、qq3区、……、qq40区。在上述游戏服务器内部结构中,单服务器承担了40个分区的用户,单服务器内包括4个线程,每个线程包括10个分区,每个分区能够容纳的在线人数为1000人,单服务器一共能容纳的在线人数为40000人。

本发明上述实施例提供了一种游戏服务器资源分配方式,游戏服务器进程按照cpu(中央处理器)的core(核心)数来分配线程,每个core(核心)绑定一个线程,作为一个计算单元,每个计算单元里分配多个游戏区的数据结构。每个线程设置cpu(中央处理器)的亲缘性,绑定具体的core(核心),发挥整个系统的最大性能。

需要说明的是,亲缘性,英文名称为affinity,是指可以将线程强制限定在可用的cpu子集上运行的特性,它在一定程度上把进程/线程在多处理器系统上的调度策略暴露给系统程序员,有助于程序员实现自己的调度策略以提供特定情况下的更高性能。

根据本发明上述实施例,还提供了一种游戏服务器的负载均衡方式,其中,服务器进程会统计每个线程中多个分区的负载,并在线程间调度各分区。例如,线程1负责的1-5区的用户在线人数较多,服务器进程会将一部分繁忙的分区,重新分配到比较空闲的线程中去。

可选地,由于一个服务器会负责很多的分区,在整个服务器的范围内,负载基本是稳定的。比如,使用32g内存12核的服务器进行部署,单物理服可以承载30万左右的在线(对于普通手游来说),对于单个分区可承载的同时在线用户数量为1000人左右的游戏可以开300个分区,基本上对于大部分游戏可以单机承担所有的在线(不包括pvp等其他服务器)。

根据本发明上述实施例,还提供了一种自动开服方式,由于单物理服务器有充足的运算资源,可以满足自动开新的分区的需要。在已开的分区中的人数比较多的情况下,只需要做一些内存结构的调整,无需对服务器部署做任何变更,便可以自动开启新的分区。

采用本发明上述实施例,规避了传统游戏服务器所采用的,单分区-单服务器的方式。通过在单物理服务器更加充分利用cpu的多核特性,在应用层虚拟分区,极大的提高单服务器的在线人数承载能力。通过选取适当的服务器类型,可以采用单服务器的方式满足大部分手游的承载需求。

图5是根据本发明实施例的一种可选的多线程游戏服务器系统的示意图,如图5所示,先对服务器系统初始化,为分别为线程1、线程2、线程3、以及线程4分配当前服务器的内存资源,然后各线程独立进行一下操作,如初始化线程资源,线程初始化,初始化通信队列等资源,处理线程内的数据初始化,处理游戏分区数据初始化,开始处理用户请求。其中,通过初始化通信队列等资源,建立多个线程的通信连。

可选地,在完成上述配置后,可以进行多个线程的调度,例如,在线程1运算单元负载过大的情况下,可以申请调出游戏分区2,将游戏分区2调度到线程3中,线程3接管游戏分区2的数据,完成负载均衡。在负载均衡完成后,用户的请求数据会被分配到线程3处理,而该过程并不会被用户感知到。

可选地,在检测到游戏分区容量接近阈值的情况下,可以自动或手动发出开服请求,分配一个新的大区。例如,在线程1检测到游戏分区容量接近阈值的情况下,自动或手动向线程4发出开服请求,在线程4中分配一个新的游戏分区,然后在分配分区资源完成后,完成分区初始化,开始对外服务。

采用本发明上述实施例,通过消息路由机制来处理游戏服务器与第三方服务器的交互,例如网关服务器(用户请求)与数据库服务器。路由机制负责把消息放入各个线程对应的共享内存队列中,当游戏服务器对游戏分区进行调整之后,会通知路由机制修改路由,将后续消息发送到正确的线程对应的队列中。

例如,游戏分区2的消息会放到线程1的队列中,当发生负载均衡之后,会把消息放到线程3的队列中。由于队列中的信息会有一些延迟(需要说明的是,游戏服务器变更成功后才会修改路由),游戏服务器的各个线程对于不属于自己的消息,会进行2次分配,通过线程间的通讯队列进行交换。

本发明上述实施例,可以在多分区的游戏中可以节约大量服务器资源,提高用户体验,更利于服务器的运营。

本发明上述实施例,可以适用于大量开区的游戏服务器,对于用户来说,可以带来更好,更流畅的体验效果;对于游戏运营方来说,可以节约服务器运营成本,和维护成本。由于服务器可以承载很多游戏分区,所以多个游戏分区之间用户在线人数的波动对服务器的影响不大,从服务器整体的角度来看,总的用户在线人数的曲线是稳定可控的。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述数据请求的处理方法的数据请求的处理装置。图6是根据本发明实施例的一种可选的数据请求的处理装置的示意图,如图6所示,该装置可以包括:第一分配单元61,用于分配多个线程;第二分配单元63,用于为多个线程中的每个线程分配至少一个分区,其中,至少一个分区中的每个分区用于接收预定数量的数据请求;处理单元65,用于通过多个线程,对每个线程对应的至少一个分区内接收到的数据请求进行处理。

需要说明的是,该实施例中的第一分配单元61可以用于执行本申请实施例1中的步骤s202,该实施例中的处理单元63可以用于执行本申请实施例1中的步骤s204,该实施例中的处理单元65可以用于执行本申请实施例1中的步骤s206。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

作为一种可选的实施例,如图7所示,第二分配单元63可以包括:第一检测模块631,用于检测每个线程的剩余内存资源量;分区模块633,用于在检测到存在剩余内存资源量大于第一预定阈值的线程的情况下,为剩余内存资源量大于第一预定阈值的线程分配新的分区。

作为一种可选的实施例,如图8所示,处理单元65可以包括:第二检测模块651,用于检测每个线程所需要处理的或者正在处理的数据请求的数量;转移模块653,用于在检测到第一线程所需要处理的或者正在处理的数据请求的数量超过第二预定阈值的情况下,将第一线程对应的至少一个分区内的数据请求转移至第二线程中进行处理,其中,多个线程包括第一线程和第二线程,第二线程所需要处理的或者正在处理的数据请求的数量低于第三预定阈值。

作为一种可选的实施例,如图9所示,处理单元65可以包括:判断模块655,用于判断第三线程接收到的目标数据请求是否属于第三线程对应的分区;第一处理模块657,用于在判断出接收到的目标数据请求属于第三线程对应的分区的情况下,通过第三线程对目标数据请求进行处理;第二处理模块659,用于在判断出接收到的目标数据请求不属于第三线程对应的分区的情况下,将目标数据请求转移至第四线程进行处理,其中,多个线程包括第三线程和第四线程,目标数据请求属于第四线程对应的分区。

作为一种可选的实施例,如图10所示,第一分配单元61可以包括:第一获取模块611,用于获取处理器的核心的数量,其中,处理器为一台服务器的处理器;绑定模块613,用于为每个核心绑定一个线程。

作为一种可选的实施例,如图11所示,该实施例还可以包括:第二获取模块615,用于在为每个核心绑定一个线程之后,获取处理器的内存资源量;分配模块617,用于将处理器的内存资源量分配给多个线程。

作为一种可选的实施例,多个线程中的任意两个线程之间通信连接。

通过上述模块,可以为单独的服务器分配多个分区,通过多个线程对每个线程对应的数据请求进行处理,可以解决相关技术中由于每个游戏分区分配有单独的服务器,在游戏分区负载不均衡的情况下将会导致有些服务器的资源浪费的技术问题,进而达到了充分利用服务器的资源,在不影响用户体验的情况下,节约服务器运营成本和维护成本的技术效果。

实施例3

根据本发明实施例,还提供了一种用于实施上述数据请求的处理方法的终端。

图12是根据本发明实施例的一种终端的结构框图,如图12所示,该终端可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205,如图12所示,该终端还可以包括输入输出设备207。

其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的数据请求的处理方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据请求的处理方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置205用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器203用于存储应用程序。

处理器201可以调用存储器203存储的应用程序,以执行下述步骤:分配多个线程;为多个线程中的每个线程分配至少一个分区,其中,至少一个分区中的每个分区用于接收预定数量的数据请求;通过多个线程,对每个线程对应的至少一个分区内接收到的数据请求进行处理。

处理器201还用于执行下述步骤:检测每个线程的剩余内存资源量;在检测到存在剩余内存资源量大于第一预定阈值的线程的情况下,为剩余内存资源量大于第一预定阈值的线程分配新的分区。

处理器201还用于执行下述步骤:检测每个线程所需要处理的或者正在处理的数据请求的数量;在检测到第一线程所需要处理的或者正在处理的数据请求的数量超过第二预定阈值的情况下,将第一线程对应的至少一个分区内的数据请求转移至第二线程中进行处理,其中,多个线程包括第一线程和第二线程,第二线程所需要处理的或者正在处理的数据请求的数量低于第三预定阈值。

处理器201还用于执行下述步骤:判断第三线程接收到的目标数据请求是否属于第三线程对应的分区;在判断出接收到的目标数据请求属于第三线程对应的分区的情况下,通过第三线程对目标数据请求进行处理;在判断出接收到的目标数据请求不属于第三线程对应的分区的情况下,将目标数据请求转移至第四线程进行处理,其中,多个线程包括第三线程和第四线程,目标数据请求属于第四线程对应的分区。

处理器201还用于执行下述步骤:获取处理器的核心的数量,其中,处理器为一台服务器的处理器;为每个核心绑定一个线程。

处理器201还用于执行下述步骤:获取处理器的内存资源量;将处理器的内存资源量分配给多个线程。

采用本发明实施例,提供了一种数据请求的处理的方案。可以为单独的服务器分配多个分区,通过多个线程对每个线程对应的数据请求进行处理,可以解决相关技术中由于每个游戏分区分配有单独的服务器,在游戏分区负载不均衡的情况下将会导致有些服务器的资源浪费的技术问题,进而达到了充分利用服务器的资源,在不影响用户体验的情况下,节约服务器运营成本和维护成本的技术效果。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图12所示的结构仅为示意,终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图12其并不对上述电子装置的结构造成限定。例如,终端还可包括比图12中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图12所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据请求的处理方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,分配多个线程;

s2,为多个线程中的每个线程分配至少一个分区,其中,至少一个分区中的每个分区用于接收预定数量的数据请求;

s3,通过多个线程,对每个线程对应的至少一个分区内接收到的数据请求进行处理。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:检测每个线程的剩余内存资源量;在检测到存在剩余内存资源量大于第一预定阈值的线程的情况下,为剩余内存资源量大于第一预定阈值的线程分配新的分区。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:检测每个线程所需要处理的或者正在处理的数据请求的数量;在检测到第一线程所需要处理的或者正在处理的数据请求的数量超过第二预定阈值的情况下,将第一线程对应的至少一个分区内的数据请求转移至第二线程中进行处理,其中,多个线程包括第一线程和第二线程,第二线程所需要处理的或者正在处理的数据请求的数量低于第三预定阈值。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:判断第三线程接收到的目标数据请求是否属于第三线程对应的分区;在判断出接收到的目标数据请求属于第三线程对应的分区的情况下,通过第三线程对目标数据请求进行处理;在判断出接收到的目标数据请求不属于第三线程对应的分区的情况下,将目标数据请求转移至第四线程进行处理,其中,多个线程包括第三线程和第四线程,目标数据请求属于第四线程对应的分区。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取处理器的核心的数量,其中,处理器为一台服务器的处理器;为每个核心绑定一个线程。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取处理器的内存资源量;将处理器的内存资源量分配给多个线程。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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