Apollo的部署和动态配置基础使用

一. 前言:

继上篇Zuul网关之后,小熙后补一下动态配置吧。目前较为流行的是apollonacos,今天就先介绍一下apollo的动态配置基础使用吧。

二. 简介:

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

三. 准备配置数据:

  1. 下载apollo相关启动文件:
    从github上下载相关配置文件,小熙之前下载的是1.7.1的,大家可以根据下载地址自行选择:apollo版本下载地址

    示例如图:Apollo的部署和动态配置基础使用_第1张图片

  2. 配置相关数据库:
    在apollo上下载相关sql文件,并在数据库中执行。
    sql下载地址(建议数据库版本mysql 5.7以上,如果以下会有一些语法和规范需要修改)

    (1)下载sql文件示意图:
    Apollo的部署和动态配置基础使用_第2张图片
    (2)安装sql示意图:
    Apollo的部署和动态配置基础使用_第3张图片

四. 安装配置并启动:

小熙是在本地的虚拟机中安装配置的,大家也可以购买远程服务器安装(如阿里服务器)。

  1. 上传远程服务器:

    示例如图: Apollo的部署和动态配置基础使用_第4张图片

  2. 修改配置文件:

    修改这三个服务中的application-github.properties文件。
    adminServiceconfigService服务中将数据库配置连接到,执行apolloconfigdb.sql的数据库中。
    portal服务中将数据库配置连接到,执行apolloportaldb.sql的数据库中。

    连接配置示例图:
    Apollo的部署和动态配置基础使用_第5张图片

  3. 启动相关配置:

    (1)先启动 configService(至于为什么后续进阶篇会详解apollo相关架构)

    启动示例图:
    Apollo的部署和动态配置基础使用_第6张图片
    在后续可能会报异常,不用担心,这是他内置eureka自己注册自己要等一会。

    报错示意图:
    Apollo的部署和动态配置基础使用_第7张图片
    等一会eureka启动正常示例图:
    Apollo的部署和动态配置基础使用_第8张图片
    (2)接着在adminServiceprotal服务中如法炮制一样,启动对应startup.sh脚本

    (3)如果这个脚本在执行时出现换行等错误或者/bin/sh^M: 坏的解释器: 没有那个文件或目录错误,可以用以下方式解决(这种应是在windos中编辑修改过):
    解决方案:

    sed -i 's/\r$//' fileName
    sed -i 's/\r$//' startup.sh
    
  4. 访问apollo:
    这三个服务中,portal服务时对外提供前端服务的,所以要访问该服务的ip和端口(默认8070)
    账号默认:apollo,密码默认:admin (可以修改配置表修改相关)

    访问示例图:
    Apollo的部署和动态配置基础使用_第9张图片

五. 创建应用配置:

这里小熙用微服务中的用户消费端举例

  1. 创建用户消费端配置:
    这里小熙之前已经配置过了,就展示下编辑页面的详情。

    配置示例图:
    Apollo的部署和动态配置基础使用_第10张图片

  2. 添加用户消费端相关配置:

    直接添加相关配置就好,相较于nacos,目前不支持yml配置确实是硬伤,但是可以用线上转换工具转换下。

    示例图:
    Apollo的部署和动态配置基础使用_第11张图片

六. 测试验证动态配置:

  1. 启动eurekauser_consumer服务(这里小熙的eureka启动两个点)

    (1)user_consumer服务中引入apollo相关坐标:

            <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-core</artifactId>
                <version>1.9.0</version>
            </dependency>
    

    (2)user_consumer的启动类上需加上apollo启动配置
    示例图:
    Apollo的部署和动态配置基础使用_第12张图片

    (3)user_consumer服务配置:

    # apollo.bootstrap.enabled=true表示Apollo在程序初始化的时候就开始注入,并下载对应的配置信息。
    apollo:
      bootstrap:
        # 如果设置为false或者取消会导致某些配置错误
        enable: true
        # apollo.bootstrap.namespace 表示加载Apollo的namespace的内容。采用英文,连接表示多个namespace
        namespaces: application
      meta: http://192.168.186.129:8080
    spring:
      locale:
        ## 多语言默认设置。在Apollo中配置的无法生效,只能在application.properties配置
        default: zh_CN
    app:
      # apollo上配置的相关应用id
      id: user-consumer-config
    
  2. 查看eureka配置:
    示例图:
    Apollo的部署和动态配置基础使用_第13张图片

    如图用户消费端已经注册到eureka上,所以读取远程apollo配置成功。

  3. 编写api动态获取配置数据:
    示例图:
    Apollo的部署和动态配置基础使用_第14张图片
    (1)当修改apollo配置之前postman获取示例图:
    Apollo的部署和动态配置基础使用_第15张图片
    (2)修改apollo数据,截图为修改中的示例图:
    Apollo的部署和动态配置基础使用_第16张图片

    (3)当修改配置之后示例图:
    Apollo的部署和动态配置基础使用_第17张图片
    其实能够马上生效,也是apollo内部的推送机制实现的,也是通过内部注册中心拉取相关实例。(后续详谈)

六. 结语:

以上就是小熙介绍的,apollo的基础使用的相关说明了,下篇再介绍相关apollo多环境多集群以及灰度等相关。

你可能感兴趣的:(Springcloud基础实战,配置中心,apollo)