Apollo SpringBoot 客户端使用

2023-10-30

1.简介

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

服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持

 

2.环境要求

  • Java: 1.7+

3.Apollo后台管理平台使用

 

3.1 演示环境(Demo)

 

 

3.2 项目配置

 

1、选择需要配置的环境

2、把项目的application*.properties  属性复制一份放到‘文本’进行发布,步骤如下图

 

注意

  1. 配置文件发布之后,服务重启之后才会生效。
  2. 如果发布的属性存在相同的key 则会发布失败同时还不会保存你修改了的配置。
  3.  如果是application.yml可以使用YamlPropertiesFactoryBean.getObject转成properties格式

4.系统配置说明

Apollo客户端依赖于AppIdApollo Meta Server等环境信息来工作,所以请确保阅读下面的说明并且做正确的配置:

4.1 客户端环境配置

4.1.1 文件server.properties存放路径

 

  1. 对于Mac/Linux,文件位置为/opt/settings/server.properties
  2. 对于Windows,文件位置为C:\opt\settings\server.properties

 

4.1.2  server.properties文件内容

 

apollo.meta:   表示从改apollo 服务端拉取配置的信息

env :          表示从apollo 服务端某个环境环境拉取配置

apollo.cacheDir:表示Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

      本地缓存路径默认位于以下路径,所以请确保/opt/data或C:\opt\data\目录存在,且应用有读写权限。

 

Mac/Linux: /opt/data/{appId}/config-cache

Windows: C:\opt\data\{appId}\config-cache

 

4.2 系统配置

4.2.1  Maven依赖

 

<dependency>

        <groupId>com.ctrip.framework.apollo</groupId>

        <artifactId>apollo-client</artifactId>

        <version>1.2.0</version>

 </dependency>

需要1.2.0及其以上

4.2.2  启动类标签配置

@EnableApolloConfig

需要在application启动类上加上此注解才会生效

 

4.2.3  Apollo读取AppId

AppId:应用的身份信息,每个应用必须唯一,是从服务端获取配置的一个重要信息

AppId配置

项目启动apollo会读取appId,去远端拉最新配置文件。AppId可以通过集中方式配置;

4.2.3.1可以通过Java的System Property 指定appId

例如:

4.2.3.2 Spring Boot application.properties指定appId

app.id=YOUR-APP-ID

该配置方式不适用于多个war包部署在同一个tomcat的使用场景

4.2.3.3 放在resource目录下的META-INF的app.properties

必须放在META-INF目录下,文件名为app.properties
例如:

4.2.4  日志配置

4.2.4.1项目日志配置

由于日志配置的加载顺序大于application.yml的配置,所以在读取apollo配置之前日志加载就完成了,需要把apollo的加载顺序提到日志之前就需要如下配置:

# will inject 'application' namespace in bootstrap phase
apollo.bootstrap.enabled = true
# put apollo initialization before logging system initialization
apollo.bootstrap.eagerLoad.enabled=true

Apollo 1.2.0及其以上的版本才支持该配置。

 

4.2.4.2 项目日志路径配置

 

  1. 项目日志文件路径配置

 

logback.loghome = logPath

 

日志文件

 

  1. SpringBoot 内置tomcat的日志配置

 

server.tomcat.uri-encoding = UTF-8

server.tomcat.max-threads = 1000

server.tomcat.max-connections = 1500

server.tomcat.accesslog.enabled = true

server.tomcat.accesslog.directory = /volume_logs

server.tomcat.accesslog.file-date-format = .yyyyMMdd

server.tomcat.accesslog.prefix = api-access.log

server.tomcat.accesslog.suffix =

server.tomcat.accesslog.pattern = [%{yyyy-MM-dd HH:mm:ss.SSS}t] %h %l %u "%r" %s %b

server.tomcat.basedir = /volume_logs

 

5获取配置属性

5.1通过Spring自带的@Value注解获取

 

5.2通ConfigService.getAppConfig()

6 添加公用namespace

6.1 在项目A选择添加namespace

6.2 创建公用的namespace

 

6.3 在项目B 使用项目A 创建的公用namespace

需要在application.yml文件下配置

apollo:

  bootstrap:

    enabled: true

    namespaces: application,testApplication

    eagerLoad:

      enabled: true

如果项目B引用了项目A的公用namespace ,若存在相同的key 项目B 则会覆盖项目A  key的value。

 

附录

 

Apollo Java客户端使用指南:

 

https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97#3213-spring-boot%E9%9B%86%E6%88%90%E6%96%B9%E5%BC%8F%E6%8E%A8%E8%8D%90

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apollo SpringBoot 客户端使用 的相关文章

随机推荐

  • 域名系统和 DNS

    目录 1 名字解析介绍和DNS 1 2 DNS服务工作原理 1 3 DNS查询类型 1 4 名称服务器 1 5 解析类型 1 6 完整的查询请求经过的流程 2 DNS 服务相关概念和技术 2 1 DNS服务器的类型 2 1 1 主DNS服务
  • 人工智能知识全面讲解:机器学习的过程

    1 3 1 机器学习的三个阶段 学习了机器学习的概念后 我们知道机器学习实际上就是计算机通过算法 处理数据并且学得模型的过程 模型 这个词经常被我们挂在嘴边 但大部 分人仍然不清楚模型是怎么做出来的 模型在计算机里是怎么表示的 对模型 很难
  • linux中的无人职守安装脚本kickstart

    一 kickstart自动安装脚本的作用 在企业中安装多台操作系统时面临的问题 当安装Linux操作系统时 安装过程会需要回答很多关于设定的问题 这些问题必须手动选择 否则无法进行安装 当只安装1台Linux系统 手动选择设定工作量比较轻松
  • 使用Go语言实现百度网盘样的云存储系统

    目录 1 项目概述 2 开始项目 3 用户服务 4 文件服务 5 结语 欢迎来到这篇关于使用Go语言实现云存储系统的博客 在这篇博客中 我们将讨论如何使用Go语言和一些常见的开源库 实现一个简单的云存储系统 这个系统将包含用户注册 登录 上
  • m1 mac 使用 obs + BlackHole 内录电脑音频

    直接 obs 是内录不了的 由于 macOS 的限制 无法获取桌面音频 于是使用 BlackHole Github 工具 该方案的原理是将电脑音频同时输出到你的设备 耳机 扬声器等 BlackHole 然后让 OBS 获取 BlackHol
  • Lambda表达式【C++语法】

    C L a m b d a
  • 测试驱动开发(TDD)实践与技巧

    文章目录 引言 Google Mock 测试用例结构 断言 经典式断言 Hamcrest 断言 测试驱动开发 第一个示例 开场白 开始吧 去掉不干净的代码 增量性 fixture 设置 思索与测试驱动开发 测试驱动与测试 测试驱动开发基础与
  • Android app多渠道打包的流程与源代码示例

    Android app多渠道打包的流程与源代码示例 多渠道打包是指通过一次构建过程生成适用于不同应用商店 市场或渠道的多个APK文件 这样可以方便开发者将应用同时发布到多个平台上 提高应用的覆盖率和下载量 本文将介绍实现多渠道打包的步骤 并
  • 静态路由实验(思科Cisco)

    思科静态配置命令 静态路由的配置命令如下 router config ip route 目的网络 网络掩码 下一跳地址 出接口 默认路由的配置命令如下 router config ip route 0 0 0 0 0 0 0 0 下一跳地址
  • kali linux之手动漏洞挖掘三(sql注入)

    服务器端程序将用户输入作为参数作为查询条件 直接拼写sql语句 并将结果返回给客户端浏览器 如判断登录 select from users where user uname and password pass select from use
  • 看完这篇 教你玩转渗透测试靶机vulnhub——DC7

    Vulnhub靶机DC7渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 SSH登入 漏洞发现与利用 提权 获取flag Vulnhub靶机渗透总结 Vulnhub靶
  • 使用C#编写程序屏蔽键盘输入

    使用C 编写程序屏蔽键盘输入 在C 中 我们可以使用System Windows Forms命名空间下的Keyboard类来实现屏蔽键盘输入的功能 下面是一段示例代码 演示了如何屏蔽键盘输入 using System using Syste
  • Java自学视频整理

    1 Java基础视频 张孝祥JAVA视频教程 完整版 RMVB 东西网 历经5年锤炼 史上最适合初学者入门的Java基础视频 传智播客 张孝祥2010年贺岁视频 Java高新技术 传智播客 Java多线程与并发库高级应用 传智播客 尚学堂J
  • 区块链自定义节点

    本地自定义节点 1 cmd中 安装好geth后 cmd geth help 检查是否geth是否安装好 然后输入命令geth datadir testNet dev rpc console 自定义本地的节点 2 metaMask 再在met
  • SOCKET套接字

    操作系统提供 用于开发网络应用的一系列API函数接口 可以称为套接字函数 所有的系统平台都有对SOCKET套接字的兼容和实现 虽然网络环境中有大量的协议类型 但是绝大多数协议都是采用TCP和UDP 也就是说很多软件或网站的访问与链接一样使用
  • Java+SSM+Vue 毕业设计 汽车租赁系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 3 系统结构设计 4 项目获取 1 项目简介 Hi 各位同学好呀 这里是M学姐 今天向大家分享一个今年 2022 最新完成的毕业设计项
  • Linux内核的Oops

    简介 什么是Oops 从语言学的角度说 Oops应该是一个拟声词 当出了点小事故 或者做了比较尴尬的事之后 你可以说 Oops 翻译成中国话就叫做 哎呦 哎呦 对不起 对不起 我真不是故意打碎您的杯子的 看 Oops就是这个意思 在Linu
  • kubernetes介绍和安装(1.25版本)

    kubernetes介绍和安装 1 25版本 K8S 是什么 K8S官网文档 https kubernetes io zh docs home K8S 是Kubernetes的全称 源于希腊语 意为 舵手 或 飞行员 基于go语言开发 官方
  • 二、读取编码器数值实现电机测速—2 、配置编码器;

    读取编码器数值实现电机测速 电机系列 二 读取编码器数值实现电机测速 2 配置编码器 encoder h encoder c main c 3 测速 电机系列 二 读取编码器数值实现电机测速 2 配置编码器 encoder h ifndef
  • Apollo SpringBoot 客户端使用

    1 简介 Apollo 阿波罗 是携程框架部门研发的分布式配置中心 能够集中化管理应用不同环境 不同集群的配置 配置修改后能够实时推送到应用端 并且具备规范的权限 流程治理等特性 适用于微服务配置管理场景 服务端基于Spring Boot和