负载均衡方法、装置、存储介质及电子设备与流程

文档序号:23551539发布日期:2021-01-05 21:10阅读:112来源:国知局
负载均衡方法、装置、存储介质及电子设备与流程

本申请涉及计算机技术领域,尤其涉及一种负载均衡方法、装置、存储介质及电子设备。



背景技术:

随着计算机网络应用的普及,网络上数据业务量、访问量和数据流量的正在快速增长,按照传统的方法使用单台应用服务器提供应用服务已经远远不能满足庞大的用户请求的需求,现在通常都会使用服务器集群技术对日益增长的服务请求进行负载均衡。

目前,在对服务请求进行负载均衡的过程中,通常基于分布式集群的架构,由多个网络节点组成一个分布式网络,每个网络节点对应的服务类型相同,分布式网络采用事件分发的方式将相应的服务请求分发至各网络节点进行处理,从而达到负载均衡的效果。



技术实现要素:

本申请实施例提供了一种负载均衡方法、装置、存储介质及电子设备,可以提高负载均衡的效果。本申请实施例的技术方案如下:

第一方面,本申请实施例提供了一种负载均衡方法,所述方法包括:

接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器;

若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务;

若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

第二方面,本申请实施例提供了一种负载均衡装置,所述装置包括:

服务请求接收模块,用于接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器;

目标网络服务响应模块,用于若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务;

第二网络节点确定模块,用于若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。

第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。

本申请一些实施例提供的技术方案带来的有益效果至少包括:

在本申请一个或多个实施例中,第一网络节点接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器,若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务,若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种负载均衡方法的流程示意图;

图2是本申请实施例提供的负载均衡方法涉及的一种网络节点对应的结构示意图;

图3是本申请实施例提供的另一种负载均衡方法的流程示意图;

图4是本申请实施例提供的负载均衡方法涉及的一种服务节点列表对应的场景示意图;

图5是本申请实施例提供的另一种负载均衡方法的流程示意图;

图6是本申请实施例提供的另一种负载均衡方法的流程示意图;

图7是本申请实施例提供的基于分布式网络和容器化的负载均衡系统的架构示意图;

图8是本申请实施例提供的一种负载均衡装置的结构示意图;

图9是本申请实施例提供的一种目标网络服务响应模块的结构示意图;

图10是本申请实施例提供的一种第二网络节点确定模块的结构示意图;

图11是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

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

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

在相关技术中,在对服务请求进行负载均衡的过程中,通常基于分布式集群的架构,由多个网络节点组成一个分布式网络,每个网络节点对应的服务类型相同,分布式网络采用事件分发的方式将相应的服务请求分发至各网络节点进行处理,从而达到负载均衡的效果。然而,一方面:由于各网络节点的支持的服务类型均相同,网络节点通常只能处理单一服务类型的服务请求,采用这种方式无疑会浪费网络节点的处理资源,造成分布式网络的负载均衡效果较差。一方面,由于各网络节点的支持的服务类型均相同,单一网络节点的节点粒度过大,只能支持一种服务类型;一方面,分布式网络所包含的各网络节点的功能通常在部署时已经确定,无法动态按需构建不同服务类型的功能,以及在使用过程中也无法动态按需新建不同服务类型的功能。

下面结合具体的实施例对本申请进行详细说明。

在一个实施例中,如图1所示,特提出了一种负载均衡方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的负载均衡装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。

具体的,该负载均衡方法包括:

步骤s101:接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器。

所述请求是请求分布式网络工作的指示和要求,可以理解为请求分布式网络执行某种运算或功能实现的某种控制的代码。在本申请实施例中,所述服务操作请求可以理解为,客户端上的目标网络服务被触发之后生成目标网络服务对应的服务请求,服务平台可以接收到客户端生成并发送的服务请求,该服务请求通常用于请求分布式网络执行目标网络服务对应的运算或功能实现的服务控制代码,以向客户端提供所需的目标网络服务。

所述目标网络服务与分布式网络相关联,分布式网络对外提供多种网络服务,所述目标网络服务为客户端向分布式网络上第一网络节点所请求的服务,且目标网络服务为分布式网络所提供的多种网络服务中的一种。

分布式网络所包含的的任一网络节点均可为客户端上的用户提供特定的服务(如多媒体服务、云计算服务等等),目标网络服务可以为客户端上自动触发或由用户所触发的一种特定的意向服务,具体服务类型可根据实际应用环境中分布式网络或客户端的开发者开发并确定,此处不作具体限定。

所述容器可以理解为进程沙盒,容器基于虚拟化技术,所述容器是一种操作系统级别的虚拟化技术。容器是容器即服务(containerasaservice,caas)的简称,caas是一种特定类型的平台即服务(platformasaservice,paas)服务。容器通过操作系统隔离技术,如linux下的cgroup和namespace,将不同的进程隔离开。容器技术不同于硬件虚拟化(hypervisor)技术,它没有虚拟硬件,其内部也没有操作系统,只有进程。正是由于容器技术的这个特点,使得容器相比虚拟机更轻量,管理也更方便。为了方便管理,在容器的运行态,定义了一组公共的管理操作,例如:启动、停止、暂停和删除等,对容器进行统一的生命周期管理,同时在本申请实施例中,采用基于分布式网络的容器化的技术部署相应的网络服务,服务负载相对较低、轻量,且容器搭载的网络服务启动以及服务运行更快。

其中,容器在本申请实施例中可以理解为分布式网络的功能或服务的最小单元,以分布式网络的第一网络节点为例,第一网络节点可以包含多个容器,每个容器可以提供相同或不同的单一网络服务(也可以理解为单一功能)。以下对以第一网络节点为例,对第一网络节点的结点结构进行释义,需要说明的是,分布式网络上的其他网络节点的结点架构可以参考第一网络节点,也即各网络节点的结点架构类似。

如图2所示,图2是一种网络节点对应的结构示意图,以第一网络节点为例进行释义,第一网络节点可分为节点管理(内含网络管理层,容器管理层,系统管理层等)和容器群(包含至少一个容器)。

1、容器管理层用于管理容器群的增删改等。

2、网络管理层用于管理节点接入p2p网络与撤离p2p网络,并提供节点信息给整个p2p网络(包含节点的系统信息(系统的资源,可创建容器的总量、已经分配容器,剩余可分配容器的总量等等),提供的容器信息,节点系统信息等等)。

3、系统管理层主要的功能是用于收集管理计算节点的资源,如cpu、内存、磁盘等,用于容器管理层衡量容器资源的分配。

具体的,分布式网络上的第一网络节点接收客户端针对目标网络服务的服务请求,对所述服务请求进行响应,然后第一网络节点可通过“节点管理”确定第一网络节点上所包含的至少一个容器,如可通过“节点管理”对应的网络管理层中的相应节点信息确定第一网络节点上所包含的至少一个容器。如可通过“节点管理”对应的容器管理层确定第一网络节点上所包含的至少一个容器,通常容器管理层可以记录所管理的第一网络节点上所有的容器的数量。

在一种具体的实施场景中,用户通过操作客户端,在客户端上针对目标网络服务发起选中操作,此时客户端监测到选中操作,针对目标网络服务生成服务请求,基于与分布式网络之间的通信连接向分布式网络发起服务请求,分布式网络可以基于一定的请求分配策略(如随机分配、定向分配等等),由分布式网络上的某一网络节点对所述服务请求进行处理,所述“某一网络节点”即第一网络节点,其中,所述请求分配策略可参考相关技术中的有关内容,此处不再赘述。此时,分布式网络上的第一网络节点接收客户端针对目标网络服务的服务请求,对所述服务请求进行响应,确定所述第一网络节点所包含的至少一个容器。

步骤s102:若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务。

具体的,分布式网络上的第一网络节点确定所述第一网络节点所包含的至少一个容器之后,然后可以结合第一网络节点对应的容器信息,其中,容器信息可以是节点容器总容量、已分配容器的容量、未分配容器的容量、各容器的负载等等,进而判断本节点所包含的所有容器中是否存在可用的第一容器,第一容器可以理解为第一网络节点确定的用于响应目标网络服务的容器。当确定在所述至少一个容器中存在可用的第一容器,则第一网络节点可以在所述第一容器中响应所述目标网络服务。

具体的,第一网络节点判断本节点所包含的所有容器中是否存在可用的第一容器时,可以结合第一网络节点对应的容器信息确定各容器的支持的网络服务类型以及各容器的负载来来综合判断,如第一网络节点可以在所有容器中确定能够支持目标网络服务对应的网络类型的目标容器(可以是多个),然后基于多个目标容器的负载确定是否存在可以成功响应目标网络服务的第一容器,如,目标容器的连接数是否超过阈值、目标容器的富余资源是否满足目标网络服务对应的资源需求等等。

进一步的,第一网络节点确定在所述至少一个容器中存在可用的第一容器之后,创建执行所述目标网络服务对应的服务任务,通常以服务进程的形式运行在容器的任务列表中,同时调用本节点的容器资源,如内存资源、处理器资源、计算力资源等等,通过调用本节点的容器资源执行所述目标网络服务对应的服务任务,以实现在第一容器中响应目标网络服务。

步骤s103:若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

具体的,分布式网络的各网络节点可以动态的根据本节点的网络容量、负载以及其他网络节点的负载,动态地在分布式网络上的其他网络节点响应难以处理的目标网络服务,也即,在本申请实施例中,第一网络节点在所述至少一个容器中确定不存在所述第一容器时,通常第一网络节点不存在可用的网络服务或支持该网络服务的容器负载较高,此时第一网络节点可以将该服务请求在其他网络节点上进行处理,从而实现请求服务的负载均衡。进一步的,第一网络节点可以在所述分布式网络中确定包含可用的第二容器的第二网络节点,其中,第二容器可以理解为第二网络节点上确定可支持该目标网络服务以及负载可支持提供目标网络服务。具体实施中,第一网络节点可以获取与其相关联的其他网络节点对应的关联容器信息,其中,关联容器信息可以是其他网络节点对应的容器总容量、已分配容器的容量、未分配容器的容量、各容器的负载、各容器的网络服务类型等信息中的一种或多种的拟合。

进一步的,第一网络节点可以判断其他网络节点所包含的所有容器中是否存在可用的第二容器,第二容器可以理解为确定的其他网络节点上用于响应目标网络服务的容器。具体实施中,判断其他网络节点所包含的所有容器中是否存在可用的第二容器时,可以结合其他网络节点对应的关联容器信息确定各容器的支持的网络服务类型以及各容器的负载来来综合判断,如确定其他网络节点在所有容器中能够支持目标网络服务对应的网络类型的目标容器(可以是多个),然后基于多个目标容器的负载确定是否存在可以成功响应目标网络服务的第二容器,如,目标容器的连接数是否超过阈值、目标容器的富余资源是否满足目标网络服务对应的资源需求等等。当某一网络节点上存在上述第二容器时,可以所述“某一网络节点”则为第二网络节点。进一步的,当第二网络节点的数目为多个时,则可以在结合多个第二网络节点的参考因素确定最合适的第二网络节点,如选取客户端连接数最少的网络节点为最终的第二网络节点,如:可以确定网络服务处理速度最快的网络节点为最终的第二网络节点,如:可以确定容器负载最低的网络节点为最终的第二网络节点,如:可以确定与客户端网络路径最短的网络节点为最终的第二网络节点,等等。

具体的,第一网络节点在所述分布式网络中确定包含可用的第二容器的第二网络节点之后,则可以进一步实现指示所述第二网络节点在所述第二容器中响应所述目标网络服务。具体如下:

在一种可行的实施方式中,第一网络节点在所述分布式网络中确定包含可用的第二容器的第二网络节点之后,此时通常第二网络节点可以控制所包含的第二容器对所述目标网络服务进行响应。第一网络节点可以采用重定向的方式,向所述客户端反馈针对所述第二网络节点的重定向消息,所述重定向可以理解为通过一定的方式(如消息发送)将各种网络请求(如目标网络请求)重新定个方向转到其它位置(如:网页重定向、域名的重定向、请求的重定向)。在本申请实施例中,第一网络节点向客户端发送的重定向消息用于指示所述客户端向所述第二网络节点重新发送所述服务请求;客户端在接收到第一网络节点发送的重定向消息之后,即可以将针对目标网络服务的服务请求重新发送至第二网络节点,第二网络节点在接收到客户端发送的服务请求之后,可以对所述服务请求进行响应,执行“确定所述第二网络节点所包含的至少一个容器,若在所述至少一个容器中存在可用的第二容器,则在所述第二容器中响应所述目标网络服务”。通常第二网络节点上会存在上述可用的第二容器,第二网络节点此时创建执行所述目标网络服务对应的服务任务,通常以服务进程的形式运行在容器的任务列表中,同时调用本节点的容器资源,如内存资源、处理器资源、计算力资源等等,通过调用本节点的容器资源执行所述目标网络服务对应的服务任务,以实现在第二容器中响应目标网络服务,对于客户端而言,客户端既可通过与第二网络节点之间的通信连接,实现获取第二网络节点在第二容器中响应的目标网络服务。

在一种可行的实施方式中,第一网络节点针对目标网络服务可以直接与第二网络节点进行通信协商,以直接在第二网络节点侧确定可以为客户端提供目标网络服务,而无需客户端再次发送服务请求。具体为:第一网络节点可以向所述第二网络节点发送针对所述客户端的服务代理请求,所述服务代理请求用于指示所述第二网络节点代理客户端所请求的目标网络服务,并指示第二网络及节点在所述第二容器中响应所述目标网络服务;通常第二网络节点在接收到所述服务代理请求之后,对所述服务代理请求进行响应,执行“确定所述第二网络节点所包含的至少一个容器,若在所述至少一个容器中存在可用的第二容器,向所述第一网络节点反馈针对所述服务代理请求的请求确认信息”,进一步的,第一网络节点在接收所述第二网络节点反馈的请求确认信息之后,第一网络节点向所述客户端发送针对所述第二网络节点的服务代理消息,其中,所述服务代理消息用于指示所述客户端向所述第二网络节点获取所述目标网络服务。在客户端接收到服务代理请求之后,此时也即确定该向哪一个网络节点获取目标网络服务,然后客户端即可向第二网络节点获取目标网络服务。

在本申请实施例中,第一网络节点接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器,若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务,若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配。

请参见图3,图3是本申请提出的一种负载均衡方法的另一种实施例的流程示意图。具体的:

步骤s201:接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器。

具体可参见步骤s101,此处不再赘述。

步骤s202:获取所述第一网络节点的第一容器信息以及所述目标网络服务的服务类型。

所述第一容器信息可以是第一网络节点对应的容器总容量、已分配容器的容量、未分配容器的容量、各容器的负载、各容器的网络服务类型等信息中的一种或多种的拟合。

所述服务类型可根据实际应用环境中分布式网络或客户端的开发者开发并确定,如多媒体服务类型、云计算服务类型、云存储服务类型等等。

步骤s203:在所述至少一个容器中确定所述服务类型对应的第一参考容器,基于所述第一容器信息确定所述参考容器的容器状态。

所述第一参考容器可以理解为支持所述目标网络服务对应服务类型的容器,如目标网络服务为云计算服务,则第一参考容器即为云计算类型的容器。其中,第一参考容器的数量可以是多个。

所述容器状态至少包括可用状态以及不可用状态,当容器的容器状态为可用状态时,此时第一参考容器也即可以为客户端提供目标网络服务;当容器的容器状态为不可用状态时,此时第一参考容器也即不可以为客户端提供目标网络服务,此时通常第一参考容器的负载较低。

具体的,第一网络节点可以首先基于服务类型从所包含的所有容器中确定支持该服务类型的第一参考容器,第一参考容器的数目可以是多个,然后在第一参考容器中结合第一容器信息中与第一参考容器相关的参考容器信息来进一步确定,第一参考容器的容器状态。

如,“第一参考容器相关的参考容器信息”可以是容器的负载,可以获取多个第一参考容器的负载,判定负载是否可支持正常提供目标网络服务,例如,第一网络节点可以随之确定可支持目标网络服务对应的负载阈值,当容器的负载大于负载阈值时,此时认为容器状态为不可用状态;当容器的负载小于/等于负载阈值时,此时认为容器状态为可用状态。

如:“第一参考容器相关的参考容器信息”可以是容器的连接数(基于其他客户端的通信连接的数量),可以获取多个第一参考容器的连接数,判定连接数是否可支持正常提供目标网络服务,例如,第一网络节点可以随之确定可支持目标网络服务对应的最大连接数,当容器的连接数大于最大连接数时,此时认为容器状态为不可用状态;当容器的连接数小于/等于最大连接数时,此时认为容器状态为可用状态。

如:“第一参考容器相关的参考容器信息”可以是容器的富余资源,所述富余资源可以是富余内存资源、富余处理器资源、富余计算力资源等等,可以获取多个第一参考容器的富余资源,判定富余资源是否可支持正常提供目标网络服务,例如,第一网络节点可以随之确定可支持目标网络服务对应的资源上限值,当容器的富余资源小于资源上限值时,此时认为容器状态为可用状态;当容器的富余资源小于/等于资源上限值时,此时认为容器状态为不可用状态。

步骤s204:当所述容器状态为可用状态时,将所述第一参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

具体的,第一网络节点判断本节点所包含的第一参考容器中的容器状态,当容器状态为可用状态时,通常可以将第一参考容器作为第一网络节点中所有容器中的可用的第一容器,然后可以创建执行所述目标网络服务对应的服务任务,通常以服务进程的形式运行在容器的任务列表中,同时调用本节点的容器资源,如内存资源、处理器资源、计算力资源等等,通过调用本节点的容器资源执行所述目标网络服务对应的服务任务,以实现在第一容器中响应目标网络服务。

进一步的,当多个第一参考容器的容器状态均为可用状态,则可以在结合多个第一参考容器的参考因素确定最合适的第一容器,如:可以确定网络服务处理速度最快的第一参考容器为最终的第一容器。

步骤s205:当所述容器状态为不可用状态时,获取所述第一网络节点的容器富余资源。

具体的,第一网络节点判断本节点所包含的第一参考容器中的容器状态,当容器状态均为不可用状态时,此时通常已创建的所有第一参考容器此时无法为客户端提供目标网络服务,而通常第一网络节点会对应富余的容器资源,也即可供创建新的容器的资源,该资源也即容器富余资源。所述容器富余资源可以是内存资源、处理器资源、计算力资源、i/o口资源等等,通常第一网络节点可以通过所包含的系统管理层获取到第一网络节点的容器富余资源。

步骤s206:当所述容器富余资源满足容器新建条件时,新建所述目标服务类型对应的第二参考容器,并将所述第二参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

所述容器新建条件可以理解为创建新的容器的条件,如容器新建条件可以是容器富余资源所对应的一个或多个(如节点富余内存资源、节点富余处理器资源、节点富余计算力资源、富余i/o口资源)因素需要达到某一临界状态或门限状态。

在一种可行的实施方式中,所述容器新建条件可以是节点富余内存资源、节点富余处理器资源以及节点富余计算力资源对应的门限值,如假设节点富余内存资源对应的门限值为a、节点富余处理器资源对应的门限值为b、节点富余计算力资源对应的门限值为c,当实际节点富余内存资源大于或等于a且实际节点富余处理器资源大于或等于b且实际节点富余计算力资源大于或等于c,则确定所述容器富余资源满足容器新建条件,然后新建所述目标服务类型对应的第二参考容器,一种方式可以是第一网络节点按照目标服务类型对应的镜像创建流程重新创建一个镜像,在镜像完成创建后分配相应的容器资源,从而完成第二参考容器的创建过程;一种可以是直接在预设的镜像仓库里面直接pull镜像下载,然后直接运行该镜像并分配相应的容器资源,其中,所述镜像仓库包含多种服务类型的镜像,镜像仓库可以部署在本地也可以部署在云端。进一步的,第一网络节点将所述第二参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

步骤s207:当所述容器富余资源不满足所述容器新建条件时,确定在所述至少一个容器中不存在所述第一容器,则获取所述分布式网络对应的服务节点列表。

以上述释义为例,容器富余资源不满足容器新建条件时,如实际节点富余内存资源小于a、实际节点富余处理器资源小于b、实际节点富余计算力资源小于c。则第一网络节点确定在所述至少一个容器中不存在所述第一容器,然后第一网络节点可以获取所述分布式网络对应的服务节点列表。

其中,服务节点列表可以是包含服务类型、容器信息、网络节点信息等与分布式网络上各网络节点相关的节点信息,其中服务节点列表中的相关节点信息的类型可根据实际应用情况确定,只要能够基于服务节点列表中的信息确定出包含可用的第二容器的第二网络节点即可,具体信息类型此处不作具体限定。

步骤s208:基于所述服务节点列表,确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

在一种具体实施场景中,以所述服务节点列表包括至少一个服务类型以及各所述服务类型对应的网络节点信息为例进行释义,其中网络节点信息可以理解为支持该服务类型的网络节点上的相关网络节点信息,如以服务类型为云计算类型为例,则网络节点信息为支持云计算类型的所有网络节点上网络节点信息(如容器信息,节点负载、节点可连接数)的集合。通常服务节点列表可以以不同的服务类型,划分为各不同服务类型对应的网络节点信息。

其中,网络节点信息可以是以节点列表的形式进行表征,如图4所示,图4是一种服务节点列表对应的场景示意图,在服务节点列表中按照服务类型(如服务a、服务b、服务c...)的不同可划分为多个网络节点信息,如网络节点信息-“服务a容器表”、网络节点信息-“服务b容器表”、网络节点信息-“服务c容器表”...而每个网络节点信息对应有支持该服务类型的“节点-容器”子信息,所述“节点-容器”子信息用于形象表征某一节点上的某个容器可支持该服务类型的服务,如“节点1-容器a1”表征节点1的容器a1可支持服务a类型的服务,同时该“节点-容器”子信息可以与指示的目标容器信息相对应,如“节点1-容器a1”子信息可以与指示的目标容器a1的目标容器信息相对应,如目标容器信息可以是该容器的负载、连接数、富余资源、响应速度等信息。

具体实施中,第一网络节点获取所述目标服务类型对应的网络节点信息,假设目标服务类型为服务a类型,则第一网络节点获取服务a类型对应的网络节点信息“服务a容器表”。然后从所述网络节点信息所包含的至少一个网络节点(如节点1、节点2、节点3...)中,具体确定包含可用的第二容器的第二网络节点。具体确定步骤如下:

1、第一网络节点获取所述至少一个网络节点中各网络节点对应的负载,如以服务a类型为例,则可以获取节点1、节点2、节点3...分别对应的负载,其中,所述负载用于反馈网络节点上负载状态的一类负载参数,如节点连接数、已分配容器的容量、已分配的容器资源、已分配的处理器计算资源等等;进一步的,在一些实施方式中可以对一类负载参数进行拟合,以具体数字对负载进行量化,如结合节点连接数、已分配容器的容量、已分配的容器资源、已分配的处理器计算资源等一类负载参数进行拟合,得到表征当前网络节点负载状况的负载值,如负载百分比、负载分数等等,其中拟合的方式可以是预先指定负载拟合规则,对各负载参数进行相应的加权运算,最后确定一个负载值。

2、第一网络节点基于各所述负载,在所述至少一个网络节点中确定最低负载指示的所述第二网络节点,并确定所述第二网络节点包含可用的第二容器。

在一种可行的实施方式中,第一网络节点可以基于各所述负载对应的负载值,确定最低负载值,然后在所述至少一个网络节点中确定最低负载值指示的所述第二网络节点,可以理解的是,第一网络节点在确定最低负载指示的第二网络节点之后,该第二网络节点通常有较多的富余资源,可以提供第二容器响应所述目标网络服务。

进一步的,第一网络节点可以周期性或实时对服务节点列表进行更新维护,其更新维护过程具体如下:

方式1:第一网络节点可以确定所述分布式网络上与所述第一网络节点相关联的第三网络节点,向所述第三网络节点请求第一节点信息,基于所述第一节点信息更新所述分布式网络对应的服务节点列表,所述第一节点信息为所述第三网络节点的节点信息;

其中,所述第一网络节点可以是所述分布式网络上除第一网络节点之外的所有的其他网络节点,可以是所述分布式网络上与第一网络节点建立连接关系的其他网络节点。

方式1具体为第一网络节点采用主动请求获取的方式,主动向相关联的第三网络节点进行请求,如向发送获取请求,然后在接收相应网络节点发送的节点信息,然后再基于节点信息对服务节点列表进行更新维护。

其中,节点信息可以是网络节点上所有容器对应的服务类型、网络节点的负载、网络节点的富余资源、容器信息等信息中的一种或多种的拟合。

方式2:接收所述分布式网络上至少一个第四网络节点反馈的第二节点信息,所述第四网络节点为所述第一网络节点的监听节点,基于所述第二节点信息更新所述分布式网络对应的服务节点列表,所述第二节点信息为所述第四网络节点的节点信息;

其中,方式2具体为第一网络节点采用服务监听的方式,首先在第四网络节点上注册相应的监听服务,在注册好监听服务后,第四网络节点可以实时或周期性向第一网络节点反馈第二节点信息。

方式3:接收所述分布式网络上至少一个第五网络节点反馈的第三节点信息,所述第五网络节点为所述第四网络节点上相关联的节点,所述第四网络节点为所述第一网络节点的监听节点,基于所述第三节点信息更新所述分布式网络对应的服务节点列表,所述第三节点信息为所述第五网络节点的节点信息;

其中,方式3具体为第一网络节点采用服务监听的方式,首先在第四网络节点上注册相应的监听服务,在注册好监听服务后,一方面:第四网络节点可以实时或周期性向第一网络节点反馈本节点的节点信息。另一方面,由于第四网络节点与第五网络节点相关联,第四网络节点可以接收到第五网络节点的述第三节点信息,第四网络节点在接收到第三节点信息后可以向第一网络节点反馈相关联的其他节点的信息。

方式4:以信息广播的方式,向所述分布式网络上所包含的所有第六网络节点请求第四节点信息,基于所述第四节点信息更新所述分布式网络对应的服务节点列表,所述第四节点信息为所述第三网络节点的节点信息。

其中,方式3具体为第一网络节点采用信息广播的方式,所述信息广播的方式可以是相关技术中的注册广播的方式,也即向订阅第一网络节点的节点信息共享服务的所有第六网络节点进行第四节点信息的请求,也可是采用泛洪的机制,依次向所述分布式网络上的所有网络节点请求相对应的第四节点信息。

在本申请实施例中,通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配;以及,在第一网络节点的已创建容器为不可用状态时,可以根据容器富余资源动态新建所需服务类型的容器,实现了动态新建不同类型的容器,应用更广泛,同时丰富了负载均衡的手段,实现了负载均衡过程中容器资源的动态分配;以及,可以通过维护更新的服务节点列表智能确定相关联的各网络节点中的第二网络节点,由第二网络节点上的可用的第二容器进行响应,提高了负载均衡的效果。

请参见图5,图5是本申请提出的一种负载均衡方法的另一种实施例的流程示意图。具体的:

步骤s301:在所述分布式网络上,确定提供所述目标网络服务的第二网络节点,所述第二网络节点基于第二容器提供所述目标网络服务。

在一种可行的实施方式中,在第一网络节点加入所述分布式网络之后,即可基于容器维度的分布式网络,建立同一服务类型容器间的直接连接,提高负载均衡的效率。

具体的,以目标网络服务为例,第一网络节点通过遍历所述分布式网络上所有的网络节点,同时获取各网络节点的容器信息(可以理解为获取网络节点对应的各容器分别支持的服务类型),然后确定支持同一目标网络服务的第二网络节点,其中第二网络节点可以是多个,然后执行下一步建立同一服务类型容器间的直接连接。

可选的,第一网络节点也可以根据步骤s207中的服务节点列表来确定支持通同一服务类型的第二网络节点,以及第二网络节点上支持目标网络服务的第二容器。

步骤s302:建立所述第一网络节点上第一容器与所述第二容器的关联连接,所述第一容器用于在所述第一网络节点上响应所述目标网络服务。

具体的,第一网络节点确定第二网络节点之后,即可以建立与所述第一网络节点上第一容器与所述第二容器的关联连接,所述关联连接可以将第一容器与第二容器进行服务绑定,进一步的,在服务绑定之后,第一容器与所述第二容器之间可以在容器维度上进行负载均衡,如当第一容器负载较大无法为客户端提供目标网络服务时可以指示第二容器向客户端提供目标网络服务,也即有第二网络节点在第二容器中响应所述目标网络服务。进一步的,所述关联连接可以是基于第二网络节点上第二容器的对应的外部ip和端口进行绑定的形式建立的,如第一网络节点建立第一容器对应的内部ip与第二容器的对应的外部ip的映射关系,以及建立第一容器对应的端口与第二容器的对应的端口的映射关系。

步骤s303:接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器。

具体可参见步骤s101,此处不再赘述。

步骤s304:若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务。

具体可参见步骤s102,此处不再赘述。

步骤s305:若在所述至少一个容器中不存在所述第一容器,获取所述第二网络节点上所述第二容器的负载。

其中,所述确定“在所述至少一个容器中不存在所述第一容器”可以参考步骤s201-s208中的相关释义,此处不再具体赘述。

具体的,若在所述至少一个容器中不存在所述第一容器,第一网络节点可以主动向第二网络节点请求第二容器的负载。如向第二网络节点发送针对第二容器的负载获取请求,第二网络节点在接收到所述负载获取请求之后,对所述负载获取请求进行响应,然后向第一网络节点反馈第二容器的负载信息,第一网络节点基于负载信息,即可获取到所述第二网络节点上所述第二容器的负载。

可选的,若在所述至少一个容器中不存在所述第一容器,第一网络节点可以基于步骤s207中的服务节点列表来获取第二容器的负载。

步骤s306:当所述负载小于负载阈值时,确定所述第二容器为可用的容器,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

具体的,第一网络节点获取所述第二网络节点上所述第二容器的负载之后,然后判定负载是否可支持正常提供目标网络服务,例如,第一网络节点可以随之确定可支持目标网络服务对应的负载阈值,当容器的负载大于负载阈值时,此时认为容器状态为不可用状态;当容器的负载小于/等于负载阈值时,此时认为容器状态为可用状态。当容器状态为可用状态,此时确定所述第二容器为可用的容器,然后指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

其中,所述指示所述第二网络节点在所述第二容器中响应所述目标网络服务可参考步骤s103中的相关释义,此处不再赘述。

在本申请实施例中,通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配;以及,可以基于容器维度的分布式网络,建立同一服务类型不同网络节点上容器间的直接连接,提高负载均衡的效率。

请参见图6,图6是本申请提出的一种负载均衡方法的另一种实施例的流程示意图。具体的:

步骤s401:接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器。

具体可参见步骤s101,此处不再赘述。

步骤s402:若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务。

具体可参见步骤s102,此处不再赘述。

步骤s403:若在所述至少一个容器中不存在所述第一容器,则获取所述分布式网络对应的服务节点列表。

其中,服务节点列表可以是包含服务类型、容器信息、网络节点信息等与分布式网络上各网络节点相关的节点信息,其中服务节点列表中的相关节点信息的类型可根据实际应用情况确定,只要能够基于服务节点列表中的信息确定出包含可用的第二容器的第二网络节点即可,具体信息类型此处不作具体限定。

步骤s404:获取所述第一网络节点与所述分布式网络上其余网络节点之间的节点跳数。

所述节点跳数可以是网络路由节点中的术语,表示消息、信息以及数据从一个路由节点传送到另一个路由节点要经过几个节点的转发,例如,a网络节点的信息由a网络节点到b网络节点需要经过3个节点的转发,则节点跳数为3。

具体的,第一网络节点在加入分布式网络时,即可随之确定与所述分布式网络上其余网络节点的节点跳数。

步骤s405:基于所述服务节点列表以及各所述节点跳数,在所述其余网络节点中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

具体的,第一网络节点基于所述服务节点列表在所述分布式网络上其余网络节点中确定提供所述目标网络服务的至少一个目标网络节点。

在一种具体实施场景中,以所述服务节点列表包括至少一个服务类型以及各所述服务类型对应的网络节点信息为例进行释义,其中网络节点信息可以理解为支持该服务类型的网络节点上的相关网络节点信息,如以服务类型为云计算类型为例,则网络节点信息为支持云计算类型的所有网络节点上网络节点信息(如容器信息,节点负载、节点可连接数)的集合。通常服务节点列表可以以不同的服务类型,划分为各不同服务类型对应的网络节点信息。

其中,网络节点信息可以是以节点列表的形式进行表征,如图所示,图是一种服务节点列表对应的场景示意图,在服务节点列表中按照服务类型(如服务a、服务b、服务c...)的不同可划分为多个网络节点信息,如网络节点信息-“服务a容器表”、网络节点信息-“服务b容器表”、网络节点信息-“服务c容器表”...而每个网络节点信息对应有支持该服务类型的“节点-容器”子信息,所述“节点-容器”子信息用于形象表征某一节点上的某个容器可支持该服务类型的服务,如“节点1-容器a1”表征节点1的容器a1可支持服务a类型的服务,同时该“节点-容器”子信息可以与指示的目标容器信息相对应,如“节点1-容器a1”子信息可以与指示的目标容器a1的目标容器信息相对应,如目标容器信息可以是该容器的负载、连接数、富余资源、响应速度等信息。

具体实施中,第一网络节点获取所述目标服务类型对应的网络节点信息,假设目标服务类型为服务a类型,则第一网络节点获取服务a类型对应的网络节点信息“服务a容器表”。然后从所述网络节点信息所包含的至少一个网络节点(如节点1、节点2、节点3...)中,具体确定包含可用的第二容器的第二网络节点。进一步的,第一网络节点可以结合目标服务类型对应的各网络节点的负载,筛选出当前可支持目标网络服务的目标网络节点,如确定当前负载小于或等于负载阈值的为目标网络节点,目标网络节点的数量可以是多个。

然后第一网络节点可以在各所述目标网络节点对应的参考节点跳数中,确定最小跳数指示的第二网络节点,可以理解的是,通常该第二网络节点通常有较多的富余资源,可以提供第二容器响应所述目标网络服务。

其中,所述“指示所述第二网络节点在所述第二容器中响应所述目标网络服务”可参考步骤s103中的相关释义,此处不再赘述。

在本申请实施例中,通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配。

请参见图7,为本申请实施例提供的一种基于分布式网络和容器化的负载均衡系统的架构示意图。

参见图1,本发明基于分布式网络(p2p技术)和容器化的负载均衡系统实质为一种具有均衡负载功能的分布式处理集群,该负载均衡系统内没有中心节点(即集中控制节点),只有分设于不同的采用容器化技术进行部署的服务器、并分别用作该系统分布式控制核心的多个同构或异构的处理节点(实际环境部署时,一台服务器可以是一个网络节点,同一台服务器也可以设置多个网络节点),每个处理节点都能独立提供分布式仲裁的负载均衡功能,需要说明的是,各处理节点对应各自处理事件的权限与均衡负载的功能可以均不相同,也即可以在不同的处理节点上部署不同的网络服务,各网络服务承载于相应网络节点所包含的容器中,其中,异构处理节点的差异只是其事件的处理速率不同。

当客户端向负载均衡系统(也即一种分布式处理集群)实时发送海量数据处理请求时,通常负载均衡系统的某个处理节点完成请求处理后,例如向客户端反馈所请求的网络服务,将产生的中间结果可以封装为事件,具体如下:

一方面在当前的网络节点成功响应所述请求(如针对某一网络服务的服务请求),并在网络节点的容器中成功响应所述网络服务的情况下(可以理解为请求事件成功响应),该网络节点可以反馈最终的结果至客户端;

另一方面,在当前的网络节点未能成功响应所述请求,例如当前的网络节点负载较高无法在所包含的容器中成功响应所述请求,将请求对应的事件可以发往其它网络节点继续处理,直至多个网络节点完成对请求的处理,并反馈最终的结果至客户端或由该网络节点指示客户端直接获取目标网络节点上的最终的结果,其中目标网络节点也即该事件成功响应的网络节点;

另一方面,在当前的网络节点未能成功响应所述请求,例如当前的网络节点负载较高无法在所包含的容器中成功响应所述请求,当前的网络节点(也即上述实施例中的第一网络节点)可以通过执行本申请实施例的负载均衡方法,基于分布式网络上的至少一个其他网络节点,确定可成功响应的其他网络节点(也即上述实施例中的第二网络节点),并指示所述其他网络节点在容器中响应所述服务请求对应的目标网络服务。

而且,各网络节点在分发事件过程中,可以始终采用本申请实施例的负载均衡方法保证事件分发的负载均衡,直到产生最终结果并返还给客户端。

进一步的,分布式网络中的各网络节点都可以互联,也即两两网络节点之间点对点通信。

其中,在一些实施例中的网络节点、第一网络节点以及第二网络节点可以是是单独的服务器设备,例如:机架式、刀片、塔式、或者机柜式的服务器设备,也可以采用工作站、大型计算机、等具备较强计算能力硬件设备,也可以采用多个服务器组成的服务器集群,所述服务集群中的各服务器可以是以对称方式组成的,其中每台服务器在业务链路中功能等价、地位等价,各服务器均可单独对外提供服务,所述单独提供服务可以理解为无需另外的服务器的辅助;也可以是部署在单一服务器上所有节点中的一个,也即服务器可以部署多个网络节点。

另外,上述实施例提供的负载均衡系统实施例与一些实施例中的所述负载均衡方法属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参见图8,其示出了本申请一个示例性实施例提供的负载均衡装置的结构示意图。该负载均衡装置可以通过软件、硬件或者两者的结合实现成为装置的全部或一部分。该装置1包括服务请求接收模块11、目标网络服务响应模块12和第二网络节点确定模块13。

服务请求接收模块11,用于接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器;

目标网络服务响应模块12,用于若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务;

第二网络节点确定模块13,用于若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

可选的,如图9所示,所述目标网络服务响应模块12,包括:

信息及类型获取单元121,用于获取所述第一网络节点的第一容器信息以及所述目标网络服务的服务类型;

容器状态确定单元122,用于在所述至少一个容器中确定所述服务类型对应的第一参考容器,基于所述第一容器信息确定所述参考容器的容器状态;

目标网络服务响应单元123,用于当所述容器状态为可用状态时,将所述第一参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

可选的,所述目标网络服务响应模块12,具体用于:

当所述容器状态为不可用状态时,获取所述第一网络节点的容器富余资源;

当所述容器富余资源满足容器新建条件时,新建所述目标服务类型对应的第二参考容器,并将所述第二参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

可选的,所述目标网络服务响应模块12,具体用于:

当所述容器富余资源不满足所述容器新建条件时,确定在所述至少一个容器中不存在所述第一容器,并在所述分布式网络中确定包含可用的第二容器的第二网络节点。

可选的,如图10所示,所述第二网络节点确定模块13,包括:

节点列表获取单元131,用于获取所述分布式网络对应的服务节点列表;

第二网络节点确定单元132,用于基于所述服务节点列表,确定包含可用的第二容器的第二网络节点。

可选的,所述第二网络节点确定单元132,具体用于:

所述服务节点列表包括至少一个服务类型以及各所述服务类型对应的网络节点信息;

获取所述目标服务类型对应的网络节点信息,从所述网络节点信息所包含的至少一个网络节点中,确定包含可用的第二容器的第二网络节点。

可选的,所述第二网络节点确定单元132,具体用于:

获取所述至少一个网络节点中各网络节点对应的负载;

基于各所述负载,在所述至少一个网络节点中确定最低负载指示的所述第二网络节点,并确定所述第二网络节点包含可用的第二容器。

可选的,如图10所示,所述第二网络节点确定模块13,包括:

列表更新维护单元133,用于对所述服务节点列表进行更新维护。

可选的,所述列表更新维护单元133,具体用于:

确定所述分布式网络上与所述第一网络节点相关联的第三网络节点,向所述第三网络节点请求第一节点信息,基于所述第一节点信息更新所述分布式网络对应的服务节点列表,所述第一节点信息为所述第三网络节点的节点信息;和/或,

接收所述分布式网络上至少一个第四网络节点反馈的第二节点信息,所述第四网络节点为所述第一网络节点的监听节点,基于所述第二节点信息更新所述分布式网络对应的服务节点列表,所述第二节点信息为所述第四网络节点的节点信息;和/或,

接收所述分布式网络上至少一个第五网络节点反馈的第三节点信息,所述第五网络节点为所述第四网络节点上相关联的节点,所述第四网络节点为所述第一网络节点的监听节点,基于所述第三节点信息更新所述分布式网络对应的服务节点列表,所述第三节点信息为所述第三网络节点的节点信息;和/或,

以信息广播的方式,向所述分布式网络上所包含的所有第六网络节点请求第四节点信息,基于所述第四节点信息更新所述分布式网络对应的服务节点列表,所述第四节点信息为所述第三网络节点的节点信息。

可选的,所述装置1,具体用于:

向所述客户端反馈针对所述第二网络节点的重定向消息,所述重定向消息用于指示所述客户端向所述第二网络节点重新发送所述服务请求,并指示所述客户端获取所述第二网络节点的第二容器中响应的所述目标网络服务。

可选的,所述装置1,具体用于:

向所述第二网络节点发送针对所述客户端的服务代理请求,所述服务代理请求用于指示所述第二网络节点在所述第二容器中响应所述目标网络服务;

接收所述第二网络节点针对所述服务代理请求反馈的请求确认信息,向所述客户端发送针对所述第二网络节点的服务代理消息,所述服务代理消息用于指示所述客户端向所述第二网络节点获取所述目标网络服务。

可选的,所述装置1,具体用于:

在所述分布式网络上,确定提供所述目标网络服务的第二网络节点,所述第二网络节点基于第二容器提供所述目标网络服务;

建立所述第一网络节点上第一容器与所述第二容器的关联连接,所述第一容器用于在所述第一网络节点上响应所述目标网络服务。

可选的,所述装置1,具体用于:

若在所述至少一个容器中不存在所述第一容器,获取所述第二网络节点上所述第二容器的负载;

当所述负载小于负载阈值时,确定所述第二容器为可用的容器,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

可选的,所述装置1,具体用于:

基于所述服务节点列表在所述分布式网络上其余网络节点中确定提供所述目标网络服务的至少一个目标网络节点;

在各所述目标网络节点对应的参考节点跳数中,确定最小跳数指示的包含可用的第二容器的第二网络节点。

需要说明的是,上述实施例提供的负载均衡装置在执行负载均衡方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的负载均衡装置与负载均衡方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。

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

在本申请实施例中,通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配;以及,在第一网络节点的已创建容器为不可用状态时,可以根据容器富余资源动态新建所需服务类型的容器,实现了动态新建不同类型的容器,应用更广泛,同时丰富了负载均衡的手段,实现了负载均衡过程中容器资源的动态分配;以及,可以通过维护更新的服务节点列表智能确定相关联的各网络节点中的第二网络节点,由第二网络节点上的可用的第二容器进行响应,提高了负载均衡的效果。

本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图7所示实施例的所述负载均衡方法,具体执行过程可以参见图1-图7所示实施例的具体说明,在此不进行赘述。

本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1-图7所示实施例的所述负载均衡方法,具体执行过程可以参见图1-图7所示实施例的具体说明,在此不进行赘述。

请参见图11,为本申请实施例提供了一种电子设备的结构示意图。如图11所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。

其中,通信总线1002用于实现这些组件之间的连接通信。

其中,用户接口1003可以包括显示屏(display)、摄像头(camera),可选用户接口1003还可以包括标准的有线接口、无线接口。

其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。

其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个服务器1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行服务器1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。

其中,存储器1005可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及负载均衡应用程序。

在图11所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的负载均衡应用程序,并具体执行以下操作:

接收客户端针对目标网络服务的服务请求,确定所述第一网络节点所包含的至少一个容器;

若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务;

若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

在一个实施例中,所述处理器110在执行所述若在所述至少一个容器中存在可用的第一容器,则在所述第一容器中响应所述目标网络服务时,还执行以下操作:

获取所述第一网络节点的第一容器信息以及所述目标网络服务的服务类型;

在所述至少一个容器中确定所述服务类型对应的第一参考容器,基于所述第一容器信息确定所述参考容器的容器状态;

当所述容器状态为可用状态时,将所述第一参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

在一个实施例中,所述处理器110在执行所述负载均衡方法时,具体执行以下步骤:

当所述容器状态为不可用状态时,获取所述第一网络节点的容器富余资源;

当所述容器富余资源满足容器新建条件时,新建所述目标服务类型对应的第二参考容器,并将所述第二参考容器确定为所述至少一个容器中可用的第一容器,在所述第一容器中响应所述目标网络服务。

在一个实施例中,所述处理器110在执行所述若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点时,具体执行以下步骤:

当所述容器富余资源不满足所述容器新建条件时,确定在所述至少一个容器中不存在所述第一容器,并在所述分布式网络中确定包含可用的第二容器的第二网络节点。

在一个实施例中,所述处理器110在执行所述分布式网络中确定包含可用的第二容器的第二网络节点时,具体执行以下步骤:

获取所述分布式网络对应的服务节点列表;

基于所述服务节点列表,确定包含可用的第二容器的第二网络节点。

在一个实施例中,所述处理器110在执行所述基于所述服务节点列表,确定包含可用的第二容器的第二网络节点时,具体执行以下步骤:

所述服务节点列表包括至少一个服务类型以及各所述服务类型对应的网络节点信息;

获取所述目标服务类型对应的网络节点信息,从所述网络节点信息所包含的至少一个网络节点中,确定包含可用的第二容器的第二网络节点。

在一个实施例中,所述处理器110在执行所述从所述网络节点信息所包含的至少一个网络节点中,确定包含可用的第二容器的第二网络节点时,具体执行以下步骤:

获取所述至少一个网络节点中各网络节点对应的负载;

基于各所述负载,在所述至少一个网络节点中确定最低负载指示的所述第二网络节点,并确定所述第二网络节点包含可用的第二容器。

在一个实施例中,所述处理器110在执行所述负载均衡方法时,具体执行以下步骤:

对所述服务节点列表进行更新维护。

在一个实施例中,所述处理器110在执行所述对所述服务节点列表进行更新维护时,具体执行以下步骤:

确定所述分布式网络上与所述第一网络节点相关联的第三网络节点,向所述第三网络节点请求第一节点信息,基于所述第一节点信息更新所述分布式网络对应的服务节点列表,所述第一节点信息为所述第三网络节点的节点信息;和/或,

接收所述分布式网络上至少一个第四网络节点反馈的第二节点信息,所述第四网络节点为所述第一网络节点的监听节点,基于所述第二节点信息更新所述分布式网络对应的服务节点列表,所述第二节点信息为所述第四网络节点的节点信息;和/或,

接收所述分布式网络上至少一个第五网络节点反馈的第三节点信息,所述第五网络节点为所述第四网络节点上相关联的节点,所述第四网络节点为所述第一网络节点的监听节点,基于所述第三节点信息更新所述分布式网络对应的服务节点列表,所述第三节点信息为所述第三网络节点的节点信息;和/或,

以信息广播的方式,向所述分布式网络上所包含的所有第六网络节点请求第四节点信息,基于所述第四节点信息更新所述分布式网络对应的服务节点列表,所述第四节点信息为所述第三网络节点的节点信息。

在一个实施例中,所述处理器110在执行所述指示所述第二网络节点在所述第二容器中响应所述目标网络服务时,具体执行以下步骤:

向所述客户端反馈针对所述第二网络节点的重定向消息,所述重定向消息用于指示所述客户端向所述第二网络节点重新发送所述服务请求,并指示所述客户端获取所述第二网络节点的第二容器中响应的所述目标网络服务。

在一个实施例中,所述处理器110在执行所述指示所述第二网络节点在所述第二容器中响应所述目标网络服务时,具体执行以下步骤:

向所述第二网络节点发送针对所述客户端的服务代理请求,所述服务代理请求用于指示所述第二网络节点在所述第二容器中响应所述目标网络服务;

接收所述第二网络节点针对所述服务代理请求反馈的请求确认信息,向所述客户端发送针对所述第二网络节点的服务代理消息,所述服务代理消息用于指示所述客户端向所述第二网络节点获取所述目标网络服务。

在一个实施例中,所述处理器110在执行所述接收客户端针对目标网络服务的服务请求之前,还包括:

在所述分布式网络上,确定提供所述目标网络服务的第二网络节点,所述第二网络节点基于第二容器提供所述目标网络服务;

建立所述第一网络节点上第一容器与所述第二容器的关联连接,所述第一容器用于在所述第一网络节点上响应所述目标网络服务。

在一个实施例中,所述处理器110在执行所述若在所述至少一个容器中不存在所述第一容器,则在所述分布式网络中确定包含可用的第二容器的第二网络节点,指示所述第二网络节点在所述第二容器中响应所述目标网络服务时,具体执行以下步骤:

若在所述至少一个容器中不存在所述第一容器,获取所述第二网络节点上所述第二容器的负载;

当所述负载小于负载阈值时,确定所述第二容器为可用的容器,指示所述第二网络节点在所述第二容器中响应所述目标网络服务。

在一个实施例中,所述处理器110在执行所述分布式网络对应的服务节点列表之后,还执行以下步骤:

获取所述第一网络节点与所述分布式网络上其余网络节点之间的节点跳数;

所述基于所述服务节点列表,确定包含可用的第二容器的第二网络节点,包括:

基于所述服务节点列表以及各所述节点跳数,在所述其余网络节点中确定包含可用的第二容器的第二网络节点。

在一个实施例中,所述处理器110在执行所述基于所述服务节点列表以及各所述节点跳数,在所述其余网络节点中确定包含可用的第二容器的第二网络节点,具体执行以下步骤:

基于所述服务节点列表在所述分布式网络上其余网络节点中确定提供所述目标网络服务的至少一个目标网络节点;

在各所述目标网络节点对应的参考节点跳数中,确定最小跳数指示的包含可用的第二容器的第二网络节点。

在本申请实施例中,通过采用分布式技术搭建分布式网络,分布式网络上的各网络节点(如第一网络节点、第二网络节点)采用容器化技术可以在网络节点上部署多个容器以支持不同服务类型,网络节点的节点粒度大幅降低,可通过容器在网络节点上定制支持不同类型的服务;当分布式网络上的第一网络节点对客户端的服务请求进行处理时,只需在第一网络节点上确定可用的第一容器即可对客户端的请求的目标网络服务在第一容器中进行响应,以及,在第一网络节点的负载较高不存在可用的第一容器的情况下,可在第二网络节点上确定可用的第二容器来响应目标网络服务。实现了动态负载均衡,提高了负载均衡的效果。以及,分布式网络上的任一网络节点在本节点的负载较高时,可根据相关联的其他网络节点的容器资源实现资源的合理分配;以及,在第一网络节点的已创建容器为不可用状态时,可以根据容器富余资源动态新建所需服务类型的容器,实现了动态新建不同类型的容器,应用更广泛,同时丰富了负载均衡的手段,实现了负载均衡过程中容器资源的动态分配;以及,可以通过维护更新的服务节点列表智能确定相关联的各网络节点中的第二网络节点,由第二网络节点上的可用的第二容器进行响应,提高了负载均衡的效果。

本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(field-programmablegatearray,fpga)、集成电路(integratedcircuit,ic)等。

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

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

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

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

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

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

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

以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

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