一款分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
一款分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
git clone https://github.com/ctripcorp/apollo
方式二:
直接去官方下载最新的安装包,下载地址如下:
[https://github.com/ctripcorp/apollo/releases](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fctripcorp%2Fapollo%2Freleases)
注意,本人是使用方式一,进行下载。
### 创建数据库
数据库版本要求,5.6.5+,本机环境,mysql 版本为:5.7.18。
查看数据库版本:
SHOW VARIABLES WHERE Variable_name = 'version';
Variable_name Value version 5.7.18-log 创建以下两个数据库并导入初始化数据:
- ApolloConfigDB
- ApolloPortalDB
ApolloConfigDB 所在的文件目录:
${your_file_directory}\apollo\scripts\db\migration\configdb
ApolloPortalDB
${your_file_directory}\apollo\scripts\db\migration\portaldb
在MySQL数据库中执行这两个SQL文件,完成数据库的创建和数据的初始化操作。
###
[http://localhost:8070](https://links.jianshu.com/go?to=http%3A%2F%2Flocalhost%3A8070) 如果出现apollo 的登录界面,说明已经启动成功(登录名/密码:apollo/admin)。

Apollo-portal登录界面
[http://localhost:8080](https://links.jianshu.com/go?to=http%3A%2F%2Flocalhost%3A8080) 如果出现eureka 的管理界面,说明服务启动正常。

apollo-configservice/eureka界面
## Apollo 集群部署
## Apollo 的使用(Java)
持续更新使用案例拿spring boot 项目简单直白地说一下配置刷新的原理;spring boot 项目都有一个 application.yml/properties 的应用配置文件,里面写了各种配置,如:datasource 的连接、redis 连接、mq连接、server.port、application.name 、网关配置等等吧。 在spring boot 项目启动的时候,会将这些配置加载到相应的类里面,如:spring.datasource 的配置会在datasource 初始化的时候,将这类配置注入到DataSourceProperties.java 相对应的属性里面,从而实现数据源的实例。 那么目前使用Apollo 需要做到,这类的配置文件,从Apollo的配置中心拉取,而且,在Apollo 变更某一个属性可以做到不重启应用就生效的目的。那么我们需要怎么做呢? 应用需要监听Apollo 上面的配置的内容改变(配置改变发布),去刷新这类的xxxProperties.java 类,然后重新编译该配置的client端。 例如,刷新DataSourceProperties.java 的属性配置,然后通过反射重新编译DataSource 应用,通过最新的配置重新初始化实例,那么后面调用DataSource的client端就是使用最新的配置。 引入apollo-client 依赖
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>${apollo.client.version}</version>
</dependency>
### apollo 发布配置
登录apollo 配置中心

apollo配置中心主页
里面建了两个应用
- appId:001,是一些基础设施的配置,如Mysql/redis/mq等的连接配置,属于公共配置
- appId:clz-front-gateway,是一个网关的独立配置
appID:001的内容

App.id:001配置内容
clz-front-gateway 的配置内容

App.id:clz-front-gateway
### spring boot 使用apollo 管理配置
在spring boot 中使用 apollo 的配置非常简单,在application.yml/properties中设置app.id、apollo.meta以及指定命名空间即可。
application.yml 配置
spring boot 启动类,启动 @EnableApolloConfig
这样就可以从 meta: [http://localhost:8080](https://links.jianshu.com/go?to=http%3A%2F%2Flocalhost%3A8080) (apollo-configservice)中拉取 application,ad-service-config 这两个命名空间的配置了。
### Apollo 实现 Mysql DataSource 热加载
新增一个DataSourceConfig 类处理配置的热加载
### Apollo 实现 Redisson 热加载
### Apollo 实现 Zuul 动态路由
新增zuul配置变更监听
### Apollo 实现 Spring Security 白名单
### Apollo 实现 RabbitMq配置 热加载
### Apollo 实现 ES 热加载
北京好雨科技有限公司始终致力于云原生应用转型改造和行业生态搭建,借助云原生,赋能ToB企业资产积累复用和业务持续交付,为企业数字化能力升级、ToB领域应用交付、搭建行业生态提供软件产品和技术服务。
yangk@goodrain.com