本文基于java开发

<apollo.version>2.2.0</apollo.version>

一、apollo

这个官方文档我只能说 聊胜于无
好吧还是离不开这玩意
开发指南

文中主要内容为apollon部署内容,客户端使用方法

1、基础

这玩意就和nacos类似,但是有灰度发布和权限流程的管理。本身还包含了一个eurka做注册中心,你可以将eurka提换到自己的注册服务

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

特点(只说比较独特的)

  • 灰度发布(例如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。)
  • 配置项的全局视角搜索
  • 权限管理、发布审核、操作审计
  • 提供Java和.Net原生客户端
  • Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。(但是他强行依赖于)

2、概念

核心服务

apollo-portal

apollo-adminservice

apollo-configservice

3、Spring整合基础配置

前提 :Spring整合(Spring 3.1.1+)

maven

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

主类注解

@EnableApolloConfig

本地连接远端配置

apollo:
  meta:
  bootstrap:
    enabled: true
    namespaces: application.properties
  cluster: DEFAULT
  config-service:  服务地址
app:
  id: 唯一id

服务器中配置

apollo:
  meta: 服务地址
  bootstrap:
    enabled: true
    namespaces: application.properties
  cluster: DEFAULT

app:
  id: 唯一id
  

官方文档中也可基于XMl或者JAVA配置

需要注意的是,如果之前有使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的,请替换成org.springframework.context.support.PropertySourcesPlaceholderConfigurer。Spring 3.1以后就不建议使用PropertyPlaceholderConfigurer了,要改用PropertySourcesPlaceholderConfigurer。
如果之前有使用context:property-placeholder,请注意xml中引入的spring-context.xsd版本需要是3.1以上(一般只要没有指定版本会自动升级的),建议使用不带版本号的形式引入,如:http://www.springframework.org/schema/context/spring-context.xsd

4、配置多环境Apollo

apollo本身是由一个前台客户端服务,一个config服务,一个admin注册中心,

多个环境其实是多个config服务,一个config服务就代表一个环境,

每有一个config服务就需要搭配一个apolloconfigd数据库

在apollo-portalf服务下 apollo-env.properti文件中配置不同环境的地址

在这里插入图片描述

二、单体配置

2.1、单体服务端apollo-quick-start

单体不支持多环境,启动超时时加长时间设置即可

前提

Apollo服务端:1.8+
Apollo客户端:1.8+ 如需运行在 Java 1.7 运行时环境,请使用 1.x 版本的 apollo 客户端,如 1.9.1
Mysql 5.6.5以上版本。

下载安装包,直接整个全部下载下来
https://github.com/apolloconfig/apollo-quick-start
将下面两个sql,apolloconfigdb.sql ,apolloportaldb.sql 分别执行,各建一个数据库
https://github.com/apolloconfig/apollo/tree/master/scripts/sql/profiles/mysql-default

修改demo.sh脚本 不同版本的脚本内容有可能不同 主要改动就是设置上面两个数据库的地址密码和

export SPRING_CONFIG_DATASOURCE_URL="jdbc:mysql://your-mysql-server:3306/ApolloConfigDB?useUnicode=true&characterEncoding=UTF8"
export SPRING_CONFIG_DATASOURCE_USERNAME="apollo-username"
export SPRING_CONFIG_DATASOURCE_PASSWORD="apollo-password"

export SPRING_PORTAL_DATASOURCE_URL="jdbc:mysql://your-mysql-server:3306/ApolloPortalDB?useUnicode=true&characterEncoding=UTF8"
export SPRING_PORTAL_DATASOURCE_USERNAME="apollo-username"
export SPRING_PORTAL_DATASOURCE_PASSWORD="apollo-password"
java -jar apollo-all-in-one.jar

使用 git bash启动脚本
在这里插入图片描述
启动

./demo.sh start

stop关闭

client

注意启动的时候会产生日志文件,如果启动没成功请看 apollo-service.log文件,就在项目根目录下

其他内容不管,只要出现了 地址 now就代表成功了

在这里插入图片描述

在这里插入图片描述

2.2、单体服务端java demo验证

注: 出现这个错误是因为版本问题需要要jdk11版本

ch/qos/logback/classic/spi/LogbackServiceProvider has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

第一步下载demo

demo地址https://github.com/apolloconfig/apollo-demo-java

在这里插入图片描述

第二步下载配置demo
  1. apollo-demo-java/api-demo/src/main/resources/META-INF/app.properties目录下配置 app.id= 值随便

  2. 在服务端创建项目,点击创建应用 ,Appid一定要和demo配置的一样

注:AppId是应用的唯一身份标识,Apollo客户端使用这个标识来获取应用自己的私有Namespace配置。
对于公共Namespace的配置,没有AppId也可以获取到配置,但是就失去了应用覆盖公共Namespace配置的能力。

  1. 创建运行配置新建Application
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    main class : com.apolloconfig.apollo.demo.api.SimpleApolloConfigDemo
    vm:-Dapollo.meta=http://localhost:8080 apollo-configservice地址
第三步运行测试
  1. 点击运行
    在这里插入图片描述

  2. 在服务端创建测试数据,进入demoappid下,新建配置,

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 输入key测试,在线修改之后可以再次测试(回滚的数据即使不发布也会生效)
    在这里插入图片描述

三、docker自定义配置Apollo

官方docker部署
docker如果不需要调整系统配置直接下载镜像就行,本次调整了端口配置所以和其他文章有部分不同

docker
部署比较简单,直接下载docker镜像就可以部署了,配置一下mysql地址和域名就行吗,下文将展示需要调整Apollo配置时的docker部署

3.1、创建镜像

  • ./scripts/build.sh 打包命令(一个是windos环境打包,一个是Linux环境打包,windos环境打包需要再gitbash里面)
  • mvn docker:build -pl apollo-configservice,apollo-adminservice,apollo-portal 生成镜像命令(可以一次打一个镜像)
  • apollo-configservice
    apollo-adminservice
    apollo-portal

注意先打包(如果在本地可以直接运行target目录下的jar文件),在生成镜像,可以选择在本地打好镜像上传到自己的dockerhub上共享使用

生成镜像会产生很多冗余镜像,为生成镜像过程中使用。

3.2、启动镜像

apollo-portal 看清楚第一个,另外几个也差不多(我这里面调整了每个服务的端口号,后面调整源码请看后续文章)

docker run --hostname=4cd037f8b4bc 
--env=
SPRING_DATASOURCE_URL=数据库地址 
--env=
SPRING_PORTAL_DATASOURCE_USERNAME=数据库用户名
--env=
SPRING_PORTAL_DATASOURCE_PASSWORD=密码 
--env=
PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
--env=JAVA_HOME=/usr/local/openjdk-8 
--env=LANG=C.UTF-8 
--env=JAVA_VERSION=8u342 
--env=APOLLO_RUN_MODE=Docker 
--env=SERVER_PORT=9070 
--network=bridge 
-p 9070:9070 
--restart=no 
--label='邮箱' --runtime=runc -d apolloconfig/apollo-portal:2.2.0

apollo-configservice

docker run 
--hostname=71baece4df44 
--env=SPRING_DATASOURCE_URL=
--env=SPRING_DATASOURCE_USERNAME=
--env=SPRING_DATASOURCE_PASSWORD=
--env=eureka.service.url=http://192.168.56.1:9080/eureka 
--env=eureka.instance.home-page-url=http://192.168.56.1:9080 
--env=PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
--env=JAVA_HOME=/usr/local/openjdk-8 
--env=LANG=C.UTF-8 
--env=JAVA_VERSION=8u342 
--env=APOLLO_RUN_MODE=Docker 
--env=SERVER_PORT=9080 --network=bridge -p 9080:9080 
--restart=no --label='maintainer=g632104866@gmail.com;finchcn@gmail.com;ameizi<sxyx2008@163.com>' 
--runtime=runc 
-d apolloconfig/apollo-configservice:2.2.0

apollo-adminservice

docker run 
--hostname=0324f0eddcde 
--env=SPRING_DATASOURCE_URL=
--env=SPRING_DATASOURCE_USERNAME=
--env=SPRING_DATASOURCE_PASSWORD=
--env=PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=JAVA_HOME=/usr/local/openjdk-8 
--env=LANG=C.UTF-8 
--env=JAVA_VERSION=8u342 
--env=APOLLO_RUN_MODE=Docker 
--env=SERVER_PORT=9090 
--network=bridge -p 9090:9090 --restart=no 
--label='' 
--runtime=runc 
-d apolloconfig/apollo-adminservice:2.2.0
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐