一.概述
1.1 什么是配置
应用程序在启动和运行的时候需要读取一些配置信息,配置信息基本上伴随着应用程序的整个生命周期,例如:数据库连接参数,启动参数等。有以下几个特点:
配置是独立于程序的只读变量
配置伴随应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为
配置可以有多种加载方式,常见的有程序内部硬编码,配置文件,环境变量等
配置需要治理,配置的修改需要有完善的权限控制,不同环境和集群配置管理
1.2 什么是配置中心
配置中心将配置从应用中剥离出来,统一管理,优雅的解决了配置的动态变更,持久化,运维成本等问题。应用自身既不需要去添加配置接口,也不需要自己去实现配置的持久化,更不需要引入“定时任务”以便降低运维成本。
-
配置中心就是一种统一管理各种应用配置的基础服务组件。一个合格的配置中心需要满足:
-
配置项容易读取和修改
-
添加新配置简单直接
-
支持对配置的修改的检视以把控风险
-
查看配置修改的历史记录
-
不同不是环境支持隔离
1.3 常用的配置中心
二.Apollo
2.1 概述
Apollo是携程框架部门研发的分布式配置中心,能够集中化管理应用的不同环境,不同集群的配置,配置修改后能够推送到应用端,并且具备规范的权限,流程治理等特性,适用于微服务配置管理场景。
Apollo包括服务端和客户端部分。服务端基于Spring Cloud和Spring Boot开发,打包后直接运行,不需要安装Tomcat等容器。Java客户端不依赖于任何框架,能够运行于所有Java能运行的环境,同时对Spring/spring Boo环境有较好的支持。
有以下特性:
- 统一管理不同环境,不同集群的配置(通过命名空间可以很方便地支持读个不同应用共享同一份配置,同时还允许覆盖公共配置)
- 配置修改实时生效&#