配置管理系统及配置管理方法与流程

文档序号:11236743阅读:2059来源:国知局
配置管理系统及配置管理方法与流程

本发明涉及计算机网络及计算机软件技术领域,特别地涉及一种配置管理系统及配置管理方法。



背景技术:

在集中大规模部署的互联网应用系统环境中,在业务进行生产的过程中,遇到因业务需求变更而需要修改业务配置信息;或者因为用户访问骤然增加,以及其它运行环境的变化而需要立即修改应用系统的技术参数等,这些情况往往对时效性要求非常高,往往要求可以实时修改配置值并且推送给集群部署的各个应用实例,以让配置信息的修改可以立即生效,以满足业务的正常运转或其它的服务降级以保障核心业务的正常运转。

为了解决自动部署和配置管理的问题,目前通常是采用如图1所示的统一自动化部署系统。该自动化部署系统是统一的应用系统部署平台,开发和运维人员通过该平台管理各环境的配置信息,该平台在管理配置信息的工作流程如下:首先开发运维人员访问自动化部署系统,在系统里维护好对应环境中配置文件的内容,这些配置文件的目录和文件名和应用程序中的结构一一对应。然后开发运维人员开始部署应用程序到对应的应用程序集群中,部署过程中的具体实现方式是将打好的应用程序包从仓库中下载下来,解压程序包,用上一步维护好的对应的配置文件内容替换原来的内容。第三步将替换后的文件压缩远程发送到各客户端实例服务器上。第四步启动服务器,执行服务器启动脚本启动应用服务器,整个部署过程结束。上述方案是在部署阶段同步配置信息,但是在运行阶段若对配置进行维护则无法同步到客户端实例中,这无法满足生产环境立即修改配置的需求,因此技术 人员研发了如图2所示的定时频繁拉取配置管理器技术来解决该问题。

定时频繁拉取配置管理器技术的实现流程如下:运维人员通过访问该配置管理器web应用对配置进行修改,配置修改完毕后会存储到数据库中,并且标记为已修改。在客户端应用程序中会部署定时频繁拉取配置管理器的客户端包,该客户端包会每隔一段时间(具体时间可以进行配置,根据具体的业务的时效性要求进行配置)会调用定时频繁拉取配置管理器的接口拉取配置的变化信息,若查询到变化则会将配置信息的变化同步到客户端应用实例中。

但是无论自动化部署系统还是定时频繁拉取配置管理器,都具有缺点。具体分析如下:

(1)自动部署系统在运行阶段无法更新配置。该方案同步配置信息是在应用程序的部署阶段进行的,在系统的运行阶段无法进行配置变更,因此配置信息变更之后,若要让变更生效,则需要重新发布应用程序到应用集群的各个实例中,这往往是一个比较耗时的过程,并且在生产环境中若重新发布应用程序会影响用户的使用,这对于大型互联网应用往往是不允许的,因此该技术方案的局限性给互联网应用的运维和生产带来了极大的不便。

(2)定时频繁拉取配置管理器产生了较大系统资源浪费。由于定时频繁拉取配置的技术方案需要频繁的定时的调用接口去拉取配置信息的变更,若频率太低则达不到应用系统配置变更实时性要求,因此往往频繁都会设置得比较高,比如每5秒钟一次。但是应用配置的变更操作频繁在生产环境往往是比较低的。这种频繁的调用接口产生了大量的内部网络io和服务器资源的浪费,如果应用集群规模非常大,则产生的资源浪费是比较巨大的。

(3)两种方案配置生效的时效性都较低。我们假设各方案针对的都是互联网大型应用程序,一个应用程序由1000个服务实例组成。由 于技术方案的局限性,两种技术方案的时效性都非常差,第一种方案需要重新发布应用程序,那么配置信息全部生效至少需要1个小时。第二种方案需要频繁拉取配置信息,若拉取的间隔是5秒钟,则单个实例的生效时间至少是5秒钟。



技术实现要素:

有鉴于此,本发明提供一种轻量级的、可实时推送的配置管理系统及配置管理方法,以解决现有技术中的问题。

本发明第一方面提出一种配置管理系统,包括:多个客户端、配置管理服务器、以及配置存储服务器,其中:所述多个客户端与所述配置管理服务器之间采用netty框架;所述配置管理服务器与所述多个客户端对应;所述配置管理服务器用于在接收到所述客户端发送的配置信息请求的情况下,查询目标配置信息并且将所述目标配置信息发送给所述客户端;以及用于在接收到外部操作输入的配置变更信息的情况下,将所述配置变更信息发送到所述配置存储服务器中并且将所述配置变更信息推送给所述客户端。

可选地,所述配置管理服务器包括:配置服务模块,用于启动以及初始化所述配置管理服务器;配置服务处理模块,用于接收所述客户端发送的所述配置信息请求,根据所述配置信息请求查询所述配置存储服务器,将查询结果反馈所述客户端;还用于接收外部操作输入的配置变更信息,将所述配置变更信息保存到所述配置存储服务器中并且将所述配置变更信息推送给所述客户端;客户端管理服务模块,用于保存所述客户端的注册信息。

可选地,所述客户端与所述配置管理服务器之间建立有tcp长连接并且采用重连机制。

可选地,所述客户端还用于加载来自客户端的配置信息、远程文 件临时配置信息、本地配置信息这三种配置信息之一,其中,所述加载来自客户端的配置信息的优先级高于加载所述远程文件临时配置信息,加载所述远程文件临时配置信息的优先级高于加载所述本地配置信息的优先级。

本发明第二方面提出一种配置管理方法,应用于本发明的配置管理系统,该配置管理方法包括:所述配置管理服务器在接收到所述客户端发送的配置信息请求的情况下,查询目标配置信息并且将所述目标配置信息发送给所述客户端;所述配置管理服务器在接收到外部操作输入的配置变更信息的情况下,将所述配置变更信息发送到所述配置存储服务器中并且将所述配置变更信息推送给所述客户端。

可选地,所述配置管理服务器在接收到所述客户端发送的配置信息请求的情况下,查询目标配置信息并且将所述目标配置信息发送给所述客户端的步骤包括:所述配置管理服务器中的配置服务模块启动以及初始化所述配置管理服务器;所述配置管理服务器中的客户端管理服务模块接收并保存所述客户端的注册信息;所述配置管理服务器中的配置服务处理模块在接收到所述客户端发送的所述配置信息请求的情况下,根据所述配置信息请求查询所述配置存储服务器,将查询结果反馈所述客户端。

可选地,所述客户端与所述配置管理服务器之间建立有tcp长连接并且采用重连机制。

可选地,还包括:所述客户端在接收到来自客户端的配置信息的情况下,加载所述来自客户端的配置信息;所述客户端在未接收到所述来自客户端的配置信息并且接收到远程文件临时配置信息的情况下,加载所述远程文件临时配置信息;所述客户端在未接收到所述来自客户端的配置信息并且未接收到远程文件临时配置信息的情况下,加载本地配置信息。

根据本发明的技术方案采用了netty技术实现客户端与服务端的长连接,由于netty是一个高性能的、异步事件驱动的非阻塞输入输出流框架,因此用户端可以方便地主动获取输入输出操作结果或者通过通知机制获取输入输出操作结果,从而实现了配置信息的实时推送同时节约了网络开销。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是现有技术的自动部署系统技术的示意图;

图2是现有技术的的定时频繁拉取配置管理技术的示意图;

图3是根据本发明实施方式的配置管理系统的主要模块的示意图;

图4是根据本发明实施方式的配置管理方法的主要步骤的示意图;

图5是根据本发明实施方式的配置管理系统和方法的原理示意图;

图6是根据本发明实施方式的关于配置管理服务器的时序图;

图7是根据本发明实施方式的关于客户端的时序图。

具体实施方式

以下结合附图对本发明的示范性实施方式做出说明,其中包括本发明实施方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施方式做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

从背景介绍中两种现有技术存在的问题来看,它们都是非实时的配置管理,配置生效都有时间延迟,这对于对实时性要求较高的电子商务及互联网行业来说存在局限性,给生产和业务带来了极大的不便,因此本发明的一个目标是实现实时配置管理,希望可以在配置信息发生变化的时候立即将变更推送给服务实例。

本发明的另一个目标是降低配置管理服务的开发和运营成本。从定时频繁拉取配置管理技术的介绍来看,该方案存在较大的网络资源浪费,因为频繁的拉取配置信息,则会导致服务器内网的网络资源产生浪费。因此本发明采用推送的解决方案,只在配置信息发生变化的时候才会推送配置变更信息,平时绝大多数时候只会有非常小的保持连接的ping包的发送,从而节省大量的网络资源。

图3是根据本发明实施方式的配置管理系统的主要模块的示意图。如图3所示,该实施方式的配置管理系统包括:多个客户端311、……31n、配置管理服务器32(可以简称服务器或者服务端)以及配置存储服务器33(可以简称存储服务器或者数据库)。多个客户端311、……30n与配置管理服务器32之间采用netty框架。配置管理服务器32与多个客户端311……31n对应。配置管理服务器32用于在接收到客户端发送的配置信息请求的情况下,查询目标配置信息并且将目标配置信息发送给客户端;以及用于在接收到外部操作输入的配置变更信息的情况下,将配置变更信息发送到配置存储服务器33中并且将配置变更信息推送给客户端。

需要解释的是,服务端与客户端通讯使用java最新开源的网络框架netty技术实现。netty是一个高性能、异步事件驱动的非阻塞输入输出流框架,它提供了对tcp、udp协议和文件传输的支持,作为一个异步非阻塞输入输出流框架框架,netty的所有io操作都是异步非阻塞的,通过消息监听机制,用户可以方便的主动获取或者通过通知机制获得io操作结果。

根据本发明实施方式的配置管理系统采用了netty技术实现客户端与服务端的长连接,由于netty是一个高性能的、异步事件驱动的非阻塞输入输出流框架,因此用户端可以方便地主动获取输入输出操作结果或者通过通知机制获取输入输出操作结果,从而实现了配置信息的实时推送同时节约了网络开销。

可选地,配置管理服务器32包括:配置服务模块、配置服务处理模块和客户端管理服务模块。其中:配置服务模块用于启动以及初始化配置管理服务器32。配置服务处理模块用于接收客户端311、……31n发送的配置信息请求,根据配置信息请求查询配置存储服务器33,将查询结果反馈客户端;还用于接收外部操作输入的配置变更信息,将配置变更信息发送到配置存储服务器33中并且将配置变更信息推送给客户端311、……31n。客户端管理服务模块,用于保存客户端311、……31n的注册信息。

可选地,客户端311、……31n与配置管理服务器32之间建立有tcp长连接并且采用重连机制。设置客户端重连机制是为了确保客户端与服务端之间保持持久的tcp连接,避免因为网络不稳定而让客户端与服务端之间失去连接。另外,为了防止在服务端故障的情况下,客户端频繁重连引起的内网网络风暴问题,可以设置客户端在重试3次仍未连接上则会暂时睡眠10分钟,以免过高的网络开销。

可选地,客户端311、……31n还用于加载来自客户端的配置信息、远程文件临时配置信息、本地配置信息这三种配置信息之一,其中,加载来自客户端的配置信息的优先级高于加载远程文件临时配置信息,加载远程文件临时配置信息的优先级高于加载本地配置信息的优先级。客户端配置的三级加载机制保障了客户端应用系统的高可用性。

图4是根据本发明实施方式的配置管理方法的主要步骤的示意图。如图4所示,该实施方式的配置管理方法,应用于上文的配置管理系统。该配置管理方法可以包括步骤a和步骤b。

步骤a:配置管理服务器在接收到客户端发送的配置信息请求的情况下,查询目标配置信息并且将目标配置信息发送给客户端。

步骤b:配置管理服务器在接收到外部操作输入的配置变更信息的情况下,将配置变更信息发送到配置存储服务器中并且将配置变更信 息推送给客户端。

根据本发明实施方式的配置管理方法采用了netty技术实现客户端与服务端的长连接,由于netty是一个高性能的、异步事件驱动的非阻塞输入输出流框架,因此用户端可以方便地主动获取输入输出操作结果或者通过通知机制获取输入输出操作结果,从而实现了配置信息的实时推送同时节约了网络开销。

可选地,配置管理服务器在接收到客户端发送的配置信息请求的情况下,查询目标配置信息并且将目标配置信息发送给客户端的步骤包括:配置管理服务器中的配置服务模块启动以及初始化配置管理服务器;配置管理服务器中的客户端管理服务模块接收并保存客户端的注册信息;配置管理服务器中的配置服务处理模块在接收到客户端发送的配置信息请求的情况下,根据配置信息请求查询配置存储服务器,将查询结果反馈客户端。

可选地,客户端与配置管理服务器之间建立有tcp长连接并且采用重连机制。

可选地,本发明实施方式的配置管理方法还包括如下步骤:客户端在接收到来自客户端的配置信息的情况下,加载来自客户端的配置信息;客户端在未接收到来自客户端的配置信息并且接收到远程文件临时配置信息的情况下,加载远程文件临时配置信息;客户端在未接收到来自客户端的配置信息并且未接收到远程文件临时配置信息的情况下,加载本地配置信息。换言之,加载来自客户端的配置信息的优先级高于加载远程文件临时配置信息,加载远程文件临时配置信息的优先级高于加载本地配置信息的优先级。

为使本领域技术人员更好地理解本发明的技术方案,下面结合图5至图7作进一步介绍。

图5是根据本发明实施方式的配置管理系统和方法的原理示意图。如图5所示,实时可推送配置管理服务器在运维人员修改了配置信息之后,会保存到mysql数据库服务器中,运维人员可以手工选择配置变更推送的客户端实例,客户端实例与服务器之间建立的是tcp长连接,两者的连接会持续保持,若出现网络中断,则客户端会自动进行重连。该方案是非常轻量级的,实时可推送配置管理服务器只需要部署一个war包和一个mysql服务器即可,而客户端只需要引入一个jar包。由于对于客户端应用系统的影响非常小,仅做一个简单的配置即可,因此本发明的技术方案具有易于部署和维护的优点,并且易于客户端接入使用。

图6是根据本发明实施方式的关于配置管理服务器的时序图。如图6所示,实时可推送的配置服务端的相关时序设计,详细步骤如下。

a.初始化和启动服务端,监听端口,等待客户端连接。

b.客户端与服务端之间建立一个tcp长连接,初始化连接信息。

c.客户端发送信息包。信息报包括客户端信息和配置请求信息。其中:客户端信息包括客户端进程号、客户端ip和连接端口等信息。配置请求信息包括请求的项目编号、环境编号和配置模块等信息。

d.注册客户端。服务端将客户端信息存储下来以备后续查询。

e.服务端处理客户端请求,即根据配置请求信息并且查询请求参数对应的配置参数信息。

f.服务端将配置信息通过网络发回给客户端。

g.运维人员修改配置并推送。运维人员通过配置管理器更新配置信息的版本,并且通过网络发回给推送的客户端列表。

由上可知,通过netty技术实现客户端与服务端之间的双向通讯。当服务端有配置信息的变更时服务端可以主动推送给客户端。当客户端向服务端发出查询请求时服务端可以响应客户端。

图7是根据本发明实施方式的关于客户端的时序图。互联网应用对于服务的高可用有着极高的要求,因此客户端应该尽可能不依赖服务的可靠性,因此客户端的设计要点是降低对服务端的依赖。客户端应用在启动的时候加载配置信息,会实现三级加载,具体过程如下。

a.首先加载本地应用程序中的配置文件内容。

b.再次加载本地远程文件的临时文件。每次读取远程配置信息都会先保存在临时文件中。临时文件位于用户目录下,确保一定有权限可写。

c.最后加载远程读取过来的配置信息。

由上可知,客户端后面的加载都会覆盖前面加载的属性值,因此最后读取配置的优先级是远程配置高于本地远程配置临时文件,本地远程配置临时文件高于本地文件。所以该设计保障了在服务端不可用的情况下,依旧对于客户端应用无任何影响。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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