一、简介

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

apollo 架构原理 apollo框架_spring

二、安装
1、环境要求
  • jdk1.8
  • mysql 5.6+
2、首先在apollo,下载,我们需要的包,并解压,我们会看到三个jar文件,我们用1.3举例。

apollo 架构原理 apollo框架_apollo配置中心使用_02

3、所需数据库准备

在Apollo的githubsql脚本,下载,apolloconfigdb.sql和apolloportaldb.sql

apollo 架构原理 apollo框架_spring_03

4、将下载的数据库脚本运作在自己的数据库上面,这样会创建出俩个数据库,

ApolloConfigDB和ApolloPortalDB。

5、我们可以自己编写一个eureka-server并启动eureka-server。
6、更新ApolloConfigDB库中ServerConfig表的eureka.service.url的地址为我们自己的。
UPDATE ServerConfig SET VALUE='自己eureka.service.url' WHERE KEY='eureka.service.url';
7、分别启动刚才我们下载的jar文件
1)apollo-configservice-1.3.0.jar

命令:

java -Xms256m -Xmx256m -Dserver.port=8085 -Dapollo_profile=github   -Denv=DEV -Deureka.instance.preferIpAddress=true -Deureka.instance.ipAddress=10.10.10.10  -Dspring.datasource.url=jdbc:mysql://10.10.10.10:3305/ApolloConfigDB?characterEncoding=utf-8  -Dspring.datasource.username=root -Dspring.datasource.password=root -jar apollo-configservice-1.3.0.jar

注意更改这里的数据库信息。

2)apollo-adminservice-1.3.0.jar
java -Xms256m -Xmx256m -Dserver.port=8086 -Dapollo_profile=github  -Deureka.instance.preferIpAddress=true -Deureka.instance.ipAddress=10.10.10.10  -Denv=DEV  -Dspring.datasource.url=jdbc:mysql://10.10.10.10:3305/ApolloConfigDB?characterEncoding=utf-8  -Dspring.datasource.username=root -Dspring.datasource.password=root -jar apollo-adminservice-1.3.0.jar

注意更改这里的数据库信息。

3)apollo-portal-1.3.0.jar
java -Xms256m -Xmx256m -Dserver.port=8087 -Dapollo_profile=github,auth  -Ddev_meta=http://10.10.10.10:8085/  -Dspring.datasource.url=jdbc:mysql://10.10.10.10:3305/ApolloPortalDB?characterEncoding=utf-8  -Dspring.datasource.username=root -Dspring.datasource.password=fengpt -jar apollo-portal-1.3.0.jar

注意
①更改这里的数据库信息。
②-Ddev_meta 为apollo-configservice 服务的地址

8、按第七步,启动成功后,访问portal对应的地址,可以得到,如下:就证明我们安装成功了。

apollo 架构原理 apollo框架_apollo 架构原理_04


三、使用
1、有默认的管理员账号

输入用户名 apollo,密码 admin 后登录后,点击SampleApp进入配置界面。

2、进入后,我们可以创建一个测试项目

apollo 架构原理 apollo框架_jar_05


注意这里的应用id,之后会用到。

3、创建完项目后,就可以添加几个配置

apollo 架构原理 apollo框架_spring_06

配置都是key-value模式的。并且配置需要发布,才可以生效。

4、到目前为止,我们就简单使用了apollo,我们用springboot,测试下。
1)新建一个springboot项目
2)加入所需pom

<dependency><groupId>com.ctrip.framework.apollogroupId><artifactId>apollo-clientartifactId><version>1.3.0version>dependency>

3)编写配置文件

# 与配置中心的AppId一致app.id=apollo-test# 默认情况下meta server和config service是部署在同一个JVM进程apollo.meta=http://10.10.10.10:8085# 集成到Spring Bootapollo.bootstrap.enabled = trueapollo.cluster=dev

4)编写测试代码

apollo 架构原理 apollo框架_jar_07

@RestControllerpublic class TestController {@Value("${com.fengpt.test}")private String value;@Value("${name}")private String name;@Value( "${server.port}" )String port;@GetMapping("test")public String get(){return "端口:"+port+" 姓名:"+name+"" +"变量值:"+value;}}

@SpringBootApplication@EnableApolloConfigpublic class ApolloTestApplication {public static void main(String[] args) {SpringApplication.run(ApolloTestApplication.class, args);}}

注意:启动类加:@EnableApolloConfig

5)测试

调用/test接口,查看数据

端口:8081 姓名:张三变量值:test

这时候,我们通过apollo,改变下name的值。

apollo 架构原理 apollo框架_apollo 配置中心_08


记得发布下,

apollo 架构原理 apollo框架_spring_09


我们再一次调用/test接口,这时候,我们看到name的值已经变了。

端口:8081 姓名:李四变量值:test
四、四个核心模块及其主要功能
1)configService
  • 提供配置获取接口
  • 提供配置推送接口
  • 服务于Apollo客户端
2)AdminService
  • 提供配置管理接口
  • 提供配置修改发布接口
  • 服务于管理界面Portal
3)Client
  • 为应用获取配置,支持实时更新
  • 通过MetaServer获取ConfigService的服务列表
  • 使用客户端软负载SLB方式调用ConfigService
4)Portal
  • 配置管理界面
  • 通过MetaServer获取AdminService的服务列表
  • 使用客户端软负载SLB方式调用AdminService
    以上就是apollo的简单使用,之后,我们再研究更高级的用法。