Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Apollo 和Spring Cloud Config 对比
功能点 | Apollo | Spring Cloud Config |
---|---|---|
配置界面 | 统一管理不同环境 / 集群环境 | 无,通过git操作 |
配置生效时间 | 实时 | 重启生效,或者Refresh,或者git hook + MQ 扩展 |
版本管理 | 界面直接提供发布历史和回滚按钮 | 无,通过git操作 |
灰度发布 | 支持 | 不支持 |
授权 / 审计 / 审核 | 界面直接操作,且支持修改和发布权限分离 | 需要通过git仓库设置,且不支持修改和发布权限分离 |
实例配置监控 | 可以方便的看到当前哪些客户端在使用哪些配置 | 不支持 |
配置获取性能 | 快,通过数据库访问 + 缓存支持 | 较慢,需要通过git clone repo,然后本地文件读取 |
客户端支持 | 原生支持Java/.Net,提供API,支持Spring annotation | Spring应用 + annotation支持 |
项目实战
explore-ctrip-apollo
apollo安装启动
https://github.com/ctripcorp/apollo/wiki/Quick-Start
项目配置
可以在Spring Boot的application.properties或bootstrap.properties中指定
app.id
和apollo.meta
。
Apollo支持应用在不同的环境有不同的配置,所以需要在运行提供给Apollo客户端当前环境的Apollo Meta Server信息。默认情况下,meta server和config service是部署在同一个JVM进程,所以meta server的地址就是config service的地址。也可通过server.properties配置文件,这个也是本地缓存路径的位置
/opt/settings/server.properties
本地缓存文件名的组成:{appId}+{cluster}+{namespace}.properties也可通过app.properties配置文件
classpath:/META-INF/app.properties