分布式应用的配置方法、装置以及分布式系统与流程

文档序号:18100311发布日期:2019-07-06 11:18阅读:236来源:国知局
分布式应用的配置方法、装置以及分布式系统与流程

本发明涉及分布式系统技术领域,尤其涉及一种分布式应用的配置方法、装置以及分布式系统。



背景技术:

分布式系统(distributedsystem)是建立在网络之上的软件系统。分布式系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。在一个分布式环境中,同类型的服务往往会部署很多实例,这些实例使用了一些配置,为了更好地维护这些配置需要一个专门的配置管理平台即配置中心,通过配置中心可以轻松地管理成千上百个服务实例的配置。配置中心分为配置中心服务端和配置中心客户端两大模块。

目前,常用的配置中心客户端实现方式,是将配置中心客户端组件嵌入到应用中,在应用启动时自动从配置中心下载配置,从而实现配置与应用的解耦合。现有的配置方案存在以下问题:第一、具有较强的侵入性,应用若需要将配置文件托管给配置中心,则必须依赖配置中心的客户端组件。对于历史遗留系统,需要大量的修改代码,增加了维护成本,降低了系统的稳定性;第二、对于主从结构的异构系统,现有侵入式配置管理方案无法提供支持。



技术实现要素:

本发明的一个或多个实施例提供一种分布式应用的配置方法、装置以及分布式系统。

根据本公开的一个方面,提供一种分布式应用的配置方法,包括:启动与应用实例相对应的配置agent;所述配置agent与配置中心建立连接,从所述配置中心下载与所述应用实例相对应的配置文件并存储;如果所述配置agent确定保存在所述配置中心的所述配置文件发生变更,则所述配置agent与所述配置中心建立连接并下载更新后的所述配置文件;所述配置agent基于预设的应用实例重启策略,执行对于所述应用实例的重启操作。

可选地,所述配置agent获取所述应用实例的标识信息;所述配置agent根据所述标识信息从所述配置中心下载与所述应用实例相对应的配置文件。

可选地,所述配置agent获取预设的配置相关信息,其中,所述配置相关信息包括:配置中心信息、所述应用实例启动策略、所述标识信息;所述配置agent检验所述配置相关信息的合法性,如果检验失败,则所述配置agent结束运行,如果检验成功,则所述配置agent获取对于所述应用实例的命令参数,所述命令参数包括:日志文件存储路径;所述配置agent对所述命令参数的合法性进行检验,如果检验成功,则开启日志刷新线程,用于将日志写入所述日志文件存储路径所指示的日志文件中。

可选地,所述从所述配置中心下载与所述应用实例相对应的配置文件包括:所述配置agent获取本机信息,其中,所述本机信息包括:本机的ip地址、主机名;所述配置agent基于所述配置中心信息以及所述本机信息建立与所述配置中心的连接;所述配置agent判断所述连接建立成功,如果是,则下载最新的所述配置文件;所述配置agent在zookeeper上创建第一znode,用于标识所述应用实例正在使用所述配置文件。

可选地,如果所述配置agent判断所述连接建立失败,则重新建立与所述配置中心的连接;当确定连接建立失败的次数达到预设的次数阈值,则所述配置agent结束运行。

可选地,所述配置agent与所述配置中心建立连接并下载更新后的所述配置文件包括:所述配置agent监听zookeeper上与所述配置文件对应的第二znode;如果基于所述第二znode确定所述配置文件发生变更并发布成功,自动从所述配置中心下载更新后的所述配置文件,用以替换原有的所述配置文件。

可选地,所述配置agent基于预设的应用实例重启策略、执行对于所述应用实例的重启操作包括:所述配置agent确定所述配置文件中被修改的参数,基于所述应用实例重启策略以及所述被修改的参数判断是否需要重启所述应用实例,如果是,则所述配置agent重启所述应用实例。

可选地,所述配置agent与所述应用实例为一一对应设置,其中,所述配置agent与其对应的所述应用实例部署在同一服务器或者容器中。

可选地,所述配置agent作为独立的进程运行;在所述配置agent启动并从所述配置中心下载所述配置文件并存储后,所述配置agent启动与其对应的所述应用实例。

可选地,所述配置agent获取所述配置文件的本地指定目录,将所述配置文件存储在所述本地指定目录下。

根据本公开的另一方面,提供一种分布式应用的配置装置,包括:代理启动模块,用于启动与应用实例相对应的配置agent;所述配置agent,包括:配置下载模块,用于与配置中心建立连接,从所述配置中心下载与所述应用实例相对应的配置文件并存储;配置更新模块,用于如果确定保存在所述配置中心的所述配置文件发生变更,则与所述配置中心建立连接并下载更新后的所述配置文件;实例处理模块,用于基于预设的应用实例重启策略,执行对于所述应用实例的重启操作。

可选地,所述配置下载模块,用于获取所述应用实例的标识信息,根据所述标识信息从所述配置中心下载与所述应用实例相对应的配置文件。

可选地,所述配置agent,包括:信息获取模块,用于获取预设的配置相关信息,其中,所述配置相关信息包括:配置中心信息、所述应用实例启动策略、所述标识信息;检验所述配置相关信息的合法性,如果检验失败,则所述配置agent结束运行,如果检验成功,则获取对于所述应用实例的命令参数,所述命令参数包括:日志文件存储路径;日志刷新模块,用于对所述命令参数的合法性进行检验,如果检验成功,则开启日志刷新线程,用于将日志写入所述日志文件存储路径所指示的日志文件中。

可选地,所述配置下载模块,用于获取本机信息,其中,所述本机信息包括:本机的ip地址、主机名;基于所述配置中心信息以及所述本机信息建立与所述配置中心的连接;判断所述连接建立成功,如果是,则下载最新的所述配置文件;在zookeeper上创建第一znode,用于标识所述应用实例正在使用所述配置文件。

可选地,所述配置下载模块,用于如果判断所述连接建立失败,则重新建立与所述配置中心的连接;其中,当确定连接建立失败的次数达到预设的次数阈值,则所述配置agent结束运行。

可选地,所述配置更新模块,用于监听zookeeper上与所述配置文件对应的第二znode;如果基于所述第二znode确定所述配置文件发生变更并发布成功,自动从所述配置中心下载更新后的所述配置文件,用以替换原有的所述配置文件。

可选地,所述实例处理模块,用于确定所述配置文件中被修改的参数,基于所述应用实例重启策略以及所述被修改的参数判断是否需要重启所述应用实例,如果是,则所述配置agent重启所述应用实例。

可选地,所述配置agent与所述应用实例为一一对应设置,其中,所述配置agent与其对应的所述应用实例部署在同一服务器或者容器中。

可选地,所述配置agent作为独立的进程运行;在所述配置agent启动并从所述配置中心下载所述配置文件并存储后,所述配置agent启动与其对应的所述应用实例。

可选地,所述配置下载模块获取所述配置文件的本地指定目录,将所述配置文件存储在所述本地指定目录下。

根据本公开的又一方面,提供一种分布式系统,包括:如上任一项所述的分布式应用的配置装置。

根据本公开的又一方面,提供一种分布式应用的配置装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上任一项所述的分布式应用的配置方法。

根据本公开的再一方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该指令被一个或多个处理器执行时实现如上任意一项所述的方法的步骤。

本公开的分布式应用的配置方法、装置以及分布式系统,配置agent从配置中心下载与应用实例相对应的配置文件并存储;如果确定保存在配置中心的配置文件发生变更,则配置代理agent下载更新后的配置文件,基于预设的应用实例重启策略,执行对于应用实例的重启操作;通过配置agent独立运行,从配置中心服务端下载配置文件,监听配置文件的更新、启动/停止应用实例等,降低了维护成本,提高了系统的稳定性;对于主从结构的异构系统,只需要少量修改配置agent的配置即可实现配置自动拉取。

附图说明

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

图1为根据本公开的分布式应用的配置方法的一个实施例的流程示意图;

图2为根据本公开的分布式应用的配置方法的另一个实施例的启动流程示意图;

图3为根据本公开的分布式应用的配置方法的另一个实施例的运行流程示意图;

图4为根据本公开的分布式应用的配置装置的一个实施例的模块示意图;

图5为根据本公开的分布式应用的配置装置的一个实施例的模块示意图。

具体实施方式

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

下文中的“第一”、“第二”等仅用于描述上相区别,并没有其它特殊的含义。

图1为根据本公开的分布式应用的配置方法的一个实施例的流程示意图,如图1所示:

步骤101,启动与应用实例相对应的配置agent。配置agent为配置代理,应用实例即为软件实例,应用实例可以为托管应用、计费应用、鉴权应用等,应用实例可以部署在服务器或容器中。

步骤102,配置agent与配置中心建立连接,从配置中心下载与应用实例相对应的配置文件并存储。

配置中心为分布式系统中存储并管理应用实例的配置文件的服务器或主机等。配置agent可以采用现有的多种方法与配置中心建立连接,用于进行数据传输。配置agent将配置文件保存到指定的目录中,通常在配置中心上传配置文件时,需要指定配置文件存储的目录,配置agent从配置中心下载配置文件。配置文件中有设置多个参数值,应用实例基于参数值运行。

步骤103,如果配置agent确定保存在配置中心的配置文件发生变更,则配置代理agent与配置中心建立连接并下载更新后的配置文件。

步骤104,配置agent基于预设的应用实例重启策略,执行对于应用实例的重启操作。

在一个实施例中,配置agent与应用实例为一一对应设置,配置agent与其对应的应用实例部署在同一服务器或者容器中,例如,配置agent与其对应的应用实例部署在同一个docker或lxc中。配置agent作为独立的进程运行,应用实例也作为独立的进程运行,在配置agent启动并从配置中心下载配置文件并存储后,配置agent启动与其对应的应用实例。

配置agent获取配置文件的本地指定目录,将配置文件存储在本地指定目录下。应用实例可以从此本地指定目录获取配置agent下载或更新的配置文件,基于配置文件进行运行。配置agent基于预设的应用实例重启策略、执行对于应用实例的重启操作可以有多种方式。配置agent确定配置文件中被修改的参数,基于应用实例重启策略以及被修改的参数判断是否需要重启应用实例,如果是,则配置agent重启应用实例。

例如,在配置agent启动并从配置中心下载配置文件并存储后,配置agent启动与其对应的应用实例。应用实例在启动时可以从此本地指定目录获取配置文件,基于配置文件进行运行。

如果配置agent确定保存在配置中心的配置文件发生变更,下载更新后的配置文件。配置agent将原有的配置文件与更新后的配置文件进行比对,如果确定配置文件中被修改的参数为可用内存参数,基于应用实例重启策略以及可用内存参数确定不需要重启应用实例。应用实例在运行中可以从此本地指定目录获取更新的配置文件,基于新的可用内存参数的值继续运行。

如果配置agent将原有的配置文件与更新后的配置文件进行比对,确定配置文件中被修改的参数为数据库url参数、用户名和密码参数,基于应用实例重启策略以及数据库url参数、用户名和密码参数确定需要重启应用实例。应用实例在重新启动时可以从此本地指定目录获取更新的配置文件,基于更新的配置文件运行。

上述实施例的分布式应用的配置方法,通过采用在宿主机常驻守护进程(配置agent)的方式,下载最新配置文件、监听配置更新以及启停托管系统等,使得应用实例对统一配置中心的接入无感知,降低系统耦合度。

在一个实施例中,配置agent获取应用实例的标识信息。例如,配置agent启动时,从环境变量中读取应用实例的标识符,配置agent根据标识信息从配置中心下载与应用实例相对应的配置文件。例如,配置agent获取计费应用实例的标识符为a1,配置agent从配置中心下载与a1相对应的配置文件。

配置agent获取预设的配置相关信息,配置相关信息可以保存在文件中,配置相关信息包括:配置中心信息、应用实例启动策略、标识信息等;配置中心信息包括配置中心的url、用户名、密码等。配置agent检验配置相关信息的合法性,如果检验失败,则配置agent结束运行,如果检验成功,则配置agent获取对于应用实例的命令参数,命令参数可以为获取用户通过命令行输入的参数,命令参数包括:日志文件存储路径等。配置agent对命令参数的合法性进行检验,如果检验成功,则开启日志刷新线程,用于将日志写入日志文件存储路径所指示的日志文件中。

在一个实施例中,配置agent获取本机信息,本机信息包括:本机的ip地址、主机名。配置agent基于配置中心信息以及本机信息建立与配置中心的连接。配置agent判断连接建立成功,如果是,则下载最新的配置文件。配置agent在zookeeper上创建第一znode,用于标识应用实例正在使用配置文件。如果配置agent判断连接建立失败,则重新建立与配置中心的连接,当确定连接建立失败的次数达到预设的次数阈值,则配置agent结束运行。

配置agent监听zookeeper上与配置文件对应的第二znode。如果基于第二znode确定配置文件发生变更并发布成功,自动从配置中心下载更新后的配置文件,用以替换原有的配置文件。

zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,是hadoop和hbase的重要组件,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。在zookeeper中,节点也称为znode。使用zookeeper可以大大简化分布式协调服务的实现,为开发在zookeeper中每个命名空间(namespace)被称为znode。每个节点(znode)中存储的是同步相关的数据,一个znode维护了一个状态结构,该结构包括:版本号、acl变更、时间戳。每次znode数据发生变化,版本号都会递增,这样客户端的读请求可以基于版本号来检索状态相关数据。配置agent可以在与配置文件对应的一个znode上设置监视器,如果该znode数据发生变更,zookeeper会通知配置agent。配置agent可以采用现有的多种方法下载更新后的配置文件。

图2为根据本公开的分布式应用的配置方法的另一个实施例的启动流程示意图,如图2所示:

步骤201,配置agent解析预设的配置文件参数。

配置agent运行时依赖用户自定义的运行参数,通过解析预设的配置文件参数读取配置中心信息、重试策略、应用实例的标识符等。

步骤201,配置agent判断参数合法性,校验配置文件中的参数是否合法,如果不合法则直接结束运行,如果合法则进入步骤203。

步骤203,配置agent解析命令行参数。例如,用户可以通过命令行传入参数,参数为log文件存储路径等。

步骤204,判断命令行参数合法性,如果合法,则进入步骤205,如果命令行参数不合法则直接结束运行。

步骤205,配置agent开启异步日志刷新线程,单独开始一个线程(goroutine),用于将日志从缓冲区刷到日志文件中。

步骤206,初始化服务器的信息,根据步骤201中解析得到的预设信息中的配置中心(服务器)的信息,从配置中心(服务器)获取zk和应用实例信息。

步骤207,初始化重试器,对于zk连接或与服务器通信连接,当连接失败时都需要按照是步骤201中配置的重试策略进行重试。

步骤208,获取本机信息,获取本机的ip地址、主机名等。

步骤209,初始化配置agent的主线程上下文信息。

图3为根据本公开的分布式应用的配置方法的另一个实施例的运行流程示意图,如图3所示:

步骤301,配置agent启动连接器,开始建立与服务器(配置中心)进行通信的连接。

步骤302,判断建立连接是否成功,如果连接建立成功则进入步骤307,否则开始执行步骤303,启动重试机制。

步骤303,配置agent启动重试机制,重试机制在步骤201中进行配置,例如,重试机制被配置为每隔n秒重试一次,总共重试m次。

步骤304,配置agent判断是否重连,如果不需要重连则直接结束运行,如果需要重连,则进入步骤305。通常来说,不重连则意味着重试次数已达到预设的阈值,不再进行重试。

步骤305,配置agent开始进行与配置中心的重连,连接方式与步骤301中的连接所执行的逻辑相同。

步骤306,配置agent判断判断重试是否连接成功,如果连接成功则进入步骤307,否则进入步骤304,判断当前重试次数是否已经达到设置的阈值。

步骤307,配置agent开始从配置中心下载配置文件。当建立连接成功之后,配置agent需要根据应用实例的标识符从配置中心(服务器)下载最新的配置文件。

步骤308,配置agent创建znode,一个znode表示一个正在使用当前配置文件的应用实例信息。通过znode可以在运维窗口查看有多个应用实例使用了当前配置文件。

步骤309,配置agent监听zk变化,监听配置文件对应的znode节点,实时发现配置文件的变更情况。

步骤310,配置agent确定配置发生变化,如果配置文件被修改,则配置agent开始重新下载配置。

在一个实施例中,如图4所示,本公开提供一种分布式应用的配置装置,包括代理启动模块41和配置agent42。配置agent包括:配置下载模块421、配置更新模块422、实例处理模块423、信息获取模块424和日志刷新模块425。

代理启动模块41启动与应用实例相对应的配置代理agent。配置下载模块421与配置中心建立连接,从配置中心下载与应用实例相对应的配置文件并存储。配置更新模块422如果确定保存在配置中心的配置文件发生变更,则与配置中心建立连接并下载更新后的配置文件。实例处理模块423基于预设的应用实例重启策略,执行对于应用实例的重启操作。

配置agent与应用实例为一一对应设置,配置agent与其对应的应用实例部署在同一服务器或者容器中。配置agent作为独立的进程运行,在配置agent启动并从配置中心下载配置文件并存储后,配置agent启动与其对应的应用实例。配置下载模块421获取配置文件的本地指定目录,将配置文件存储在本地指定目录下。

在一个实施例中,配置下载模块421获取应用实例的标识信息,根据标识信息从配置中心下载与应用实例相对应的配置文件。信息获取模块424获取预设的配置相关信息,其中,配置相关信息包括:配置中心信息、应用实例启动策略、标识信息等。

信息获取模块424检验配置相关信息的合法性,如果检验失败,则配置agent结束运行,如果检验成功,则获取对于应用实例的命令参数,命令参数包括:日志文件存储路径等。日志刷新模块425对命令参数的合法性进行检验,如果检验成功,则开启日志刷新线程,用于将日志写入日志文件存储路径所指示的日志文件中。

配置下载模块421获取本机信息,本机信息包括:本机的ip地址、主机名等。配置下载模块421基于配置中心信息以及本机信息建立与配置中心的连接,判断连接建立成功,如果是,则下载最新的配置文件。配置下载模块421在zookeeper上创建第一znode,用于标识应用实例正在使用配置文件。

配置下载模块421如果判断连接建立失败,则重新建立与配置中心的连接,当确定连接建立失败的次数达到预设的次数阈值,则配置agent结束运行。配置更新模块422监听zookeeper上与配置文件对应的第二znode。如果基于第二znode确定配置文件发生变更并发布成功,配置更新模块422自动从配置中心下载更新后的配置文件,用以替换原有的配置文件。

实例处理模块423确定配置文件中被修改的参数,基于应用实例重启策略以及被修改的参数判断是否需要重启应用实例,如果是,则配置agent重启应用实例。

在一个实施例中,本公开提供一种分布式系统,包括如上任一实施例中的分布式应用的配置装置。

图5为根据本发明公开的分布式应用的配置装置的另一个实施例的模块示意图。如图5所示,该装置可包括存储器51、处理器52、通信接口53以及总线54。存储器51用于存储指令,处理器52耦合到存储器51,处理器52被配置为基于存储器51存储的指令执行实现上述的分布式应用的配置方法。

存储器51可以为高速ram存储器、非易失性存储器(non-volatilememory)等,存储器51也可以是存储器阵列。存储器51还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器52可以为中央处理器cpu,或专用集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明公开的分布式应用的配置方法的一个或多个集成电路。

在一个实施例中,本公开还提供一种计算机可读存储介质,其中计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上任一实施例涉及的分布式应用的配置方法。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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

至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。

上述实施例提供的分布式应用的配置方法、装置以及分布式系统,配置agent从配置中心下载与应用实例相对应的配置文件并存储;如果确定保存在配置中心的配置文件发生变更,则配置代理agent下载更新后的配置文件,基于预设的应用实例重启策略,执行对于应用实例的重启操作;通过配置agent独立运行,从配置中心服务端下载配置文件,监听配置文件的更新、启动/停止应用实例等,降低了维护成本,提高了系统的稳定性;对于主从结构的异构系统,只需要少量修改配置agent的配置即可实现配置自动拉取;不仅局限于同构的集群系统,可广泛应用于大型分布式系统,对遗留系统、异构系统实现无侵入化接入配置。

可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。

本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

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