软件配置管理之Apollo配置中心

一、什么是配置中心?

配置中心就是一种统一管理各种应用配置的基础服务组件。配置中心将配置从应用中剥离出来,统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题。

1.什么是配置?

应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期。 比如:数据库连接参数、系统启动参数等。

2.配置的特点:

①配置是独立于程序的只读变量

②配置伴随应用的整个生命周期

③配置可以有多种加载方式(配置文件、环境变量、启动参数、数据库等)

3.配置需要管理:

①权限管理:对配置的修改权限等。

②不同环境、集群配置管理:同一程序在不同环境(开发、测试、生产)或不同集群(如不同数据中心)里有时需要不同的配置。

二、什么是Apollo?

携程开源的配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具有规范的权限、流程治理等特征,适用于微服务配置管理场景。

1、Apollo包含服务端和客户端两部分:

(1)服务端:

基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

(2)Java客户端:

不依赖任何框架,能运行于所有Java运行时环境,对Spring/Spring Boot环境有较好的支持。

2、Apollo的执行流程

软件配置管理之Apollo配置中心_第1张图片

3、Apollo配置中心的工作原理

软件配置管理之Apollo配置中心_第2张图片

Apollo配置中心开始工作前,首先需要进行一些配置连接,创建好 ApolloPortalDB和ApolloConfigDB数据库后,进行数据库连接,ConfigService与AdminService连接ConfigDB,Portal连接PortalDB,连接好数据库之后,便需要在portal里配置环境信息meta Service。

通过localhost:xxxx【这里为自己设置的portal端口号】打开界面,进入到Apollo的配置中心,登录——创建应用——增加配置——发布配置,此时Portal会请求adminService去数据库中修改信息,接着adminServic再去通知ConfigService得到配置的信息。

然后,如何实现客户端获取配置信息呢?举例使用到idea,在编辑配置中设置VM options信息,通过导入apollp-client与slf4j-simple依赖,通过ConfigService类去调用getApolloConfig方法获取portal界面中创建的配置,再通过获取的该配置去调用getProperty方法,传参去找到配置返回应用配置中的value信息,最后实现apollo客户端获取配置信息。

三、Apollo的核心概念?

1、application(应用)关键字:

相当于一个项目。Apollo 客户端在运行时需要知道应用的标识,从而可以根据这个标识去配置中心获取对应的配置。应用的标识用 APPid 来指定。

appId 实际使用配置的应用,Apollo客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置。

2、environment(环境)关键字:

就是常见的开发、测试等环境,不同的环境对应的配置内容不一样。Apollo 客户端在运行时除了需要知道项目当前的身份标识,还需要知道当前项目对应的环境,从而可以根据环境去配置中心获取对应的配置

env 配置对应的环境,Apollo客户端在运行时需要知道当前应用处于哪个环境,从而去获取相应的配置。如开发环境、测试环境等。

3、cluster(集群)关键字:

一个应用下不同实例的分组。用上课的例子来说,就像上海可以作为一个应用的集群,北京也可以作为一个。同时还有在多机房的环境下,针对不同的机房,我们可以划分出不同的集群,集群可以拥有不同的配置。

cluster 一个应用下不同实例的分组,比如典型的可按照数据中心分,上海机房的应用实例分为一个集群,北京机房的应用实例分为另一个集群。

4、namespace(命名空间)关键字:

相当于一个应用下不同配置的分组。是用来对配置做分类,不同类型的配置存放在不同的命名空间中。

namespaces 一个应用下不同配置的分组,不同类型的配置存放在不同的组中,如数据库配置组,RPC配置组,应用自身配置组等。【key,value不同】

四、客户端读取配置

1、pom.xml配置依赖项:

要在IDEA中使用Apollo客户端获取配置,需要在pom.xml中配置以下两个依赖项。

软件配置管理之Apollo配置中心_第3张图片

2、编写代码进行测试:

本次测试中用到两个方法:

①ConfigService.getAppConfig():连接到ConfigService的DEV环境。

②appConfig.getProperty():获取配置信息。

软件配置管理之Apollo配置中心_第4张图片

3、修改VM options

打;开Run/Debug Configuration,并显示VM options框。

在VM options中要输入三组参数,每组参数均以-D开头

①-Dapp.id=****  配置Apollo Portal中某个应用的id。

②-Denv=DEV  指明要配置DEV环境。

③-Ddev_meta=http://localhost:8088 指明dev环境的meta地址(不同环境下的meta地址是不一样的),ip和端口号都要根据自己情况进行修改。

4、热发布

修改测试代码,使其能一直进行配置的获取和打印。

软件配置管理之Apollo配置中心_第5张图片

你可能感兴趣的:(软件配置管理,学习,经验分享)