`

配置管理系统浅析

 
阅读更多

我们的程序常常有一些配置信息,例如连接的数据库配置、缓存大小、线程数等等。这些配置信息的管理一般有两种方式:
a. 配置信息放到文件中,程序启动时导入,或者在程序运行过程中监控文件的修改重新导入配置文件
b. 公司或者部门范围内构建统一的配置管理系统,应用通过API获取配置服务。

通过配置文件管理配置信息的方式存在一些问题,主要有:
1.部署和更新成本高
当前一个互联网服务常常部署在多台机器上,一个配置的修改,常常涉及到多台机器的修改,运维成本高
2.管理成本高
从开发到上线,我们常常有多个环境,例如开发、测试、预发、线上等。
不同的环境的切换,都需要人力手动修改,成本较高,特别涉及到多个team合作的时候,更容易出现问题,更有甚者将一些线下环境的配置带到线上。这种case也有遇到过。

 


为此,当公司的服务到达一定规模的时候,构建统一的配置管理系统显得很有必要!
一个配置信息管理系统应该具备的功能包括:
1.提供交互式的配置管理,允许用户对项目的配置进行增删改查。
2.提供统一的配置请求和监听API
当然,在此基础上,一个配置管理系统在稳定性和可靠性要求极高,毕竟,配置服务一旦出现问题,影响是灾难性的!

在此介绍两种不同的构建配置系统的思路
1. Diamond
diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单、可靠、易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理。
diamond架构如图:

 


Diamond的架构非常简单,服务端采用本地文件+集中式mysql的方式保存配置信息,采用tomcat作为运行容器,nginx作为流量控制。
Diamond是典型的集中式设计思想,为保证可用性,其采取的策略包括:
1)diamond-server将配置数据存储在mysql和本地文件中,mysql中为绝对正确的数据,本地文件和mysql容忍一定程度的不一致。用户请求数据时,访问的是Server的本地文件。
2)client每次从server获取到数据后,都会将数据保存在本地文件系统,当整个Server集群不可用时,使用本地数据。
更多Dimond的信息可以参考reference。Dimond已经开源,地址是:http://code.taobao.org/p/diamond/src/

2.基于zookeeper构建
ZooKeeper是Apache Hadoop的一个子项目,其实现的功能与Google的Chubby基本一致,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
基于zookeeper构建架构图如下所示:

Web UI:用户交互界面,用户可以进行配置的“增删改查”
Zookeeper:配置信息存储中心。负责管理配置数据,配置数据并更时通知相应观察者。
APP:具体应用,向zookeeper请求配置信息,监听配置信息变更
基于zookeeper构建配置管理系统由于zookeeper本身的特点有效的保证了一致性和可靠性!

分享到:
评论

相关推荐

    浅析工控网网络安全防护.docx

    从横向边界视角进行分析,企业现场管理系统、PLC系统、生产执行层均处于同一网络体系下,通过远程操作来实现对管理行为的制约,而远程操作行为的受控率低,很容易对PLC系统与SCADA系统带来潜在的危害,如拒绝式...

    浅析汽车定量装车控制系统的设计及应用

    配置合理的汽车定量装车控制系统和现场关键仪表设备,不仅提高了计量精度、安全性能、环保性能和工作效率,还为企业提高了管理水平和销售效益。本文主要介绍定量装车控制系统结构、关键功能、装车的流程及现场关键仪表...

    服务器配置与管理论文.docx

    服务器配置与管理论文文献 [1]杨云等.Linux网络服务器配置管理项目实训教程[M]北京:中国水利水电出版社2010.07 [2]么丽颖.Linux系统管理和应用[M]北京:中国铁道出版社2011.08 [3]谢树新.Linux网络服务器配置与...

    浅析人工智能在软件工程中的应用.docx

    软件质量与计算机的操作以及配置等都有重要的关系。面向对象的方法和技术逐渐成为软件的可移植性,可继承性以及功能性提高的有效手段,这是由于对象自身具备多态性,可继承性等特性。但是软件质量却变得越来越难以...

    浅析计算机网络安全防护措施.doc

    浅析计算机网络安全防护措施 摘要:计算机网络由于其特有的性质使其容易受到黑客的攻击,这也给网络安全防护 提出了新的要求。本文从计算机网络安全的现状入手,探讨了其目前存在的问题,并提 出了相应的安全技术...

    window server 课程 实验报告

    浅析Windows Server 2003与Windows其他版本操作系统的区别 域的创建和管理 活动目录的安装与配置 网络操作系统配置 域及活动目录 网络操作系统配置

    基于SpringBoot微服务架构下前后端分离的MVVM模型浅析.docx

    论文深入研究了SpringBoot框架的特性和应用,包括开发流程、配置管理、数据库操作、安全性等方面。通过实例演示和理论分析,论文详细介绍了SpringBoot的核心概念和使用方法,旨在帮助读者全面理解和掌握SpringBoot的...

    Oracle表空间设置和管理浅析

    表空间是 Oracle 特有的一种逻辑结构,是管理和组织 Oracle 数据文件一种方式,一个Oracle 数据库能够有一个或多个表空间,而一个表空间则对应一个或多个物理的数据库文件。Oracle 的表空间分为永久空间和临时表空间...

    运营探讨--ipv6安全浅析

    在对ICMP报文的处理上,由于IPv6对ICMPv6的依赖程度远远超过了IPv4,ICMPv6除了完成ping及错误消息外,还新增了地址分配、地址解析、多播管理和移动IPv6下的使用等功能,因此ICMPv6报文的过滤策略需要根据实际情况...

    浅析Jenkins插件开发

    Jenkins提供了丰富的管理和配置功能,如下图所示,包括系统设置,插件管理,系统信息,系统日志,负载统计,节点管理等功能。Stapler是一个将应用程序对象和URL装订在一起的lib库,使编写web应用程序更加方便。...

    浅析NAS技术的特点

     数据存储备份系统应该易于配置、管理和维护,并且具有极高的可靠性和安全性。另外,还需要具有较高的灵活性和可扩展性以适应业务的发展。  与采用存储区域网络(SAN-Storage Area Network)的方案比较,采用网络接...

    华为HCNP-Security LVC公开课培训视频教程汇总集【共3科84集】.rar

    8.3_网络带宽管理_防火墙带宽管理配置部署 8.4_网络带宽管理_防火墙带宽管理故障排除 9.1_虚拟系统-虚拟系统概述 9.2_虚拟系统_虚拟系统实现原理 9.3_虚拟系统_虚拟系统配置部署 9.4_虚拟系统-虚拟系统配置举例...

    浅析自动化仪表在延长油田原油集输中的应用 (2012年)

    探讨数据库管理系统分析式网络技术与各相关泵站之间的联系,从图形组态及人机界面、数据采集系统、报表。提出了服务器系统,网络连接系统功能,并指出了各采油厂选油站的推广应用前景,制定了原油单井计量方面的自动化...

    浅析综合布线标签标识的要求

    布线标签标识系统的实施是为了为用户今后的维护和管理带来最大的便利,提高其管理水平和工作效率,减少网络配置时间。

    全国首届MBA学生论文大赛获奖论文

    配电系统用户供电可靠性管理案例 加入世贸后,中国电信业面临的挑战和对策 职务分析—过程与方法初探 浅析民营企业面向新世纪的可持续发展战略 海景公司的人事难题 两权分离下经营者行为的导向研究 中...

    浅析AngularJS中的生命周期和延迟处理

    这里,我们再讨论一些常用的高级的控制反转容器(Inversion of Control containers):延迟加载(lazy-loading),生命周期管理(lifetime management),以及延迟的创建/处理(deferred creation/resolution)。   延迟...

    VC与Labview、Matlab编程论文资料[2].rar

    基于LabVIEW的网络化虚拟仪器实验与教学管理系统的设计.pdf 基于LabVIEW的网络化虚拟仪器实验系统的设计.pdf 基于LabVIEW的虚拟信号发生器的研究与实现.pdf 基于LabVIEW的虚拟示波器的设计与实现.pdf 基于LabVIEW的...

    VC与Labview、Matlab编程论文资料

    基于LabVIEW的网络化虚拟仪器实验与教学管理系统的设计.pdf 基于LabVIEW的网络化虚拟仪器实验系统的设计.pdf 基于LabVIEW的虚拟信号发生器的研究与实现.pdf 基于LabVIEW的虚拟示波器的设计与实现.pdf 基于LabVIEW的...

    VC与Labview、Matlab编程论文资料[4].rar

    基于LabVIEW的网络化虚拟仪器实验与教学管理系统的设计.pdf 基于LabVIEW的网络化虚拟仪器实验系统的设计.pdf 基于LabVIEW的虚拟信号发生器的研究与实现.pdf 基于LabVIEW的虚拟示波器的设计与实现.pdf 基于LabVIEW的...

Global site tag (gtag.js) - Google Analytics