Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。其服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Apollo目前在国内开发者社区比较热,在Github上有超过5k颗星,在国内众多互联网公司有落地案例,可以说Apollo是目前配置中心产品领域No.1的产品,其成熟度和企业级特性要远远强于Spring Cloud体系中的Spring Cloud Config产品。
目前有针对Java和.Net的两个客户端供使用:
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有额外支持。
.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。
更多Apollo介绍请浏览 Apollo配置中心介绍
二、Apollo的快速安装与基本配置
2.1 快速安装
Apollo GitHub中提供了一个让我们快速上手的Quick Start,帮助我们快速在本地环境部署,启动Apollo配置中心。这里主要集中于针对开发环境的本地部署(单机环境),要部署到生产环境,请参考 Apollo分布式部署指南。
这里我使用的是Windows Server的虚拟机在本机搭的,当然你可以在你的Linux虚拟机中搭建,另外你也可以通过Docker更快捷地部署Apollo。
Step1.准备下列软件/环境
Step4.修改demo.sh中关于数据库连接的信息,主要是url、username与password
# apollo config db info
apollo_config_db_url=jdbc:mysql://192.168.80.70:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=213224591# apollo portal db info
apollo_portal_db_url=jdbc:mysql://192.168.80.70:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=213224591Step5.通过以下命令启动(切换到quickstart的目录中),后续可以将其作为Windows服务,不过生产环境一般用Linux。
cmd>cd C:\Apollo\apollo-build-scripts-master
cmd>demo.sh start
启动后会最终显示以下信息:
==== starting service ====Service logging file is ./service/apollo-service.logStarted [3099]Waiting for config service startup.......Config service started. You may visit http://localhost:8080 for service status now!Waiting for admin service startup....Admin service started==== starting portal ====Portal logging file is ./portal/apollo-portal.logStarted [4071]Waiting for portal startup......Portal started. You can visit http://localhost:8070 now!看到上述信息显示完毕,证明我们的Apollo已经成功启动起来了,那么我们可以去这两个端口8080和8070去看看:
[8070 => Apollo 配置中心管理界面,默认账号:apollo/admin]
进入之后会看到一个示例项目SampleApp,点进去可以看到其中有一个示例配置applicaiton
[8080 => Eureka服务注册&发现,和Consul类似,因为Apollo采用了Eureka作为服务注册中心,对Apollo架构感兴趣的童鞋可以阅读波波老师的《
2.2 基本配置
Step1.创建一个新项目(这里部门可以自己在数据中编辑serverconfig表添加)
Step2.默认情况下,创建新项目后有一个默认的application的Namespace,我们删除它,然后重新创建我们要用到的配置。对于一般共用的数据库、Redis、RabbitMQ等配置,我们一般会将其放到一个Public的配置列表中,而每个项目中私有的配置信息(如Swagger文档的说明信息)我们会单独创建一个Private的配置列表给每个项目。
下图为创建一个共享的配置列表(在Apollo中称为Namespace,详细内容可以参考:Apollo核心概念之Namespace)
![]()



