apollo quick start操作
Apollo Github官方地址:https://github.com/ctripcorp/apollo
apollo quick start官方示例GitHub地址:https://github.com/ctripcorp/apollo/wiki/Quick-Start
本文目的:快速启动apollo,快速了解apollo配置中心,apollo支持docker部署,部署方式可查看官方文档,需要注意的是,此示例用于本地测试
一.准备操作
1.1 Java
- Apollo服务端:
1.8+
- Apollo客户端:
1.7+
- maven:
3.6.2(目前最新版)
由于Quick Start会在本地同时启动服务端和客户端,所以 需要在本地安装Java 1.8+。
在配置好后,可以通过如下命令检查:
java -version
样例输出:
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
Windows用户请确保JAVA_HOME
和path
环境变量已经设置。
1.2 Mysql
- 版本要求:
5.6.5+
Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5
以上版本。
1.3 下载Quick Start安装包
下载方法:
-
从Github下载
- checkout或下载apollo-build-scripts项目
- 由于Quick Start项目比较大,所以放在了另外的repository,请注意项目地址
-
从百度网盘下载
- 通过网盘链接下载(提取码: deca)
- 下载到本地后,在本地解压apollo-quick-start.zip
-
为啥安装包要58M这么大?
- 因为这是一个可以自启动的jar包,里面包含了所有依赖jar包以及一个内置的tomcat容器
二、安装步骤
2.1 创建数据库
Apollo服务端共需要两个数据库:ApolloPortalDB
和ApolloConfigDB
,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
注意:如果你本地已经创建过Apollo数据库,请注意备份数据。我们准备的sql文件会清空Apollo相关的表。
2.1.1 创建ApolloPortalDB
通过各种MySQL客户端(例如:Navicat)导入sql/apolloportaldb.sql即可。
下面以MySQL原生客户端为例:source /your_local_path/sql/apolloportaldb.sql
quick-start目录结构.png上面的
your_local_path
其实就是这个小项目的根路径,我们直接找到sql
文件夹下的apolloportaldb.sql
文件就行了,如下:
sql文件.png
下面以MySQL原生客户端为例:
source /your_local_path/sql/apolloportaldb.sql
那么在我这里的命令就是source E://personerIdea//apollo-quick-start//sql//apolloportaldb.sql
导入成功后,可以通过执行以下sql语句来验证:select Id, AppId, Name from ApolloPortalDB.App;
2.1.2 创建ApolloConfigDB
通过各种MySQL客户端(例如:Navicat)导入sql/apolloconfigdb.sql即可。
下面以MySQL原生客户端为例:source /your_local_path/sql/apolloconfigdb.sql
,这个路径和上面的类似。
导入成功后,可以通过执行以下sql语句来验证:
select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
验证-2.png
2.2 配置数据库连接信息
修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息,由于这些信息都在demo.sh
文件中,所以可以使用Notepad++
打开demo.sh
进行修改,需要修改的内容如下:
# apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=123456
# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=123456
上图中的密码我已经修改过了,源文件是空着的,如果没有给当前mysql
用户(root)设置密码的话空着就行了,需要注意文件中一个地方:
# meta server url
config_server_url=http://localhost:8080
admin_server_url=http://localhost:8090
eureka_service_url=$config_server_url/eureka/
portal_url=http://localhost:8070
这里分别使用了三个端口,所以在启动apollo
之前需要确认这三个端口没有被使用,可以参考查看端口并杀死进程这篇文章
三、启动Apollo配置中心
3.1 执行启动脚本
./demo.sh start
以上命令在Linux
中能直接运行,但在window中需要先下载bash
客户端,比如常用的Git bash
,只要安装了git
,再点击鼠标右键就会出现这个,在Git bash
中运行如下:
看到如图中的输出,表明启动成功。
3.2 异常排查
如果启动遇到了异常,可以分别查看service和portal目录下的log文件排查问题。上图中也是有提示的。
四、服务端验证
- 访问http://localhost:8080/,可以进入eureka监控界面,如下:
eureka.png - 访问http://localhost:8070/config.html?#进入apollo管理界面,如下:
Apollo登录.png
登录默认账号密码是:apollo/admin,进入后就会看到一个SampleApp
应用,到此,apollo启动成功。
五、运行apollo客户端
我们在apollo
目录结构中发现有一个client
文件夹,里面已经封装好了客户端的代码程序,所以在apollo
根目录直接运行就可以了。运行命令如下:
./demo.sh client
运行效果如下:
apollo client.png输入
timeout
,enter
回车,控制台会打印对应的值
刚才通过访问http://localhost:8070进入了apollo管理页面,现在再刷新一下页面,页面如下:
点击修改
操作,修改timeout
的值为150,完成后发布,步骤如下:
发布后,客户端会有变化,如下:
发布.png
客户端已经接收到修改后的值,再在客户端查询timeout
值,结果如下:
六、比较
指标 | apollo | spring cloud config |
---|---|---|
动态刷新 | 速度很快,基本1秒可以独立完成 | 需要依赖git 的修改和发布以及spring cloud bus 、monitor ,webhook 才能达到同样的标准,但速度相对要慢
|
界面化监控工具 | 有 | 无 |
配置维度 | application(应用)、env(环境)、cluster(集群)、namespace(命名空间) | application(应用)、env(环境)、label(分支) |
fallback | 具备版本概念,支持回滚 | 需要Git 支持回滚 |
权限管理、发布审核、操作审计 | 支持 | 需要Git 支持 |
如果您没有尝试过spring cloud config
,可以花一点时间看看这篇文章springcloud:config+bus-amqp+actuator+monitor+码云实现配置文件动态刷新
`