一. 前言:
从上篇Apollo动态配置基础使用之后,小熙继续补上多环境以及集群配置和灰度等。
二. 环境和准备:
这里小熙由于条件和电脑配置有限,就先用虚拟机配置了。
- 还是上文中的虚拟机基本配置:java8,apollo 1.7等(有条件的可以把不同节点分到不同机器即可)
- apollo相关节点(本次小熙将会配置三个环境):
环境 | 地址 | 服务名 |
– | localhost:8070 | apollo-portal |
DEV | localhost:8080 localhost:8090 | apollo-configservice apollo-adminservice |
PRO | localhost:8081 localhost:8091 | apollo-configservice apollo-adminservice |
UAT | localhost:8082 localhost:8092 | apollo-configservice apollo-adminservice |
远程环境简图:
- 数据库配置(数据库在本机上):
环境 | 地址 | 数据库名称 |
– | 192.168.11.41:3306 | ApolloPortalDB |
DEV | 192.168.11.41:3306 | ApolloConfigDB |
PRO | 192.168.11.41:3306 | ApolloConfigDBPro |
UAT | 192.168.11.41:3306 | ApolloConfigDBUat |
如图:
这里数据库的复制传输可以借助Navicat的功能。
如图:
三. 修改相关配置:
- 添加portal数据库相关环境配置:
2. 添加portal相关meta相关配置:
3. 其他环境的config服务和admin服务注意修改对应数据库连接。
如图:
4. 代码中添加对应修改监听配置类:
/**
* @author chengxi
* @date 2021/12/9 16:12
*/
@Configuration
public class ApolloConfig {
@ApolloConfigChangeListener("application")
private void apolloConfigChange(ConfigChangeEvent changeEvent) {
changeEvent.changedKeys().forEach(key -> {
ConfigChange change = changeEvent.getChange(key);
System.out.println(String.format("Found apollo change - key: %s, oldValue: %s, newValue: %s, changeType: %s",
change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));
});
}
}
当我们重新打开apollo的配置时,就有对应的变化了。
如图:
四. 验证多环境:
- 修改项目中对应配置(这里看个人喜好选择如何抒写,这里可以提出bootstrap.yml,现在这样好展示)
如图: - 修改apollo配置并获取:
注意这里对应环境的端口要在linux的防火墙中开放,小熙忘记开放之后,一度怀疑过自己。
(1)修改之前:
(2)修改之后:
(3)注意看控制台,我们添加监控代码之后,在修改之后是有对应展示的。
如图:
到此,小熙要介绍的多环境就介绍完了。
五. 多集群:
apollo的多集群分两种,一种是多服务节点HA,另一种是内置功能多集群
- 其实HA多集群也很简便,因为config服务中已经集成了eureka所以当做正常微服务部署即可,如果想把portal也做成集群,可以加入注册中心等负载路由一下就好了。
添加其他注册地址:
如图: - 内置功能多集群(其主要是在不改变appId的情况下,让不同实例可以使用不同的配置)
(1)创建集群
(2)如上图,在对应位置添加配置文件即可:
env=dev
idc=test-cluster
六. 通用配置:
添加通用配置,这里选择创建通用namespace之后(和正常创建使用一样,只是相应创建选择目录不一样而已),创建其他项目配置的时候可以直接选择引用,当修改配置时也只会在当前项目配置上覆盖而已不用担心通用配置:
- 创建公共namespace:
- 其他项目选择通用配置(在对应项目配置中点击添加namespace):
七. 灰度配置:
通过灰度发布功能,可以实现:
- 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置
- 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置
- 添加灰度节点:
- 修改灰度配置并发布:
之后对应节点就会生效了。 - 测试验证(小熙这里只有一个节点访问了,所以测试的也是这个唯一节点,有条件的话可以测试分开):
八. 后语:
以上就是小熙关于apollo简单并深入的分享了,下篇继续分享apollo架构以及源码相关。