一种Zookeeper集群系统及其连接方法和装置与流程

文档序号:15221591发布日期:2018-08-21 17:32阅读:181来源:国知局

本发明涉及互联网技术领域,特别是涉及一种zookeeper集群系统及其连接方法和装置。



背景技术:

zookeeper集群是被很多互联网公司广泛使用的分布式协调系统,其作为分布式系统的重要基石,所提供的协调机制被很多重要的大型分布式系统底层所依赖,比如分布式计算系统hadoop,消息系统kafka等。zookeeper集群依赖zab协议为用户提供了一致性的保证,可提供选主、分布式锁等功能。由于zookeeper集群的底层依赖zab协议,所以客户端的写操作需要在大多数服务端上同时写成功才被认为写成功,这种机制导致部署的服务端数目越多则写操作耗时越长。因此为了保证一致性和写操作的性能。在部署时一般选择3台或5台机器来部署zookeeper集群。

zookeeper集群自身的限制使得需要zookeeper客户端维护zookeeper集群所有的服务端列表,并及时更新服务端列表。当大量客户端同时连接到zookeeper集群的服务端时,由于资源竞争问题而导致客户端无法及时更新服务端列表。



技术实现要素:

有鉴于此,本发明提供了一种zookeeper集群系统及其连接方法和装置,以解决当大量客户端zookeeper与服务端相连接时,因资源竞争而导致zookeeper客户端无法及时更新服务端列表的问题。

为了解决上述问题,本发明公开了一种zookeeper集群系统,包括代理装置,所述代理装置部署在zookeeper客户端所在的机器上,每个所述zookeeper客户端通过所述代理装置与服务端相连接,其中:

所述代理装置用于维护所述zookeeper集群系统的服务端列表,并根据所述zookeeper客户端的请求将所述zookeeper客户端连接到所述服务端的所述请求所指向的具体机器上,并向所述具体机器转发所述zookeeper客户端的请求。

可选的,所述代理装置还用于当接收到所述zookeeper客户端发送的列表更新指令时,将所维护的服务端类别返回给所述zookeeper客户端。

还公开了一种连接方法,应用于如上所述的zookeeper集群系统的代理装置,所述代理装置包括至少一个处理器,以及与所述处理器相连接的存储器,所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行如下操作步骤:

接收每个所述zookeeper集群系统的zookeeper客户端发送的请求指令;

为所述请求指令配置路径信息;

将配置有路径信息的请求指令发送到服务端;

接收服务端根据附带有路径信息的请求指令所返回的返回结果;

将返回结果去掉所述路径信息后发送到所述zookeeper客户端。

可选的,所述操作步骤还包括:

存储服务端返回的并去掉所述路径信息的所述返回结果;

当接收到zookeeper客户端发送的与所述返回结果相匹配的请求指令时,向所述zookeeper客户端返回所述返回结果。

另外,还提供了一种连接装置,应用于如上所述的zookeeper集群系统的代理装置,所述连接装置包括:

第一接收模块,用于接收每个所述zookeeper集群系统的zookeeper客户端发送的请求指令;

路径配置模块,用于为所述请求指令配置路径信息;

第一发送模块,用于将配置有路径信息的请求指令发送到服务端;

第二接收模块,用于接收服务端根据附带有路径信息的请求指令所返回的返回结果;

第二发送模块,用于将返回结果去掉所述路径信息后发送到所述zookeeper客户端。

可选的,还包括:

第三接收模块,用于存储所述服务端返回的并去掉所述路径信息的所述返回结果;

第三发送模块,用于当接收到所述zookeeper客户端发送的与所述返回结果相匹配的请求指令时,向所述zookeeper客户端返回所述返回结果。

从上述技术方案可以看出,本发明提供了一种zookeeper集群系统及其连接方法和装置,该zookeeper集群系统包括代理装置,该代理装置部署在zookeeper客户端所在的机器上,每个zookeeper客户端通过代理装置与服务端相连接、其中,代理装置用于维护zookeeper集群的服务端列表,并根据客户端的请求将zookeeper客户端连接到服务端的具体机器上,并向具体机器转发zookeeper客户端的请求。由于代理装置部署在zookeeper客户端所在的机器上,并维护有服务端列表,从而zookeeper客户端可以就近获取服务端列表以便对自身的服务端列表进行更新,由于不是从服务端获取服务端列表列表进行更新,也就避免了资源竞争的问题,从而能够避免因资源竞争而导致无法及时更新服务端列表的问题。

附图说明

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

图1为本发明实施例提供的一种zookeeper集群系统的结构示意图;

图2为本发明实施例提供的一种zookeeper集群系统的连接方法的步骤流程图;

图3为本发明实施例提供的另一种zookeeper集群系统的连接方法的步骤流程图;

图4为本发明实施例提供的一种zookeeper集群系统的连接装置的结构框图;

图5为本发明实施例提供的另一种zookeeper集群系统的连接装置的结构框图。

具体实施方式

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

实施例一

图1为本发明实施例提供的一种zookeeper集群系统的结构示意图;

参照图1所示,本实施例提供的zookeeper集群包括服务端100和代理装置300,服务端配置于集中或分散配置的多台服务器上,用于为zookeeper客户端提供集群服务;zookeeper客户端则直接为用户提供用于访问该服务端的接口系统。一般来说zookeeper客户端为多个,用于为多个用户提供服务。

代理装置部署于zookeeper客户端所在的机器上。这里的代理装置可以理解为具有数据处理的硬件电子设备,也可以理解为zookeeper客户端所在的机器通过运行相应的程序实现的功能模块。

代理装置用于维护zookeeper集群系统的服务端列表,该服务端列表中包含有以列表形式记录的该集群部署的多个服务器的信息;该代理装置还用于根据接收zookeeper客户端的请求,并根据接收到的请求将zookeeper客户端连接到该请求所指向的具体机器,该具体机器是指上述集群部署的多个机器中的一个,连接后将该请求发送到相应的具体机器。

另外,该代理装置还用于当接收到某个zookeeper客户端发送的列表更新请求时,并不是将该请求发送至服务端,而是将自身所维护的服务端列表返回给发送该请求的zookeeper客户端,

从上述技术方案可以看出,本实施例中提供了一种zookeeper集群系统,包括代理装置,部署在zookeeper客户端所在的机器上,每个zookeeper客户端通过代理装置与服务端相连接、其中,代理装置用于维护zookeeper集群系统的服务端列表,并根据zookeeper客户端的请求将zookeeper客户端连接到服务端的具体机器上,并向具体机器转发zookeeper客户端的请求。由于代理装置部署在zookeeper客户端所在的机器上,并维护有服务端列表,从而zookeeper客户端可以就近对服务端列表进行更新,由于不是从服务端对其列表进行更新,也就避免了资源竞争的问题,从而能够避免因资源竞争而导致无法及时更新服务端列表的问题。

实施例二

图2为本申请实施例提供的一种zookeeper集群系统的连接方法的步骤流程图。

参照图2所示,本实施例提供的连接方法应用于上一实施例中的zookeeper集群系统,具体来说应用于该集群系统的代理装置。该代理装置包括至少一个处理器,以及与该处理器相连接的存储器,存储器中有供该处理器执行的指令,该处理器执行该指令时可以实现上述连接方法,具体为:

s101:接收每个zookeeper客户端发送的请求指令。

当相应zookeeper客户端向服务端发送相应请求指令时,接收该请求指令。

s102:为请求指令配置路径信息。

当接收到相应的请求指令时,根据发送该指令的zookeeper客户端的地址或编号为该请求指令配置上路径信息。

s103:将请求指令发送到服务端。

在请求指令上配置好路径信息后,将配置有路径信息的请求指令发送到服务端,具体来说是根据该请求指令所要发送的具体目的地将该请求指令发送到服务端所配置的多个机器中的具体机器。相应具体机器在接收到该请求指令后根据该请求指令和路径信息向代理装置发送返回结果。

s104:接收服务端的返回结果。

当服务端的具体机器向客户端发送返回结果时,接收该返回结果,该返回结果中还包括有上述的路径信息。

s105:将返回结果发送zookeeper客户端。

在接收到包含路径信息的返回结果后,首先将该返回结果中的路径信息去除,然后将去除路径信息的返回结果发送到相应的zookeeper客户端。

通过上述处理,使得每个zookeeper客户端所处理的业务在逻辑上拥有完整的zookeeper路径,从而可以避免不同业务之间相互影响。

另外,本实施例中的连接方法还包括如下步骤,如图3所示:

s201:存储服务端返回的返回结果。

当某个客户端向服务端发送请求、服务端根据该请求返回相应的返回结果时,将该返回结果并不丢弃,而是将其去掉路径信息后予以暂存。

s202:向zookeeper客户端发送该返回结果。

当该zookeeper客户端或者其他zookeeper客户端再次发送相应的请求时,由于两者的返回结果相同,此时该请求将不再发送到服务端,而是根据该请求向相应zookeepe客户端直接返回与该请求所匹配的返回结果。

代理装置在暂存返回结果时还会存储于该返回结果对应的请求指令,这里所谓的匹配是指后续所发送的请求指令与暂存的请求指令相同,这时暂存的请求指令对应的返回结果即与后续所发的请求指令相匹配。

通过暂存相应的返回结果,并根据客户端请求发送相应返回结果的做法,可以在客户端频繁访问时避免给zookeeper集群的服务端带来压力,从而提高了整个集群稳定性。

实施例三

图4为本申请实施例提供的一种zookeeper集群系统的连接装置的结构框图。

参照图4所示,本实施例提供的连接装置应用于上一实施例中的zookeeper集群系统,具体来说应用于该集群系统的代理装置。该连接装置包括第一接收模块10、路径配置模块20、第一发送模块30、第二接收模块40和第二发送模块50。

第一接收模块用于接收每个zookeeper客户端发送的请求指令。

当相应zookeeper客户端向服务端发送相应请求指令时,接收该请求指令。

路径配置模块用于为请求指令配置路径信息。

当接收到相应的请求指令时,根据发送该指令的zookeeper客户端的地址或编号为该请求指令配置上路径信息。

第一发送模块用于将请求指令发送到服务端。

在请求指令上配置好路径信息后,将配置有路径信息的请求指令发送到服务端,具体来说是根据该请求指令所要发送的具体目的地将该请求指令发送到服务端所配置的多个机器中的具体机器。相应具体机器在接收到该请求指令后根据该请求指令和路径信息向代理装置发送返回结果。

第二接收模块用于接收服务端的返回结果。

当服务端的具体机器向zookeeper客户端发送返回结果时,接收该返回结果,该返回结果中还包括有上述的路径信息。

第二发送模块用于将返回结果发送zookeeper客户端。

在接收到包含路径信息的返回结果后,首先将该返回结果中的路径信息去除,然后将去除路径信息的返回结果发送到相应的zookeeper客户端,即发送给上面的发送请求指令的zookeeper客户端。

通过上述处理,使得每个zookeeper客户端所处理的业务在逻辑上拥有完整的zookeeper路径,从而可以避免不同业务之间相互影响。

另外,本实施例中的连接装置还包括第三接收模块60和第三发送模块70,如图5所示:

第三接收模块用于存储服务端返回的返回结果。

当某个zookeeper客户端向服务端发送请求、服务端根据该请求返回相应的返回结果时,将该返回结果并不丢弃,而是将其去掉路径信息后予以暂存。

第三发送模块用于向zookeeper客户端发送该返回结果。

当该zookeeper客户端或者其他zookeeper客户端再次发送相应的请求时,由于两者的返回结果相同,此时该请求将不再发送到服务端,而是根据该请求向相应zookeeper客户端直接返回与该请求所匹配的返回结果。

代理装置在暂存返回结果时还会存储于该返回结果对应的请求指令,这里所谓的匹配是指后续所发送的请求指令与暂存的请求指令相同,这时暂存的请求指令对应的返回结果即与后续所发的请求指令相匹配

通过暂存相应的返回结果,并根据客户端请求发送相应返回结果的做法可以降低zookeeper集群的服务端的压力,从而提高了整个集群的稳定性。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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