发明内容
本发明实施例提供了一种资源分配方法、装置及系统,可提高缓存服务器系统的资源利用率。
第一方面,本发明实施例提供了一种资源分配方法,包括:
S0:预先构建资源分配链表,利用所述资源分配链表记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态;
S1:接收外部客户端发送的携带缓存服务类型的缓存服务请求指令;
S2:查询所述资源分配链表,确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口;
S3:根据每一个所述目标服务器节点分别对应的标识信息,向每一个所述目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令,以使每一个所述目标服务器节点分别根据接收的资源分配请求指令中携带的端口号,启动所述目标端口对应的缓存服务进程。
优选地,
在所述向每一个所述目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令之后,还包括:
向外部客户端发送所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号,以使外部客户端根据接收的所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号调用所述至少一个目标服务器中运行的缓存服务进程。
优选地,
所述查询所述资源分配链表,确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口,包括:
查询所述资源分配链表,确定至少一个标准服务器节点,其中,所述标准服务器节点下存在至少一个端口处于未分配状态;
从所述至少一个标准服务器节点中确定出对应所述缓存服务类型的至少一个目标服务器节点;
将每一个所述目标服务器节点下的一个处于未分配状态的端口确定为目标端口。
优选地,
所述缓存服务类型,包括:单节点缓存服务、主从节点缓存服务或多节点缓存服务。
优选地,
在所述确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口之后,还包括:
在所述资源分配链表中,将所述目标端口的分配状态更新为已分配状态。
第二方面,本发明实施例提供了一种资源分配装置,包括:
设置模块,用于预先构建资源分配链表,利用所述资源分配链表记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态;
指令接收模块,用于接收外部客户端发送的携带缓存服务类型的缓存服务请求指令;
处理模块,用于查询所述资源分配链表,确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口;
指令发送模块,用于根据每一个所述目标服务器节点分别对应的标识信息,向每一个所述目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令,以使每一个所述目标服务器节点分别根据接收的资源分配请求指令中携带的端口号,启动所述目标端口对应的缓存服务进程。
优选地,
还包括:信息发送模块,用于向外部客户端发送所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号,以使外部客户端根据接收的所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号调用所述至少一个目标服务器中运行的缓存服务进程。
优选地,
所述处理模块,包括:
处理子单元,用于查询所述资源分配链表,确定至少一个标准服务器节点,其中,所述标准服务器节点下存在至少一个端口处于未分配状态;
第一确定子单元,用于从所述至少一个标准服务器节点中确定出对应所述缓存服务类型的至少一个目标服务器节点;
第二确定子单元,用于将每一个所述目标服务器节点下的一个处于未分配状态的端口确定为目标端口。
优选地,
还包括:链表更新模块,用于在所述资源分配链表中,将所述目标端口的分配状态更新为已分配状态。
第三方面,本发明实施例提供了一种资源分配系统,包括:
至少一个客户端、目标缓存服务器系统及如上述第二方面中任一所述的资源分配装置;其中,所述目标缓存服务器系统包括至少两个服务器节点;
所述资源分配装置分别连接每一个所述客户端以及所述目标缓存服务器系统中的每一个服务器节点;
所述客户端,用于向所述资源分配装置发送携带缓存服务类型的缓存服务请求指令;
所述服务器节点,用于接收所述资源分配装置发送的资源分配请求指令,根据接收的资源分配请求指令中携带的目标端口的端口号,启动目标端口对应的缓存服务进程。
本发明实施例提供了一种资源分配方法、装置及系统,通过构建资源分配链表以记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态,在接收到外部客户端发送的携带缓存服务类型的缓存服务请求指令时,可根据资源分配链表确定对应该缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口,进而向确定的每一个目标服务器节点分别发送携带相应端口号的资源分配请求指令,使得每一个目标服务器分别根据接收的端口号启动目标端口对应的缓存服务进程;综上可见,当目标缓存服务器系统中的服务器节点存在目标端口处于未分配状态,且存在客户端请求缓存服务时,即可将该服务器节点下处于未分配状态的目标端口对应的缓存服务进程对应的分配给该客户端;可提高缓存服务器系统的资源利用率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种资源分配方法,包括:
S0:预先构建资源分配链表,利用所述资源分配链表记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态;
S1:接收外部客户端发送的携带缓存服务类型的缓存服务请求指令;
S2:查询所述资源分配链表,确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口;
S3:根据每一个所述目标服务器节点分别对应的标识信息,向每一个所述目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令,以使每一个所述目标服务器节点分别根据接收的资源分配请求指令中携带的端口号,启动所述目标端口对应的缓存服务进程。
本发明上述实施例中,通过构建资源分配链表以记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态,在接收到外部客户端发送的携带缓存服务类型的缓存服务请求指令时,可根据资源分配链表确定对应该缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口,进而向确定的每一个目标服务器节点分别发送携带相应端口号的资源分配请求指令,使得每一个目标服务器分别根据接收的端口号启动目标端口对应的缓存服务进程;综上可见,当目标缓存服务器系统中的服务器节点存在目标端口处于未分配状态,且存在客户端请求缓存服务时,即可将该服务器节点下处于未分配状态的目标端口对应的缓存服务进程对应的分配给该客户端;可提高缓存服务器系统的资源利用率。
本发明上述实施例中,通过服务器节点的端口可以为客户端提供对应当前客户端的缓存服务进程,即通过不同的端口可向不同的客户端提供缓存服务资源,避免缓存服务器系统搭载Redis等Key-value数据库时,即使缓存服务器系统存在空闲缓存资源也无法向多个客户端提供缓存服务,造成缓存服务器系统的资源浪费。
进一步的,为了使客户端能够访问为其分配的服务器节点,并调用该服务器节点中对应当前客户端的缓存服务进程,本发明一个优选实施例中,在所述向每一个所述目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令之后,还包括:
向外部客户端发送所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号,以使外部客户端根据接收的所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号调用所述至少一个目标服务器中运行的缓存服务进程。
本发明上述实施例中,同一个服务器节点可以包括多个端口,不同客户端对应的缓存服务进程对应不同的端口,即不同客户端可通过不同的端口访问同一个服务器节点中对应当前客户端的缓存服务进程,实现对不同客户端在同一个服务器节点中分别对应的缓存服务进程进行隔离,即实现对不同客户端分别对应的缓存资源进行隔离。
本发明一个优选实施例中,所述缓存服务类型,包括:单节点缓存服务、主从节点缓存服务或多节点缓存服务。
相应的,由于目标缓存服务器系统中可能存在多个服务器节点下的多个端口均处于未分配状态,而不同的缓存服务类型需要的服务器节点的数量并不相同,比如,单节点缓存服务仅需要一个服务器节点,主从节点缓存服务仅需要两个服务器节点,而多节点缓存服务可根据实际业务需求选择合适数量的服务器节点;因此,本发明一个优选实施例中,所述查询所述资源分配链表,确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口,包括:
查询所述资源分配链表,确定至少一个标准服务器节点,其中,所述标准服务器节点下存在至少一个端口处于未分配状态;
从所述至少一个标准服务器节点中确定出对应所述缓存服务类型的至少一个目标服务器节点;
将每一个所述目标服务器节点下的一个处于未分配状态的端口确定为目标端口。
进一步的,为了避免同一个服务器节点下的同一个端口被重复分配给多个不同的客户端,本发明一个优选实施例中,在所述确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口之后,还包括:
在所述资源分配链表中,将所述目标端口的分配状态更新为已分配状态。
本发明上述实施例中,不同的缓存服务器进程对应不同的端口,在当前端口已经处于被分配状态后,当前端口对应的缓存服务进程则不能被分配给其他客户端,实现对不同客户端在相同服务器节点中对应的不同缓存服务进程进行隔离。
如图2所述,本发明实施例提供了一种资源分配方法,以将缓存服务器系统中的空闲缓存资源分配给其他申请缓存服务的客户端为例,该方法可以包括如下步骤:
步骤201,预先构建目标缓存服务器系统对应的资源分配链表。
本发明实施例中,资源分配链表用于记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态。
步骤202,接收外部客户端发送的携带缓存服务类型的缓存服务请求指令。
这里,缓存服务类型可以包括单节点缓存服务、主从节点缓存服务或多节点缓存服务。
步骤203,查询资源分配链表,确定至少一个标准服务器节点。
这里,标准服务器节点下应当存在至少一个端口处于未分配状态。
举例来说,当目标缓存服务器系统包括服务器节点A、B、C、D,且服务器节点A包括端口a1、a2和a3,服务器节点B包括端口b1和b2,服务器节点C包括c1和c2,服务器节点D包括端口d;在端口a1、b1、c1和d处于已分配状态时,即端口a1、b1、c1和d对应的缓存服务进程已经被分配给其他客户端时,服务器节点A、B、C下存在空闲缓存资源,这里,即可分别将服务器节点A、B、C确定为标准服务器节点。
步骤204,从至少一个标准服务器节点中确定出对应缓存服务类型的至少一个目标服务器节点。
举例来说,当缓存服务类型为单节点缓存服务器时,则可将服务器节点A、B、C中的任一个确定为目标服务器节点;当缓存服务器类型为主从节点缓存服务时,可将服务器节点A、B、C中的任意两个分别确定为目标服务器节点;当缓存服务类型为多节点缓存服务时,则可将服务器节点A、B、C中的任意两个或三个同时确定为目标服务器节点。
步骤205,将每一个目标服务器节点下的一个处于未分配状态的端口确定为目标端口。
举例来说,当缓存服务类型为主从节点缓存服务,且确定的目标服务器节点为服务器节点A和服务器节点B时,则可将服务器节点A下的端口a2或a3确定为目标端口,将服务器节点B下的端口b2确定为目标端口。
步骤206,根据每一个目标服务器节点分别对应的标识信息,向每一个目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令。
举例来说,当目标服务器节点A中的端口a2和目标服务器节点B中的端口b2被确定为目标端口时,则可向目标服务器节点A发送携带目标端口a2的端口号的资源分配请求指令,向目标服务器节点B发送携带目标端口b2的端口号的资源分配请求指令。
相应的,目标服务器节点A在接收到携带目标端口a2的端口号的资源分配请求指令后,即可根据目标端口a2的端口号启动并运行目标端口a2对应的缓存服务进程;目标服务器节点B在接收到携带目标端口b2的端口号的资源分配请求指令后,即可根据目标端口b2的端口号启动并运行目标端口b2对应的缓存服务进程。
步骤207,在资源分配链表中,将目标端口的分配状态更新为已分配状态。
这里,即在资源分配链表中将目标端口a2和目标端口b2分别对应的分配状态从未分配状态更新为已分配状态;如此,避免将已分配给相应客户端的端口被重复分配给不同的客户端;同时,为不同的客户端分配不同的端口号,实现对不同客户端在相同服务器节点中对应的不同缓存服务进程进行隔离。
步骤208,向外部客户端发送至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号。
这里,即将目标服务器节点A和目标服务器节点B分别对应的标识信息,以及目标端口a2和目标端口b2分别对应的端口号发送至客户端。
步骤209,客户端根据接收的至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号调用至少一个目标服务器中运行的缓存服务进程。
本发明实施例中,客户端可根据接收的目标服务器节点A的标识信息及目标端口a2的端口号,访问并调用目标服务器节点A中运行的对应目标端口a2的缓存服务进程;根据接收的目标服务器节点B的标识信息及目标端口b2的端口号,访问并调用目标服务器节点B中运行的对应目标端口b2的缓存服务进程。
如图3所示,本发明实施例提供了一种资源分配装置,包括:
设置模块301,用于预先构建资源分配链表302,利用所述资源分配链表302记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态;
指令接收模块303,用于接收外部客户端发送的携带缓存服务类型的缓存服务请求指令;
处理模块304,用于查询所述资源分配链表302,确定对应所述缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口;
指令发送模块305,用于根据每一个所述目标服务器节点分别对应的标识信息,向每一个所述目标服务器节点分别发送携带当前目标服务器节点中目标端口的端口号的资源分配请求指令,以使每一个所述目标服务器节点分别根据接收的资源分配请求指令中携带的端口号,启动所述目标端口对应的缓存服务进程。
进一步的,为了使客户端能够访问为其分配的服务器节点,并调用该服务器节点中运行的对应当前客户端的缓存服务器进程,如图4所示,本发明一个优选实施例中,还包括:信息发送模块401,用于向外部客户端发送所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号,以使外部客户端根据接收的所述至少一个目标服务器节点分别对应的标识信息以及当前目标服务器节点下的目标端口的端口号调用所述至少一个目标服务器中运行的缓存服务进程。
进一步的,如图5所示,本发明一个优选实施例中,所述处理模块304,包括:
处理子单元3041,用于查询所述资源分配链表302,确定至少一个标准服务器节点,其中,所述标准服务器节点下存在至少一个端口处于未分配状态;
第一确定子单元3042,用于从所述至少一个标准服务器节点中确定出对应所述缓存服务类型的至少一个目标服务器节点;
第二确定子单元3043,用于将每一个所述目标服务器节点下的一个处于未分配状态的端口确定为目标端口。
进一步的,为了避免同一个服务器节点中的同一个端口被重复分配给多个客户端,本发明一个优选实施例中,还包括:链表更新模块(附图中未示出),用于在所述资源分配链表302中,将所述目标端口的分配状态更新为已分配状态。
如图6所示,本发明实施例提供了一种资源分配系统,包括:
至少一个客户端601、目标缓存服务器系统602及如上述实施例中任一所述的资源分配装置603;其中,所述目标缓存服务器系统602包括至少两个服务器节点6021;
所述资源分配装置603分别连接每一个所述客户端601以及所述目标缓存服务器系统602中的每一个服务器节点6021;
所述客户端601,用于向所述资源分配装置603发送携带缓存服务类型的缓存服务请求指令;
所述服务器节点6021,用于接收所述资源分配装置603发送的资源分配请求指令,根据接收的资源分配请求指令中携带的目标端口的端口号,启动目标端口对应的缓存服务进程。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
综上所述,本发明各个实施例至少具有如下有益效果:
1、通过构建资源分配链表以记录目标缓存服务器系统中至少两个服务器节点的标识信息,当前服务器节点中至少一个端口的端口号及当前端口的分配状态,在接收到外部客户端发送的携带缓存服务类型的缓存服务请求指令时,可根据资源分配链表确定对应该缓存服务类型的至少一个目标服务器节点,以及当前目标服务器节点下处于未分配状态的一个目标端口,进而向确定的每一个目标服务器节点分别发送携带相应端口号的资源分配请求指令,使得每一个目标服务器分别根据接收的端口号启动目标端口对应的缓存服务进程;综上可见,当目标缓存服务器系统中的服务器节点存在目标端口处于未分配状态,且存在客户端请求缓存服务时,即可将该服务器节点下处于未分配状态的目标端口对应的缓存服务进程对应的分配给该客户端;可提高缓存服务器系统的资源利用率。
2、本发明一实施例中,同一个服务器节点可以包括多个端口,不同客户端对应的缓存服务进程对应不同的端口,即不同客户端可通过不同的端口访问同一个服务器节点中对应当前客户端的缓存服务进程,实现对不同客户端在同一个服务器节点中分别对应的缓存服务进程进行隔离,即实现对不同客户端分别对应的缓存资源进行隔离。
3、本发明一实施例中,通过将目标端口的分配状态更新为已分配状态,可避免已分配给相应客户端的端口被重复分配给多个客户端;同时,为不同的客户端分配不同的端口号,实现对不同客户端在相同服务器节点中对应的不同缓存服务进程进行隔离。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。