CN112835591A - 一种支持跨语言跨平台的运维配置管理方法及系统 - Google Patents
一种支持跨语言跨平台的运维配置管理方法及系统 Download PDFInfo
- Publication number
- CN112835591A CN112835591A CN202110191425.5A CN202110191425A CN112835591A CN 112835591 A CN112835591 A CN 112835591A CN 202110191425 A CN202110191425 A CN 202110191425A CN 112835591 A CN112835591 A CN 112835591A
- Authority
- CN
- China
- Prior art keywords
- configuration
- configuration information
- value
- module
- software module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种支持跨语言跨平台的运维配置管理方法及系统,所述系统包括:配置存储模块:将配置信息存储在zookeeper中;配置管理模块:读取配置存储模块中的配置信息并进行修改,对修改后的配置保存,自动推送配置值的变更情况给配置监测模块;配置监测模块:接收kafka报文,进行解析,将变更后的配置信息存储在模块自身的内存中,以共享内存的方式对外提供。该系统通过结合zookeeper、kafka、分布式和共享内存等技术,实现了混合架构中多个软件模块的配置项信息的集中管理、批量修改、变更检测、自动更新、配置信息的本地文件持久化和动态重启加载,提升配置信息自动更新的时效性,提高自动化运维的水平。
Description
技术领域
本发明涉及一种支持跨语言跨平台的运维配置管理方法及系统。
背景技术
在C/S和B/S混合架构的软件系统中,系统由多个软件模块组成,各个软件模块混合部署在不同的操作系统平台中如windows、linux或unix等。同时,不同的软件模块由不同的程序语言实现,如java、C++、python或shell等。各个软件模块启动时需从软件模块自己的配置文件中加载配置项信息,不同软件模块的配置文件名称不同,文件格式也不同如*.properties文件、*.ini文件或*.conf文件等,存储在配置文件中的待加载配置信息也不尽相同,如软件模块A要加载mysql数据库地址、策略开关和消息通信方式等,软件模块B要加载mongo数据库地址、时间阈值参数和消息通信方式等,软件模块C要加载mysql数据库地址、mongo数据库地址、港区名称和消息通信方式等,不同的软件模块之间存在一些相同的配置如mysql数据库地址、mongo数据库地址、消息通信方式等,每个软件模块也有本模块独有的一些配置信息如策略开关、时间阈值参数等。换言之,系统的全部配置信息散落在不同的配置文件中,这些配置文件散落在不同平台的不同位置,且文件格式不尽相同,缺少对系统的配置信息的统一管理和支持分布式地动态更新机制,无法进行自动化运维,比如若mysql数据库的地址发生了变更,则运维人员需要去系统的各个服务器上检查一遍各个软件模块的配置文件,对包含有mysql数据库配置信息的配置文件进行逐个手动修改,修改为最新的mysql数据库地址并保存配置文件,然后重启该软件模块使得新配置值生效,这种手动修改的方式效率低下,并且容易遗漏,手动操作也容易带来各个软件模块配置加载不同步进而引发系统的功能问题。当前针对纯BS架构或者纯CS架构的软件系统有较好的运维配置管理方法,如sprin-cloud-config、disconf或qconf等,但是对于跨语言跨平台的BS和CS混合架构的软件系统,由于其涉及多个软件模块,软件模块由不同的编程语言实现,部署在不同的操作系统平台中,软件模块的配置文件名称不同,配置文件的格式也不尽相同等,即系统的全部配置信息散落在不同的配置文件中,这些配置文件散落在不同平台的不同位置,且文件格式不尽相同,目前缺少统一的运维配置管理技术,无法对混合架构软件系统中的各类配置信息进行统一修改、变更检测、自动更新、本地文件持久化和动态加载生效等。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种支持跨语言跨平台的运维配置管理方法及系统,所述方法包括:
步骤1,对C/S和B/S混合架构的软件系统中由不同程序语言编写并且部署在不同平台的各个软件模块的配置文件中的配置信息进行人工梳理汇总,抽取其配置信息的配置名称和配置值,将所有配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中;ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件;
步骤2,对存储在zookeeper上的配置信息进行统一展示和管理,按照运维需要对一个或多个配置信息的配置值进行修改;
步骤3,通过zkclient对步骤2中配置值发生变更的配置信息进行更新存储,将新的配置值存储到zookeeper中,并通过kafka报文的方式推送配置值的变更情况;kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写;ZkClient是由Datameer的工程师开发的开源客户端,对Zookeeper的原生API进行了包装,实现了超时重连、Watcher反复注册等功能;
步骤4,接收配置信息变更情况的kafka报文,对报文进行解析获取变更后的配置信息,并将变更后的配置信息存储在模块自身的内存中,并以共享内存的方式对外提供(共享内存是操作系统的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息),供该软件系统中的其他软件模块使用。同时,定时自动对系统各平台的各个软件模块的配置文件中的配置信息进行配置值的变更监测,监测是否有配置信息的配置值发生了变更,如果有配置信息的配置值发生了变更,则从共享内存中获取新的配置值,并通过awk将新的配置值自动更新到对应的配置文件中(awk是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一),实现新配置值的本地文件持久化,并控制软件模块进行动态加载或者重启,实现新配置值的即时生效和自动化运维。
步骤1包括:
步骤1-1,对系统中由不同程序语言编写并且部署在不同平台的各个软件模块的配置文件中的配置信息进行人工梳理汇总,抽取其所有配置信息的配置名称和配置值;
步骤1-2,将步骤1-1中抽取的所有配置信息进行梳理,将相同名称的配置信息提取为公共配置信息并根据配置名称进行去重,将各个软件模块独有的配置信息提取为对应的软件模块独有配置信息;
步骤1-3,将步骤1-2中的公共配置信息和各个模块的独有配置信息进行存储,将每个配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中。
步骤4包括:
步骤4-1,接收配置信息变更情况的kafka报文,对报文中的内容进行解析;
步骤4-2,从解析后的kafka报文中获取变更的配置信息,将变更后的配置信息存储在内存中,以共享内存的方式对外提供,供其他软件模块使用;
步骤4-3,自动获取部署在本机的所有软件模块列表,以及软件模块的数量Mnumber;
步骤4-4,选取第i个软件模块,对其配置文件进行配置监测,i取值为1~Mnumber;
步骤4-5,判断i是否大于Mnumber,如果否,则执行步骤4-6;如果是,则表示完成了本机的所有软件模块的一轮配置监测,直接执行步骤4-14结束监测过程;
步骤4-6,读取第i个软件模块的配置文件,从配置文件中获取配置信息列表,以及配置信息的数量Pnumber;
步骤4-7,选取第i个软件模块的第j个配置进行配置值的变更监测,j取值为1~Pnumber;
步骤4-8,判断j是否大于Pnumber,如果否,则执行步骤4-9;如果是,则表示已经完成了第i个软件模块的所有配置项值的对比分析,执行步骤4-11;
步骤4-9,获取第i个软件模块的配置文件中的第j个配置信息在配置文件中配置值Aij,再获取该配置信息在共享内存中的配置值A`ij,并对Aij和A`ij进行自动对比分析,如果Aij等于A`ij,表示所述配置信息在配置文件中的配置值与在配置存储模块中的配置值一致,未发生该配置信息的配置值的变更,则执行j=j+1,然后执行步骤4-7;如果Aij不等于A`ij,表示该配置信息在配置文件中的配置值与在配置存储模块中的配置值不一致,发生了配置值的变更,执行步骤4-10;
步骤4-10,通过awk将第i个软件模块的第j个配置信息在配置存储模块中的配置值A`ij替换第i个软件模块的配置文件中的配置值Aij,实现第i个软件模块的第j个配置值的自动更新和新配置值的本地文件持久化;同时,将第i个软件模块的动态重启标志Flagi设置为1;
步骤4-11,判断第i个软件模块的动态重启标志Flagi是否等于1,如果Flagi等于1,则表示该软件模块发生了配置值的变更,需要对该软件模块进行动态重启操作,执行步骤4-12;如果Flagi不等于1,则表示软件模块未发生任何配置值的变更,执行步骤4-13;
步骤4-12,自动调用第i个软件模块的动态重启命令restart.sh实现软件模块的自动重启,实现新配置值的自动加载生效;
步骤4-13,执行i=i+1,然后执行步骤4-5;
步骤4-14,结束监测过程。
本发明还提供了一种支持跨语言跨平台的运维配置管理系统,包括配置存储模块、配置管理模块和配置监测模块;
所述配置存储模块用于存储从各个配置文件中抽取出来的配置信息,将配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中;
所述配置管理模块读取配置存储模块中的配置信息,根据运维需求对一个或两个以上配置信息的配置值进行修改,通过zkclient将修改后的配置值被保存在配置存储模块中,并通过kafka报文自动将配置值发生变更的配置信息的配置名称和变更后的配置值推送给部署在不同平台的配置监测模块;
所述配置检测模块采用分布式部署,部署在不同的平台中。接收配置管理模块推送过来的配置信息变更情况kafka报文,并对报文进行解析,将变更后的配置信息存储在模块自身的内存中,并以共享内存的方式对外提供,供其他软件模块使用。同时,自动定时对本机的各个软件模块进行配置信息的配置值的变更监测,监测是否有配置值发生了变更,如果有配置值发生了变更,则从共享内存中读取最新的配置信息,通过awk将配置存储模块中新的配置值自动更新到对应的软件模块的配置文件中,实现新的配置值的本地文件持久化,并控制该软件模块进行动态重启,实现新配置值的即时生效,进而实现系统配置信息的自动化运维。
所述配置存储模块具体执行如下步骤:
存储从各个配置文件中抽取出来的配置信息,包括公共配置信息和各个模块的独有配置信息,将配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中,例如:公共配置mysql数据库地址的配置名称和配置值存储为global.jdbc.url=130.9.46.62:3306;公共配置mysql数据库用户名的配置名称和配置值存储为global.jdbc.userName=test;公共配置mysql数据库密码的配置名称和配置值存储为global.jdbc.passWord=vtms;公共配置mongo数据库用户名的配置名称和配置值存储为global.mongo.userName=mongoTest;公共配置mongo数据库密码的配置名称和配置值存储为global.mongo.passWord=cetc;模块A独有的阈值配置的配置名称和配置值存储为A.yuzhi=20;模块A独有的策略开关配置的配置名称和配置值存储为A.switchdown=1;模块B独有的时间参数配置的配置名称和配置值存储为B.delayTime=50;模块B独有的地址配置的配置名称和配置值存储为B.placeVersion=QHD等。
所述配置管理模块具体执行如下步骤:
步骤a1,配置管理模块读取配置存储模块中的配置信息,在配置管理模块的界面中以树形结构展示读取的配置信息,包括其配置名称和配置值;
步骤a2,在配置管理模块的界面中,根据运维需要对存储在配置存储模块中的配置信息的配置值进行按需修改,通过zkclient修改后的配置值被保存在配置存储模块中;
步骤a3,配置管理模块通过kafka自动将发生变更的配置信息的配置名称和变更后的配置值推送给分布式部署的配置监测模块。
所述配置监测模块具体执行如下步骤:
步骤b1,接收配置信息变更情况的kafka报文,对报文中的内容进行解析;
步骤b2,从解析后的kafka报文中获取变更的配置信息,将变更后的配置信息存储在配置监测模块自身的内存中,以共享内存的方式对外提供,供其他软件模块使用;
步骤b3,自动获取部署在本机的所有软件模块列表,以及软件模块的数量Mnumber;
步骤b4,选取第i个软件模块,对其配置文件进行配置监测,i取值为1~Mnumber;
步骤b5,判断i是否大于Mnumber,如果否,则执行步骤b6;如果是,则表示完成了本机的所有软件模块的一轮配置监测,直接执行步骤b14结束监测过程;
步骤b6,读取第i个软件模块的配置文件,从配置文件中获取配置信息列表,以及配置信息的数量Pnumber;
步骤b7,选取第i个软件模块的第j个配置进行配置值的变更监测,j取值为1~Pnumber;
步骤b8,判断j是否大于Pnumber,如果否,则执行步骤b9;如果是,则表示已经完成了第i个软件模块的所有配置项值的对比分析,执行步骤b11;
步骤b9,获取第i个软件模块的配置文件中的第j个配置信息在配置文件中配置值Aij,再获取该配置在共享内存中的配置值A`ij,并对Aij和A`ij进行自动对比分析,如果Aij等于A`ij,表示所述配置信息在配置文件中的配置值与在配置存储模块中的配置值一致,未发生该配置信息的配置值的变更,则执行j=j+1,然后执行步骤b7;如果Aij不等于A`ij,表示该配置信息在配置文件中的配置值与在配置存储模块中的配置值不一致,发生了配置值的变更,执行步骤b10;
步骤b10,通过awk自动将第i个软件模块的第j个配置信息在配置存储模块中的配置值A`ij替换第i个软件模块的配置文件中的配置值Aij,实现第i个软件模块的第j个配置信息的配置值的自动更新和本地文件持久化;同时,将第i个软件模块的动态重启标志Flagi设置为1;
步骤b11,判断第i个软件模块的动态重启标志Flagi是否等于1,若Flagi等于1,则表示该软件模块发生了配置值的变更,执行步骤b12;若Flagi不等于1,则表示软件模块未发生任何配置值的变更,执行步骤b13;
步骤b12,自动调用第i个软件模块的动态重启命令restart.sh实现软件模块的自动重启,实现新配置值的自动加载生效;
步骤b13,执行i=i+1,然后执行步骤b5;
步骤b14,结束监测过程。
有益效果:本发明分析了在C/S和B/S混合架构的软件系统中,系统由多个软件模块组成,各个软件模块混合部署在不同的操作系统平台中,不同的软件模块由不同的程序语言实现,不同软件模块的配置文件名称不同,文件格式和存储在配置文件中的待加载配置信息也不尽相同。换言之,系统的配置信息散落在不同的配置文件中,这些配置文件散落在不同平台的不同位置,且文件格式不尽相同,缺少对系统的配置信息的统一管理和支持分布式地动态更新机制,无法进行自动化运维。针对上述现状,提出了一种支持跨语言跨平台的运维配置管理方法及系统,该方法和系统通过将所有配置信息的有效抽取整合,结合zookeeper、kafka、分布式、共享内存和awk等技术,解决了跨语言跨平台的由多个软件模块组成的混合架构的软件系统的统一配置管理和自动化运维的技术问题,实现了混合架构中多个软件模块的配置项信息的集中存储、批量修改、变更检测、自动更新、配置信息的本地文件持久化和动态重启加载,提升配置信息自动更新的时效性,提高自动化运维的水平。本方法将配置存储模块作为各个软件模块配置信息的存储载体,通过配置存储模块的分布式存储和变更提醒机制,有利于提升配置自动更新的时效性。同时,也将实时修改后的配置信息持久化保存在各个软件模块的本地配置文件中,软件模块的运行不依赖于配置存储模块,加载配置文件即可正常运行,有利于提高软件模块的独立性、稳定性和可靠性。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明配置管理模块的流程图。
图2是本发明配置监测模块的配置监测流程图。
具体实施方式
如图1、图2所示,本发明提供了一种支持跨语言跨平台的运维配置管理方法及系统,所述方法包括如下步骤:
步骤1,对系统中由不同程序语言编写并且部署在不同平台的各个软件模块的配置文件中的配置信息进行人工梳理汇总,抽取其配置信息的配置名称和配置值,将所有配置信息的配置名称和配置值以键-值对的形式存储在配置存储模块的zookeeper中。
步骤1-1,对系统中由不同程序语言编写并且部署在不同平台的各个软件模块的配置文件中的配置信息进行人工梳理汇总,抽取其配置信息的配置名称和配置值;例如,软件模块A的配置有mysql数据库用户名和密码、策略开关和消息通信方式等,软件模块B的配置有mongo数据库用户名和密码、时间阈值参数和消息通信方式等,软件模块C的配置有mysql数据库用户名和密码、mongo数据库用户名和密码、港区名称和消息通信方式等。
步骤1-2,将步骤1-1中抽取的所有配置信息进行梳理,将相同名称的配置信息提取为公共配置信息并根据配置名称进行去重,将各个软件模块独有的配置信息提取为该模块独有配置信息;例如步骤1-1中的示例,将mysql数据库用户名和密码、mongo数据库用户名和密码,以及消息通信方式这几个配置提取为公共配置,其他的为各个模块独有的配置。
步骤1-3,将步骤1-2中的公共配置信息和各个模块的独有配置信息进行存储,每个配置信息的配置名称和配置值以键、值对的形式存储在配置存储模块的zookeeper中。例如步骤1-2中的示例,配置信息在zookeeper中的存储如下:
公共配置mysql数据库用户名的配置名称和配置值存储为global.jdbc.userName=test;
公共配置mysql数据库密码的配置名称和配置值存储为global.jdbc.passWord=vtms;
公共配置mongo数据库用户名的配置名称和配置值存储为global.mongo.userName=mongoTest;
公共配置mongo数据库密码的配置名称和配置值存储为global.mongo.passWord=cetc;
模块A独有的策略开关配置的配置名称和配置值存储为A.switchdown=1;
模块B独有的时间阈值参数配置的配置名称和配置值存储为B.delayTime=50;
模块C独有的港区名称配置的配置名称和配置值存储为C.placeVersion=QHD等。
步骤2,配置管理模块读取配置存储模块中的配置信息,根据运维需求对一个或多个配置信息的配置值进行修改,通过zkclient将修改后的配置值被保存在配置存储模块中。通过kafka自动将发生变更的配置信息的配置名称和变更后的配置值推送给部署在不同平台的配置监测模块。
步骤2-1,配置管理模块读取步骤1-3中所述配置存储模块中的配置信息,在配置管理模块的界面中以树形结构展示读取的配置信息,包括配置名称和配置值;
步骤2-2,在配置管理模块的界面中,根据运维需要对存储在配置存储模块中的配置信息的配置值进行按需修改,通过zkclient将修改后的配置值被保存在配置存储模块中;
步骤2-3,配置管理模块通过kafka自动将发生变更的配置信息的配置名称和变更后的配置值推送给分布式部署的配置监测模块。
步骤3,采用分布式部署的配置监测模块自动接收配置管理模块推送过来的配置信息变更情况kafka报文,对报文进行解析,并将变更后的配置名称和配置值存储在模块自身的内存中,以共享内存的方式对外提供,供其他软件模块使用。
步骤4,部署在不同平台的配置监测模块自动定时对本机的各个软件模块进行配置信息的配置值的变更监测,监测是否有配置值发生了变更。若有配置值发生了变更,则从共享内存中获取新的配置信息,将配置存储模块中新的配置值自动更新到对应的软件模块的配置文件中,实现新的配置值的本地文件持久化,并控制软件模块进行动态重启,实现新配置值的即时生效,进而实现系统配置信息的自动化运维。
步骤4-1,接收配置信息变更情况的kafka报文,对报文中的内容进行解析;
步骤4-2,从解析后的kafka报文中获取变更的配置信息,将变更后的配置信息存储在模块自身的内存中,以共享内存的方式对外提供,供其他软件模块使用;
步骤4-3,自动获取部署在本机的所有软件模块列表,以及软件模块的数量Mnumber;
步骤4-4,选取第i个软件模块,对其配置文件进行配置监测,i取值为1~Mnumber;
步骤4-5,判断i是否大于Mnumber,如果否,则执行步骤4-6;如果是,则表示完成了本机的所有软件模块的一轮配置监测,直接执行步骤4-14结束监测过程;
步骤4-6,读取第i个软件模块的配置文件,从配置文件中获取配置信息列表,以及配置信息的数量Pnumber;
步骤4-7,选取第i个软件模块的第j个配置进行配置值的变更监测,j取值为1~Pnumber;
步骤4-8,判断j是否大于Pnumber,如果否,则执行步骤4-9;如果是,则表示已经完成了第i个软件模块的所有配置项值的对比分析,执行步骤4-11;
步骤4-9,获取第i个软件模块的配置文件中的第j个配置信息在配置文件中配置值Aij,再获取该配置信息在共享内存中的配置值A`ij,并对Aij和A`ij进行自动对比分析,如果Aij等于A`ij,表示所述配置信息在配置文件中的配置值与在配置存储模块中的配置值一致,未发生该配置信息的配置值的变更,则执行j=j+1,然后执行步骤4-7;如果Aij不等于A`ij,表示该配置信息在配置文件中的配置值与在配置存储模块中的配置值不一致,发生了配置值的变更,执行步骤4-10;
步骤4-10,通过awk将第i个软件模块的第j个配置信息在配置存储模块中的配置值A`ij替换第i个软件模块的配置文件中的配置值Aij,实现第i个软件模块的第j个配置值的自动更新和新配置值的本地文件持久化;同时,将第i个软件模块的动态重启标志Flagi设置为1;
步骤4-11,判断第i个软件模块的动态重启标志Flagi是否等于1,如果Flagi等于1,则表示该软件模块发生了配置值的变更,需要对该软件模块进行动态重启操作,执行步骤4-12;如果Flagi不等于1,则表示软件模块未发生任何配置值的变更,执行步骤4-13;
步骤4-12,自动调用第i个软件模块的动态重启命令restart.sh实现软件模块的自动重启,实现新配置值的自动加载生效;
步骤4-13,执行i=i+1,然后执行步骤4-5;
步骤4-14,结束监测过程。
本发明提供了一种支持跨语言跨平台的运维配置管理方法及系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (6)
1.一种支持跨语言跨平台的运维配置管理方法,其特征在于,包括如下步骤:
步骤1,对系统中由不同程序语言编写并且部署在不同平台的各个软件模块的配置文件中的配置信息进行梳理汇总,抽取其配置信息的配置名称和配置值,将所有配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中;
步骤2,对存储在zookeeper上的配置信息进行树形结构展示和统一管理,根据运维需求对一个或两个以上配置信息的配置值进行修改;
步骤3,通过zkclient对步骤2中配置值发生变更的配置信息进行更新存储,将新的配置值存储到zookeeper中,并通过kafka报文的方式推送配置值的变更情况;
步骤4,接收配置信息变更情况的kafka报文,并将变更后的配置信息存储在模块自身的内存中,以共享内存的方式对外提供,供其他软件模块使用;同时,定时自动对系统各平台的各个软件模块的配置文件中的配置信息进行配置值的变更监测,监测是否有配置信息的配置值发生了变更,如果有配置信息的配置值发生了变更,则从共享内存中获取新的配置值,并通过awk将新的配置值自动更新到对应的配置文件中,实现新配置值的本地文件持久化,并控制软件模块进行动态加载或者重启,进而实现新配置值的即时生效和自动化运维。
2.根据权利要求1所述的方法,其特征在于,步骤1包括:
步骤1-1,对系统中由不同程序语言编写并且部署在不同平台的各个软件模块的配置文件中的配置信息进行梳理汇总,抽取其所有配置信息的配置名称和配置值;
步骤1-2,将步骤1-1中抽取的所有配置信息进行梳理,将相同名称的配置信息提取为公共配置信息并根据配置名称进行去重,将各个软件模块独有的配置信息提取为对应的软件模块独有配置信息;
步骤1-3,将步骤1-2中的公共配置信息和各个模块的独有配置信息进行存储,将每个配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中。
3.根据权利要求2所述的方法,其特征在于,步骤4包括:
步骤4-1,接收配置信息变更情况的kafka报文,对报文中的内容进行解析;
步骤4-2,从解析后的kafka报文中获取变更的配置信息,将变更后的配置信息存储在内存中,以共享内存的方式对外提供,供其他软件模块使用;
步骤4-3,自动获取部署在本机的所有软件模块列表,以及软件模块的数量Mnumber;
步骤4-4,选取第i个软件模块,对其配置文件进行配置监测,i取值为1~Mnumber;
步骤4-5,判断i是否大于Mnumber,如果否,则执行步骤4-6;如果是,则表示完成了本机的所有软件模块的一轮配置监测,直接执行步骤4-14结束监测过程;
步骤4-6,读取第i个软件模块的配置文件,从配置文件中获取配置信息列表,以及配置信息的数量Pnumber;
步骤4-7,选取第i个软件模块的第j个配置进行配置值的变更监测,j取值为1~Pnumber;
步骤4-8,判断j是否大于Pnumber,如果否,则执行步骤4-9;如果是,则表示已经完成了第i个软件模块的所有配置项值的对比分析,执行步骤4-11;
步骤4-9,获取第i个软件模块的配置文件中的第j个配置信息在配置文件中配置值Aij,再获取该配置信息在共享内存中的配置值A`ij,并对Aij和A`ij进行自动对比分析,如果Aij等于A`ij,表示所述配置信息在配置文件中的配置值与在配置存储模块中的配置值一致,未发生该配置信息的配置值的变更,则执行j=j+1,然后执行步骤4-7;如果Aij不等于A`ij,表示该配置信息在配置文件中的配置值与在配置存储模块中的配置值不一致,发生了配置值的变更,执行步骤4-10;
步骤4-10,通过awk将第i个软件模块的第j个配置信息在配置存储模块中的配置值A`ij替换第i个软件模块的配置文件中的配置值Aij,实现第i个软件模块的第j个配置值的自动更新和新配置值的本地文件持久化;同时,将第i个软件模块的动态重启标志Flagi设置为1;
步骤4-11,判断第i个软件模块的动态重启标志Flagi是否等于1,如果Flagi等于1,则表示该软件模块发生了配置值的变更,需要对该软件模块进行动态重启操作,执行步骤4-12;如果Flagi不等于1,则表示软件模块未发生任何配置值的变更,执行步骤4-13;
步骤4-12,自动调用第i个软件模块的动态重启命令restart.sh实现软件模块的自动重启,实现新配置值的自动加载生效;
步骤4-13,执行i=i+1,然后执行步骤4-5;
步骤4-14,结束监测过程。
4.一种支持跨语言跨平台的运维配置管理系统,其特征在于,包括配置存储模块、配置管理模块和配置监测模块;
所述配置存储模块用于存储从各个配置文件中抽取出来的配置信息,包括公共配置信息和各个模块的独有配置信息,将配置信息的配置名称和配置值以键、值对的形式存储在zookeeper中;
所述配置管理模块读取配置存储模块中的配置信息,根据运维需求对一个或两个以上配置信息的配置值进行修改,通过zkclient将修改后的配置值保存在配置存储模块中,并通过kafka报文自动将配置值发生变更的配置信息的配置名称和变更后的配置值推送给部署在不同平台的配置监测模块;
所述配置检测模块采用分布式部署,部署在不同的平台中,接收配置管理模块推送过来的配置信息变更情况kafka报文,并对报文进行解析,将变更后的配置信息存储在模块自身的内存中,并以共享内存的方式对外提供,供其他软件模块使用;同时,自动定时对本机的各个软件模块进行配置信息的配置值的变更监测,监测是否有配置值发生了变更,如果有配置值发生了变更,则从共享内存中读取最新的配置信息,通过awk将配置存储模块中新的配置值自动更新到对应的软件模块的配置文件中,实现新的配置值的本地文件持久化,并控制该软件模块进行动态重启,实现新配置值的即时生效,进而实现系统配置信息的自动化运维。
5.根据权利要求4所述的系统,其特征在于,所述配置管理模块具体执行如下步骤:
步骤a1,配置管理模块读取配置存储模块中的配置信息,在配置管理模块的界面中以树形结构展示展示读取的配置信息,包括其配置名称和配置值;
步骤a2,在配置管理模块的界面中,根据运维需要对存储在配置存储模块中的配置信息的配置值进行修改,通过zkclient将修改后的配置值被保存在配置存储模块中;
步骤a3,配置管理模块通过kafka自动将发生变更的配置信息的配置名称和变更后的配置值推送给分布式部署的配置监测模块。
6.根据权利要求5所述的系统,其特征在于,所述配置监测模块具体执行如下步骤:
步骤b1,接收配置信息变更情况的kafka报文,对报文中的内容进行解析;
步骤b2,从解析后的kafka报文中获取变更的配置信息,将变更后的配置信息存储在配置监测模块自身的内存中,以共享内存的方式对外提供,供其他软件模块使用;
步骤b3,自动获取部署在本机的所有软件模块列表,以及软件模块的数量Mnumber;
步骤b4,选取第i个软件模块,对其配置文件进行配置监测,i取值为1~Mnumber;
步骤b5,判断i是否大于Mnumber,如果否,则执行步骤b6;如果是,则表示完成了本机的所有软件模块的一轮配置监测,直接执行步骤b14结束监测过程;
步骤b6,读取第i个软件模块的配置文件,从配置文件中获取配置信息列表,以及配置信息的数量Pnumber;
步骤b7,选取第i个软件模块的第j个配置进行配置值的变更监测,j取值为1~Pnumber;
步骤b8,判断j是否大于Pnumber,如果否,则执行步骤b9;如果是,则表示已经完成了第i个软件模块的所有配置项值的对比分析,执行步骤b11;
步骤b9,获取第i个软件模块的配置文件中的第j个配置信息在配置文件中配置值Aij,再获取该配置在共享内存中的配置值A`ij,并对Aij和A`ij进行自动对比分析,如果Aij等于A`ij,表示所述配置信息在配置文件中的配置值与在配置存储模块中的配置值一致,未发生该配置信息的配置值的变更,则执行j=j+1,然后执行步骤b7;如果Aij不等于A`ij,表示该配置信息在配置文件中的配置值与在配置存储模块中的配置值不一致,发生了配置值的变更,执行步骤b10;
步骤b10,通过awk自动将第i个软件模块的第j个配置信息在配置存储模块中的配置值A`ij替换第i个软件模块的配置文件中的配置值Aij,实现第i个软件模块的第j个配置信息的配置值的自动更新和本地文件持久化;同时,将第i个软件模块的动态重启标志Flagi设置为1;
步骤b11,判断第i个软件模块的动态重启标志Flagi是否等于1,若Flagi等于1,则表示该软件模块发生了配置值的变更,执行步骤b12;若Flagi不等于1,则表示软件模块未发生任何配置值的变更,执行步骤b13;
步骤b12,自动调用第i个软件模块的动态重启命令restart.sh实现软件模块的自动重启,实现新配置值的自动加载生效;
步骤b13,执行i=i+1,然后执行步骤b5;
步骤b14,结束监测过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110191425.5A CN112835591B (zh) | 2021-02-19 | 2021-02-19 | 一种支持跨语言跨平台的运维配置管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110191425.5A CN112835591B (zh) | 2021-02-19 | 2021-02-19 | 一种支持跨语言跨平台的运维配置管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835591A true CN112835591A (zh) | 2021-05-25 |
CN112835591B CN112835591B (zh) | 2023-07-28 |
Family
ID=75933845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110191425.5A Active CN112835591B (zh) | 2021-02-19 | 2021-02-19 | 一种支持跨语言跨平台的运维配置管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835591B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113347035A (zh) * | 2021-05-31 | 2021-09-03 | 中国工商银行股份有限公司 | 一种以太网交换机配置持久化方法及装置 |
US20230076276A1 (en) * | 2021-09-06 | 2023-03-09 | Jpmorgan Chase Bank, N.A. | Data configuration deployment framework |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731580A (zh) * | 2015-01-12 | 2015-06-24 | 上海新炬网络信息技术有限公司 | 基于Karaf与ActiveMQ的自动化运维系统及其实现方法 |
US20160149761A1 (en) * | 2014-11-26 | 2016-05-26 | Edgewater Networks, Inc. | Method and system for providing unified configuration information to disparate system software components |
CN106878376A (zh) * | 2016-12-23 | 2017-06-20 | 微梦创科网络科技(中国)有限公司 | 一种配置管理方法与系统 |
CN109683911A (zh) * | 2018-12-26 | 2019-04-26 | 上海金融期货信息技术有限公司 | 一种实现自动化应用部署及影响分析的系统 |
CN110187896A (zh) * | 2019-05-28 | 2019-08-30 | 北京海量数据技术股份有限公司 | 一种自动化操作系统部署方法 |
CN112104726A (zh) * | 2020-09-09 | 2020-12-18 | 上海微亿智造科技有限公司 | 一种工业物联网对象存储实时监测系统 |
-
2021
- 2021-02-19 CN CN202110191425.5A patent/CN112835591B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160149761A1 (en) * | 2014-11-26 | 2016-05-26 | Edgewater Networks, Inc. | Method and system for providing unified configuration information to disparate system software components |
CN104731580A (zh) * | 2015-01-12 | 2015-06-24 | 上海新炬网络信息技术有限公司 | 基于Karaf与ActiveMQ的自动化运维系统及其实现方法 |
CN106878376A (zh) * | 2016-12-23 | 2017-06-20 | 微梦创科网络科技(中国)有限公司 | 一种配置管理方法与系统 |
CN109683911A (zh) * | 2018-12-26 | 2019-04-26 | 上海金融期货信息技术有限公司 | 一种实现自动化应用部署及影响分析的系统 |
CN110187896A (zh) * | 2019-05-28 | 2019-08-30 | 北京海量数据技术股份有限公司 | 一种自动化操作系统部署方法 |
CN112104726A (zh) * | 2020-09-09 | 2020-12-18 | 上海微亿智造科技有限公司 | 一种工业物联网对象存储实时监测系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113347035A (zh) * | 2021-05-31 | 2021-09-03 | 中国工商银行股份有限公司 | 一种以太网交换机配置持久化方法及装置 |
CN113347035B (zh) * | 2021-05-31 | 2022-09-13 | 中国工商银行股份有限公司 | 一种以太网交换机配置持久化方法及装置 |
US20230076276A1 (en) * | 2021-09-06 | 2023-03-09 | Jpmorgan Chase Bank, N.A. | Data configuration deployment framework |
US11789712B2 (en) * | 2021-09-06 | 2023-10-17 | Jpmorgan Chase Bank, N.A. | Data configuration deployment framework |
Also Published As
Publication number | Publication date |
---|---|
CN112835591B (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0622714A1 (en) | Integrated automation development system and method | |
CN112416581B (zh) | 定时任务的分布式调用系统 | |
US20110214111A1 (en) | Systems and methods for detecting computing processes requiring reinitialization after a software package update | |
CN112835591A (zh) | 一种支持跨语言跨平台的运维配置管理方法及系统 | |
CN107908488B (zh) | 消息请求接口交互方法、装置、计算机设备及存储介质 | |
CN112148610A (zh) | 测试用例执行方法、装置、计算机设备和存储介质 | |
US10372572B1 (en) | Prediction model testing framework | |
CN113050984A (zh) | 资源调取方法、装置、电子设备及存储介质 | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
CN110851471A (zh) | 分布式日志数据处理方法、装置以及系统 | |
CN104484176B (zh) | 一种安卓系统窗口对象获取方法和装置 | |
CN110648126A (zh) | 支付类型配置方法、装置、服务器及存储介质 | |
CN111752838A (zh) | 问题排查方法、装置、服务器及存储介质 | |
CN117061368A (zh) | 绕行堡垒机行为的自动识别方法、装置、设备与介质 | |
CN109408104B (zh) | 一种获取游戏整合信息的方法及装置 | |
CN116303320A (zh) | 基于日志文件的实时任务管理方法、装置、设备及介质 | |
CN110881030A (zh) | 基于logstash的记录web服务管理员操作日志的方法及装置 | |
US11336505B2 (en) | Persistent alert notes | |
CN115373886A (zh) | 服务群组容器停机方法、装置、计算机设备和存储介质 | |
CN115617668A (zh) | 一种兼容性测试方法、装置及设备 | |
CN112596750B (zh) | 应用测试方法、装置、电子设备及计算机可读存储介质 | |
CN113918373A (zh) | 一种内存泄露监控方法、内存泄露检测方法及相应装置 | |
CN116501596A (zh) | 应用程序的测试方法及装置 | |
CN113886215A (zh) | 接口测试方法、装置及存储介质 | |
CN110442392B (zh) | 一种包隔离方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |