环境设置:
1.1 Java
Apollo服务端:1.8+
Apollo客户端:1.7+
1.2 MySQL
版本要求:5.6.5+
Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。
1.3 下载Quick Start安装包
https://github.com/nobodyiam/apollo-build-scripts
解压后:
2.1 创建数据库 :
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,
数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
2.2 配置数据库连接信息 :
Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,
修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。
我本地这里的数据库链接端口是 3307 用户名密码 都是 root 其他配置先不要改
下面的配置能看出Apollo集成了Eureka注册中心,config_server的地址就是eurek的地址。确保8080 8090 8070 这三个端口没有被占用。
创建测试服务:
在工程中引入依赖:
<!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client --> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.7.0</version> </dependency>
application.properties:
server.port=18080 app.id=ywtb spring.application.name=provider apollo.meta=http://(本机地址):8080 apollo.bootstrap.enabled=true apollo.bootstrap.namespaces=application
测试入口:
@Controller public class TestController { @Value("${name}") private String data; @RequestMapping("/") public @ResponseBody String getApolloData(){ System.out.println(data); return "拉取数据 --> : " + data; } }
启动Apollo配置中心:
经过git 执行脚本./demo.sh start
启动服务
Apollo集成了Eureka注册中心,访问 localhost:8080 :
访问 localhost:8090 :
访问 localhost:8070 为 Apollo 登录页面 ,用户名 : apollo 密码 : admin
点进登录 :
点击创建项目 :
部门 在数据库自改,看下张图
AppId 和 项目配置文件 app.id 保持一致 是唯一识别标志(切记不可以0开头,会被优化掉)
应用名称可随便起
部门列表修改 :
点击提交之后多了一个模块
点进 ywtb模块 :
新增配置:
进来就是 Key Value 格式 ,填好点击提交
看到控制台多一条配置 ,点击发布 ,
状态变为 已发布....
现在启动 项目 访问
控制台 和 页面 :
1.灰度定义
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
2.Apollo实现的功能
1)对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置。
2)对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置。
开启 灰度 发布 :
看到增加了 灰度版本,点击新增灰度配置
换下 Value 值 :
开到灰度版本状态为 未发布, 点击右上角 灰度发布
进入规则页面 :
IP可以在列表选,也可以手动输入,点添加 点击确定
结果 :
测试 :
本地的代码打成jar包,在灰度IP对应的机器上 访问