基于zookeeper的动态配置方法和装置与流程

文档序号:14060539阅读:206来源:国知局
基于zookeeper的动态配置方法和装置与流程

本公开涉及分布式服务器技术领域,尤其涉及一种基于zookeeper的动态配置方法和装置。



背景技术:

在分布式部署服务的时候,经常会有这样的需求,某几台机器上部署的某几个服务需要动态调整参数,如log输出,程序中涉及到的阈值等,现有的做法很多是会修改各个机器上程序对应的web容器开放的配置功能,如java的jmx(javamanagementextensions,java管理扩展),在jmx规范中,管理构件定义如下:它是一个能代表管理资源的java对象,遵从一定的设计模式,还需实现该规范定义的特定的接口。该定义了保证了所有的管理构件以一种标准的方式来表示被管理资源。但如果有很多台机器,利用传统的改动方式改动起来就不太方便,且在涉及到各个机器配置不相同的情况下,出错的可能性较高。



技术实现要素:

为克服相关技术中存在的问题,本公开提供一种基于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的动态配置方法的流程图。

图6是根据一示例性实施例示出的一种基于zookeeper的动态配置装置的结构框图。

图7是根据一示例性实施例示出的一种基于zookeeper的动态配置装置的结构框图。

图8是根据一示例性实施例示出的一种基于zookeeper的动态配置装置的结构框图。

图9是根据一示例性实施例示出的服务接口与zookeeper节点的连接示意图。

图10是根据一示例性实施例示出的一种用于基于zookeeper的动态配置装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种基于zookeeper的动态配置方法的流程图。如图1所示,基于zookeeper的动态配置方法用于服务器中,包括以下步骤:

步骤s10,服务接口监听与自身相连的zookeeper上的节点,其中,每个服务接口连接至少一个节点。

举例来说,一个应用服务的数据和程序可以不在同一个服务器上,而是分散到多个分布式服务器。每个应用服务可以具有多个服务接口。如“手机淘宝”的应用服务,其服务接口包括“微淘”、“消息”、“购物车”和“我的淘宝”等。

启动一个zookeeper服务。根据服务器、应用服务和服务接口定义树形的zookeeper上的节点,并将各服务器、各应用服务以及各服务接口分别向zookeeper上的不同节点进行注册。为使每个应用服务能够区分其所在不同的服务器,在每个应用服务进行部署时,在其参数中指定被部署到的服务器。然后应用服务根据被指定的服务器节点去zookeeper上的节点进行注册。

可以理解的是,所述zookeeper服务通过软件程序的方式实现,可设置在独立的分布式服务器中,或设置在与应用服务相同的服务器中。

每个应用服务可以包括多个服务接口,每个服务接口至少连接一个节点,每个节点至少连接一个服务接口。服务接口通过建立长连接监听与其进行连接的zookeeper节点,根据实际的需求可设定监听的周期,如设定为8秒监听一次节点。如图9所示,应用服务_1包括服务接口a、b,应用服务_2包括服务接口c、d。zookeeper包括节点_1、节点_2、节点_3,服务接口a连接节点_1、节点_3。服务接口a可以监听节点_1、节点_3。

步骤s20,在监听到所述节点的内容发生变化的情况下,所述服务接口从所述节点获取变化后的内容,所述节点的内容包括服务接口的配置信息。

举例来说,所述的配置信息与应用服务所提供的服务无关,不会影响应用服务的实际使用。如手机淘宝的应用服务,其服务接口包括“微淘”、“消息”、“购物车”和“我的淘宝”。如需要修改服务接口“我的淘宝”的配置信息时,如修改“我的淘宝”的数据传输速率等,不会影响该服务接口自身提供的服务。当节点中的内容没有变化时,各应用服务进行各自默认的操作,不完全依赖于zookeeper。

在服务接口监听节点的过程中,服务接口记录节点中的内容,当服务接口监听到的节点中的内容与其记录的节点内容不同时,即判定为节点内容发生了变化,服务接口从节点获取变化后的内容。

步骤s30,所述服务接口将所述变化后的内容传送至对应的服务器,以使所述服务接口对应的服务器调整所述服务接口的配置信息。

举例来说,服务接口自身不能对配置信息进行调整,需要将获取到的节点的内容传送至服务器,由服务器在后台进行相应的调整。

在本实施例中,将服务接口与zookeeper上的节点的相连,且每个服务接口连接至少一个节点。通过服务接口监听zookeeper上的节点,获取变化后的节点内容,并根据变化后的节点内容对应的调整自身的配置信息。基于zookeeper的灵活性,可以灵活的配置归属于不同服务器的不同应用服务的服务接口。

图2是根据一示例性实施例示出的一种基于zookeeper的动态配置方法的流程图,如图2所示,基于zookeeper的动态配置方法用于服务器中,包括以下步骤:

步骤s10,服务接口监听与自身相连的zookeeper上的节点,其中,每个服务接口连接至少一个节点。

步骤s21,在监听到所述节点的内容发生变化的情况下,所述服务接口从所述节点获取变化后的内容,包括获取变化后的阈值调整指令,所述阈值调整指令包括待调整参数和调整后阈值。

举例来说,服务接口在节点中获取到的变化后的内容,包括调整指令,如阈值调整指令,调整接口连接速率、调整请求返回的最大数量等。

如果应用服务所在的系统出现各种问题,需要将服务接口的连接速率调低,则与服务接口连接的节点中的内容,会变化为接口连接速率调整指令,并给出调整后的速率。

节点中的内容,利用服务接口可以读取的各种计算机高级通用语言进行存储。

步骤s31,所述服务接口将所述阈值调整指令传送至对应的服务器,以使所述服务接口对应的服务器将所述服务接口的待调整参数的阈值调整为所述调整后阈值。

举例来说,将所述阈值调整指令传送给服务器后,由服务器在后台对服务器接口的配置信息进行修改即可。

在本实施例中,服务接口在节点中获取阈值调整指令后,传送至后台,由服务器在后台执行阈值调整指令,可对服务接口的配置信息进行修改。通过zookeeper上的节点的内容的修改,可以方便地调整不同应用服务的不同服务接口上的配置信息,并提高动态配置的成功率。

图3是根据一示例性实施例示出的一种基于zookeeper的动态配置方法的流程图,如图2所示,基于zookeeper的动态配置方法用于服务器中,包括以下步骤:

步骤s10,服务接口监听与自身相连的zookeeper上的节点,其中,每个服务接口连接至少一个节点。

步骤s22,在监听到所述节点的内容发生变化的情况下,所述服务接口从所述节点获取变化后的内容,包括:获取变化后的可执行代码。

举例来说,所述节点的内容,包括一段可执行代码,如需要在后台进行打点等,则节点中的内容可以包括一段可执行代码。

步骤s32,所述服务接口将所述可执行代码传送至对应的服务器,以使所述服务接口对应的服务器执行所述可执行代码。

举例来说,将所述可执行代码传送至服务器,由服务器在后台执行所述可执行代码,完成数据打点,修改服务接口的配置信息。

在本实施例中,服务接口在节点中获取可执行代码后,传送至后台,由服务器执行所述可执行代码,可对服务接口的配置信息进行修改。通过zookeeper上的节点的内容的修改,可以方便地调整不同应用服务的不同服务接口上的配置信息,并提高动态配置的成功率。

图4是根据一示例性实施例示出的一种基于zookeeper的动态配置方法的流程图,如图4所示,基于上述实施例,本方法还包括以下步骤:

步骤s40,所述服务接口获取待注册的配置信息。

举例来说,当应用服务自身进行了更新、升级后,应用服务的服务接口会有所变化。如应用服务有了新的服务接口,则新的服务接口上有新的配置信息,或应用服务的原有服务接口自身有了新的配置信息。需要将新的配置信息与节点建立连接,以使服务接口能够监控节点上的内容。所述新的配置信息即为待注册的配置信息。

步骤s50,根据所述待注册的配置信息和zookeeper上节点的内容,查找与所述待注册的配置信息匹配的节点。

举例来说,所述zookeeper上节点的内容为服务接口可以查询到的已知的信息,服务接口可以查询到zookeeper服务上的各节点的内容。

如果在zookeeper上节点的内容中已经存在所述待注册的配置信息,根据所述待注册的配置信息查找节点上的内容,确定与待注册的配置信息匹配的节点。

如果已有的zookeeper上节点的内容中不存在所述待注册的配置信息,可通过新建节点的方式,确定与所述待注册的配置信息匹配的节点。

步骤s60,所述服务接口在匹配出的节点上进行注册,并建立与所述匹配出的节点的连接。

举例来说,可以通过服务节点向节点发送注册请求消息,携带待注册的配置信息,及服务节点归属的应用服务的信息、归属的服务器的信息,由节点在节点内容中增加相应的内容完成注册,并建立所述服务接口和所述节点的连接。

在本实施例中,当服务接口有待注册的配置信息时,服务接口查询与所述待注册的配置信息匹配的节点,并在查询出的节点上进行注册,服务接口和节点之间建立监控连接,以使注册后的服务接口可以通过注册后的节点进行动态配置。

图5是根据一示例性实施例示出的一种基于zookeeper的动态配置方法的流程图,如图5所示,所述基于zookeeper的动态配置方法,包括以下步骤:

步骤40,获取动态配置指令,所述动态配置指令包括待配置的服务接口的标识和待配置信息。

举例来说,当需要利用zookeeper进行动态配置时,只需要知道需要配置的服务接口的标识和待配置的信息,而不需要去服务接口所在的服务器上进行配置。

为方便使用者输入动态配置信息,可以在zookeeper服务上设置动态配置的页面,提供不同的选项供使用者选择,获取动态配置的信息。

步骤50,根据节点与服务接口的对应关系,在zookeeper上查找与所述标识对应的节点,所述对应关系包括zookeeper上的节点和服务器上的服务接口之间的对应关系。

举例来说,根据获取到的动态配置信息,和已知的节点与服务接口的对应关系,可以查找到与服务接口对应的节点。所述节点与服务接口的对应关系,包括zookeeper数的节点之间的连接关系,及各节点上的内容。

步骤60,根据所述待配置信息修改查找到的节点的内容。

举例来说,直接根据待配置信息,修改查找到的相应的节点的内容,以使监控所述节点的服务接口能够获取到修改后的节点的内容,完成动态配置。

在本实施例中,当需要对服务接口进行动态配置时,通过服务接口的标识和待配置信息查找节点后,修改节点中的内容,监控所述节点的服务接口获取到修改后的内容,即可完成动态配置,可以方便、高效、准确地修改不同服务接口的配置信息,且所述服务接口可以归属于不同服务器的不同应用服务。

图6是根据一示例性实施例示出的一种基于zookeeper的动态配置装置的结构框图,如图6所示,该装置包括:

监听模块10,用于监听与自身相连的zookeeper上的节点,其中,每个服务接口连接至少一个节点;

第一获取模块20,用于在监听到所述节点的内容发生变化的情况下,从所述节点获取变化后的内容,所述节点的内容包括服务接口的配置信息;

第一传送模块30,用于将所述变化后的内容传送至对应的服务器,以使所述服务接口对应的服务器调整所述服务接口的配置信息。

在本实施例中,将服务接口与zookeeper上的节点的相连,且每个服务接口连接至少一个节点,通过服务接口监听zookeeper上的节点,获取变化后的节点内容,并根据变化后的节点内容对应的调整自身的配置信息,基于zookeeper的灵活性,可以灵活的配置归属于不同服务器的不同应用服务的服务接口。

图7是根据一示例性实施例示出的一种基于zookeeper的动态配置装置的结构框图,如图7所示,与上述实施例的不同之处在于:

所述第一获取模块20包括:第一获取子模块21,用于获取变化后的阈值调整指令,所述阈值调整指令包括待调整参数和调整后阈值;

所述第一传送模块30包括:第一传送子模块31,用于所述服务接口将所述阈值调整指令传送至对应的服务器,以使所述服务接口对应的服务器将所述服务接口的待调整参数的阈值调整为所述调整后阈值。

在一种可能的实现方式中,所述第一获取模块20还包括:第二获取子模块22,用于获取变化后的可执行代码;

所述第一传送模块30包括:第二传送子模块32,用于所述服务接口将所述可执行代码传送至对应的服务器,以使所述服务接口对应的服务器执行所述可执行代码。

在一种可能的实现方式中,还包括:

第二获取模块40,用于获取待注册的配置信息;

匹配模块50,用于根据所述待注册的配置信息和zookeeper上节点的内容,查找与所述待注册的配置信息匹配的节点;

注册模块60,用于在匹配出的节点上进行注册,并建立与所述匹配出的节点的连接。

图8是根据一示例性实施例示出的一种基于zookeeper的动态配置装置的结构框图。如图8所示的基于zookeeper的动态配置装置,包括:

第三获取模块1,用于获取动态配置指令,所述动态配置指令包括待配置的服务接口的标识和待配置信息;

查找模块2,用于根据节点与服务接口的对应关系,在zookeeper上查找与所述标识对应的节点,所述对应关系包括zookeeper上的节点和服务器上的服务接口之间的对应关系;

节点内容修改模块3,用于根据所述待配置信息修改查找到的节点的内容。

在本实施例中,当需要对服务接口进行动态配置时,通过服务接口的标识和待配置信息查找节点后,修改节点中的内容,监控所述节点的服务接口获取到修改后的内容,即可完成动态配置,可以方便、高效、准确地修改不同服务接口的配置信息,且所述服务接口可以归属于不同服务器的不同应用服务。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图10是根据一示例性实施例示出的一种用于基于zookeeper的动态配置装置1900的框图。例如,装置1900可以被提供为一服务器。参照图10,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。

装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(i/o)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1932,上述指令可由装置1900的处理组件1922执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

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