一种配置管理方法与系统与流程

文档序号:12729929阅读:204来源:国知局
一种配置管理方法与系统与流程

本发明涉及广告系统中的配置管理,具体涉及一种分布式环境下的配置管理方法与系统。



背景技术:

在复杂WEB应用系统中通常由一系列配置参数来影响一个系统的各种行为,每个模块或者系统都需要编写一个或多个配置文件,配置文件随着项目部署文件部署在分布式环境(在分布式环境中,一个任务/服务分布在不同的机器来共同完成)中的各个计算节点中,如果要变更配置,则需要借助部署工具服务来重新上线重启服务才可完成配置变更,这样增加了修改配置的成本,失去了配置参数的作用。另一方面,对于WEB应用系统中大多服务都是短连接,即每处理一个事务请求都需要读取一次配置文件并且解析,在高性能的服务中势必会消耗一部分性能。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

现有技术通过读取部署节点的配置文件解析配置项来获取配置参数,一方面不利于维护更新,失去了配置的意义,增加在更新配置的时候引发的故障,另一方面对于WEB服务大部分情况下每处理一个请求事务就需要读取解析一次配置,这样严重影响处理性能。



技术实现要素:

本发明实施例提供一种配置管理方法与系统,以解决配置文件分散到各个计算节点维护成本高、易出故障、每个事务请求都需要读取解析配置文件的问题。

为达上述目的,一方面,本发明实施例提供了一种配置管理方法,其包括:

当配置数据发生变更时,配置管理模块通过消息队列模块通知配置代理模块执行配置数据更新,并且直接通知配置存储模块执行配置数据更新;

配置代理模块通过消息队列模块接收配置管理模块发送的更新后的配置数据,并将更新后的配置数据写入共享内存模块中;

配置存储模块存储配置管理模块发送的更新后的配置数据;

配置代理模块周期性地与配置存储模块进行数据同步,将配置存储模块中的配置数据同步到共享内存模块中。

为达上述目的,另一方面,本发明实施例提供了一种配置管理系统,其包括:配置管理模块、消息队列模块、配置存储模块、配置代理模块和共享内存模块;

所述配置管理模块,用于当配置数据发生变更时,通过所述消息队列模块通知所述配置代理模块执行配置数据更新,并且直接通知所述配置存储模块执行配置数据更新;

所述配置代理模块,用于通过所述消息队列模块接收所述配置管理模块发送的更新后的配置数据,并将更新后的配置数据写入所述共享内存模块中;

所述配置存储模块,用于存储所述配置管理模块发送的更新后的配置数据;

所述配置代理模块,还用于周期性地与所述配置存储模块进行数据同步,将所述配置存储模块中的配置数据同步到所述共享内存模块中。

上述技术方案具有如下有益效果:该配置管理系统可以动态添加修改配置,支持实时修改变更配置项,配置修改具有权限控制,有效保证一些关键配置项的安全。这种集中管理配置项易于维护,减少了由于修改配置项导致的故障。另外,本发明从共享内存读取配置数据,具体的读取方式有两种:直接从共享内存中读取、通过配置代理中的RPC服务代理从共享内存中读取。本发明中最终的配置数据会缓存到共享内存中可以支持多语言业通过RPC方式读取,相较于传统的读取配置文件的方式,有利于性能提升。

附图说明

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

图1是本发明的实施例的整个动态配置管理系统的逻辑功能框图;

图2是本发明的实施例的共享内存内部的结构示意图;

图3是本发明的实施例的一种配置管理方法的流程图。

具体实施方式

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

本发明的实施例将所有的配置项通过消息系统(消息系统是指提供消息队列服务的模块)下发到各个计算节点(计算节点是指运行配置代理的服务器)的配置代理模块中,具体的业务系统通过读取配置代理模块中的配置项即可,支持两种方式获取,一种是通过共享内存(指不同语言编写的多种业务可直接从共享内存中读取配置内容)、一种是通过通用RPC(Remote Procedure Call Protocol,远程过程调用协议)服务来读取配置项。通过上述方式可以解决配置文件分散到各个计算节点维护成本高、易出故障、每个事务请求都需要读取解析配置文件的问题。RPC服务是配置代理模块中的一个子模块,只是为了方便业务方使用,它的作用是业务方通过RPC方式调用,RPC服务从共享内存中获取配置项给业务方。

实施例1

图1是本发明的实施例的整个动态配置管理系统的逻辑功能框图。如图1所示,本发明的实施例的动态配置管理管理系统包括:配置管理模块、消息队列模块、配置存储模块、配置代理模块和共享内存模块;配置管理模块,用于当配置数据发生变更时,通过消息队列模块通知配置代理模块执行配置数据更新,并且直接通知配置存储模块执行配置数据更新;配置代理模块,用于通过消息队列模块接收配置管理模块发送的更新后的配置数据,并将更新后的配置数据写入共享内存模块中;配置存储模块,用于存储配置管理模块发送的更新后的配置数据;配置代理模块,还用于周期性地与配置存储模块进行数据同步,将配置存储模块中的配置数据同步到共享内存模块中。

配置管理模块是项目配置、权限管理、配置项管理/变更的主要入口,通过配置管理模块来远程控制操作配置项,其是配置项变更发起的主要模块,当配置项或项目发生变更时,配置管理模块会通过消息队列模块通知配置代理模块更新数据,并且直接通知配置存储模块更新数据。这里的通知是指:把变更配置项的域、配置项名称、配置项的值这些数据发送到配置代理模块中。配置代理模块和配置存储模块保持实时数据同步,配置存储模块起到数据持久化的作用。配置代理模块将同步到的更新数据写入到共享内存中供以各种语言编写的多种不同业务直接读取共享内存模块使用,由于配置读取量大于写,所有在共享内存模块结构构建中采用写全量更新,有利于读取时的性能提升,具体的后续将介绍。

配置可视化管理模块具体可包括:权限管理子模块、项目管理子模块、配置项管理子模块。权限管理子模块被配置为管理修改项目、配置项相关配置的权限。配置数据分为三级,第一级是项目级别,第二级是配置域(可以理解为针对某个实体的多个配置项),第三级是真正的配置项。提供三级的目的是为了提高检索的速度和解决配置名称重复的问题。配置项管理子模块支持实时修改变更配置项,通过设置权限管理子模块,配置修改具有权限控制,从而有效保证一些关键配置项的安全。配置域是配置项的分类,当配置项发生变更,消息中会有当前配置项的配置域、配置项名称、配置项的值。

配置代理模块是部署在每个计算节点上的,主要负责同步配置存储模块中的数据到共享内存模块中,并且将消息队列模块中的实时变更数据更新到共享内存模块中。该配置代理模块在启动的时候会首次从配置存储模块中同步全量数据(即所有的配置数据),后续当配置可视化管理模块有配置更新时将通过消息队列模块来完成更新,配置代理模块也会为了防止消息队列模块丢失数据而定期地和配置存储模块同步数据。其中配置存储持久化到Mysql数据库中,存储持久化是指:由于配置项在正常读取时从共享内存模块的内存索引中读取,可能会发生系统重启等问题,所以会将所有的配置项在Mysql这个数据库中存储一份。配置代理模块中还可进一步封装RPC Server,具体的业务系统可以通过调用RPC服务来读取配置数据。

由于配置代理模块是多个节点(配置代理模块是在业务的多台服务器上都会部署),配置存储模块是一个,当有项目或配置项发生变更后会有两个操作被触发,一个操作是写入变更的配置项到消息队列模块中用来通知配置代理模块,另一个操作是直接写入到配置存储模块中,配置代理模块订阅配置变更通知做相应的变更。

共享内存模块是用来缓存最终的配置项,采用共享内存的原因是在同机器节点(该机器节点是指部署配置代理的机器/服务器)中不同的进程可以通过共享内存通讯,灵活的应用共享内存解决了读取配置的性能问题。由于配置项读取大于写故采用写时全量更新内存索引(即将所有的配置项全量地更新到内存索引中),尽可能地提升读取的性能。

配置代理模块,还可用于响应于业务系统的配置读取指令,通过远程过程调用协议RPC服务从所述共享内存模块中读取配置数据给业务系统;或者,共享内存模块,还可用于响应于业务系统的配置读取指令,直接读取配置数据给业务系统。

根据本发明的示例性实施例,配置变更的处理流程包括如下步骤:在配置管理模块中变更配置,配置管理模块将变更的配置项同步到配置存储模块和消息队列模块中,配置代理模块接收到配置变更通知后将配置全量更新到共享内存中,这样就完成了配置的更新。

当配置代理模块或者机器重启时,配置代理模块或者机器从配置存储模块中同步全量的配置项,重建内存索引,以保证配置项数据的一致性。

图2是本发明的实施例的共享内存内部的结构示意图。如图2所示,自上而下共享内存中的数据结构分别为项目索引段、配置域索引段、配置项索引段、配置值索引段。项目索引段中记录每个项目与其多个配置域的地址偏移量(domain offset)之间的对应关系;配置域索引段中记录项目的每个配置域与其多个配置项的地址偏移量(config offset)之间的对应关系;配置项索引段中记录配置域的每个配置项与其多个配置值的地址偏移量(data offset)之间的对应关系;配置值索引段中记录每个配置值与其具体内容之间的对应关系。

当要读取一个配置项的值时大致读取共享内存的过程是:先遍历项目索引段找到项目中所有的配置域的内存偏移量,通过该内存偏移量遍历配置域索引段找到对应配置域下的所有配置项的偏移量,通过这个配置项偏移量查找配置项的数据存储的偏移量,根据配置项的值的长度读取该配置项的值。

以下举例说明:例如要读取项目foo下配置域bar的配置项test的值,首先遍历项目索引段找到foo项目的配置域偏移量,假如为1000,那么将指针指向首地址+1000的位置上遍历所有的配置域索引段,找到bar配置域下的配置项偏移量,假如为4000,那么首地址+4000就是该bar配置域下所有配置项的首地址,通过遍历查找test找到存储该配置项数据的偏移量从而得出该配置项test的值。由于该内存索引是通过偏移量来建立的,所以只要更新了配置项的值就需要从新全量建立索引。但是通过这种组织内存空间的方式可以大幅提升读取配置项的性能,写操作毕竟不是很频繁。

本申请的上述技术方案具有如下有益技术效果:

该配置管理系统可以动态添加修改配置,支持实时修改变更配置项,配置修改具有权限控制,有效的保证一些关键配置项的安全。这种集中管理配置项易于维护,降低了由于修改配置项导致的故障。并且最终的数据会缓存到共享内存中可以支持多语言业通过IPC方式读取,相较于文件方式有利于性能提升。

实施例2

图3是本实施例提供的一种配置管理方法的流程图。该方法是图1所法系统的工作方法,如图3所示,该方法包括如下步骤:

步骤110:当配置数据发生变更时,配置管理模块通过消息队列模块通知配置代理模块执行配置数据更新,并且直接通知配置存储模块执行配置数据更新;

步骤120:配置代理模块通过消息队列模块接收配置管理模块发送的更新后的配置数据,并将更新后的配置数据写入共享内存模块中;

步骤130:配置存储模块存储配置管理模块发送的更新后的配置数据;

步骤140:配置代理模块周期性地与配置存储模块进行数据同步,将配置存储模块中的配置数据同步到共享内存模块中。配置代理模块与配置存储模块进行周期性数据同步可防止防止消息队列模块在传输过程中丢失数据。

以上步骤编号不构成对步骤执行顺序的限制,例如步骤120与步骤130可同时执行,步骤140也可在步骤110之前执行。

进一步地,为解决可能发生的系统重启而导致的配置数据读取/查询失败的问题,该方法还包括如下步骤:配置存储模块将自身存储的所有的配置数据在内置的备用数据库中建立备份。

以及,配置代理模块在首次启动时,从配置存储模块中同步所有的配置数据到共享内存模块中。本步骤保证了配置代理模块部署的这个服务器中的配置项和配置存储模块中的配置项的一致性。另外,共享内存在服务器重启后会被清空,所以在重启的时候需要从配置存储模块上重新拉取一次全量数据。

进一步地,配置管理模块还管理修改项目、配置项相关配置的权限;并且当项目或配置项发生变更时,通过消息队列模块通知配置代理模块更新数据,并且直接通知配置存储模块执于数据更新。

进一步地,图3所示方法还包括如下步骤:配置代理模块响应于业务系统的配置读取指令,通过远程过程调用协议RPC服务从共享内存模块中读取配置数据给业务系统;或者,共享内存模块响应于业务系统的配置读取指令,直接读取配置数据给业务系统。

根据本发明的示例性实施例,在步骤120中配置代理模块将更新后的配置数据写入共享内存模块中,具体包括:配置代理模块将更新后的配置数据全量地写入到共享内存模块的索引段中。共享内存模块是用来缓存最终的配置项,采用共享内存的原因是在同机器节点中不同的进程可以通过共享内存通讯,灵活的应用共享内存解决了读取配置的性能问题。由于配置项读取大于写故采用写时全量更新内存索引(即将所有的配置项全量地更新到内存索引中),能够尽可能地提升读取的性能。

根据本发明的示例性实施例,共享内存模块中建立项目索引段、配置域索引段、配置项索引段和配置值索引段;项目索引段中记录每个项目与其多个配置域的地址偏移量之间的对应关系;配置域索引段中记录项目的每个配置域与其多个配置项的地址偏移量之间的对应关系;配置项索引段中记录配置域的每个配置项与其多个配置值的地址偏移量之间的对应关系;配置值索引段中记录每个配置值与其具体内容之间的对应关系。

该配置管理方法可以动态添加修改配置,支持实时修改变更配置项,配置修改具有权限控制,有效的保证一些关键配置项的安全。这种集中管理配置项易于维护,降低了由于修改配置项导致的故障。并且最终的数据会缓存到共享内存中,从而可以支持多语言业通过IPC方式读取配置数据,提升了读取性能。本发明的实施例将所有配置项通过消息队列模块下发到各个计算节点的配置代理模块中,具体的业务系统通过读取配置代理模块中的配置项即可,支持两种方式获取,一种是通过共享内存、一种是通过通用RPC服务来读取配置项。通过上述方式可以解决配置文件分散到各个计算节点维护成本高、易出故障、每个事务请求都需要读取解析配置文件的问题。

本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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