一. 前言:

从上篇Apollo动态配置基础使用之后,小熙继续补上多环境以及集群配置和灰度等。

二. 环境和准备:

这里小熙由于条件和电脑配置有限,就先用虚拟机配置了。

  1. 还是上文中的虚拟机基本配置:java8,apollo 1.7等(有条件的可以把不同节点分到不同机器即可)

  2. 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

    远程环境简图:
    远程环境简图

  3. 数据库配置(数据库在本机上):

    环境 地址 数据库名称
    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的功能。
    如图:

    传输数据库

三. 修改相关配置:

  1. 添加portal数据库相关环境配置:

    修改portal相关图片
    2. 添加portal相关meta相关配置:
    portal相关配置
    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的配置时,就有对应的变化了。
如图:
修改如图

四. 验证多环境:

  1. 修改项目中对应配置(这里看个人喜好选择如何抒写,这里可以提出bootstrap.yml,现在这样好展示)
    如图:
    修改配置

  2. 修改apollo配置并获取:

    注意这里对应环境的端口要在linux的防火墙中开放,小熙忘记开放之后,一度怀疑过自己。

    (1)修改之前:
    修改之前
    获取修改之前

    (2)修改之后:
    修改之后
    修改之后
    (3)注意看控制台,我们添加监控代码之后,在修改之后是有对应展示的。
    如图:
    监控如图
    到此,小熙要介绍的多环境就介绍完了。

五. 多集群:

apollo的多集群分两种,一种是多服务节点HA,另一种是内置功能多集群

  1. 其实HA多集群也很简便,因为config服务中已经集成了eureka所以当做正常微服务部署即可,如果想把portal也做成集群,可以加入注册中心等负载路由一下就好了。

    添加其他注册地址:
    如图:
    添集群

  2. 内置功能多集群(其主要是在不改变appId的情况下,让不同实例可以使用不同的配置)
    (1)创建集群
    创建集群
    创建集群
    (2)如上图,在对应位置添加配置文件即可:

    env=dev
    idc=test-cluster
    

六. 通用配置:

添加通用配置,这里选择创建通用namespace之后(和正常创建使用一样,只是相应创建选择目录不一样而已),创建其他项目配置的时候可以直接选择引用,当修改配置时也只会在当前项目配置上覆盖而已不用担心通用配置:

  1. 创建公共namespace
    在这里插入图片描述
  2. 其他项目选择通用配置(在对应项目配置中点击添加namespace):
    选择namespace

七. 灰度配置:

通过灰度发布功能,可以实现:

  • 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置
  • 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置
  1. 添加灰度节点:
    添加灰度节点

  2. 修改灰度配置并发布:
    灰度发布
    之后对应节点就会生效了。

  3. 测试验证(小熙这里只有一个节点访问了,所以测试的也是这个唯一节点,有条件的话可以测试分开):
    测试灰度结果

八. 后语:

以上就是小熙关于apollo简单并深入的分享了,下篇继续分享apollo架构以及源码相关。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐