apollo配置中心入门实践

说明:

(如果微服务开发没有严格统一的代码开发规范,不建议采用apollo,否则只会更浪费时间在一堆配置上)

通常情况下,我们无论是但模块开发,还是微服务多模块开发,都采用springboot一个个模块,每个模块服务中都有一个一个配置文件,application.yml或者application.properties。
每个配置文件中都设置 端口号、服务名称,mysql、redis等其他一些中间件的连接信息,这样虽然方便开发,但是在正式部署的情况下,或造成一些问题:

第一:配置文件跟随jar包运行,不加密的情况下容易导致数据库和中间件账号密码等关键信息暴露
第二:服务模块大规模集群情况下,每个都有大部分相同的配置,重复配置
第三:如果需要改配置信息,需要重新部署发布应用才能生效

apollo配置可以动态更新配置,利用namespaces可以把公用配置抽取出来,如mysq密码连接方式,elasticsearch、redis、naocs、rocketmq等中间件

apollo有三个模块:

在这里插入图片描述

apollo-configservice:配置中心(默认端口8080),和springboot进行连接的配置中心,里面还包含了Eureka注册中心
apollo-adminservice:管理中心(默认端口8090)。提供配置的修改、发布等功能,服务对象是 Apollo Portal(管理界面)
apollo-portal:提供Web界面的服务(默认端口8070),启动成功后,可以打开http://localhost:8070/登录web界面,默认账号密码是apollo/admin

概念:

Apollo支持4个维度管理Key-Value格式的配置:
● application (应用),即 app.id 参数
● environment (环境)
● cluster (集群)
● namespace (命名空间)

(1)、application

● Apollo 客户端在运行时需要知道当前应用是谁,从而可以根据不同的应用来获取对应应用的配置。
● 每个应用都需要有唯一的身份标识,可以在代码中配置 app.id 参数来标识当前应用,Apollo 会根据此指来辨别当前应用。

(2)、environment

Apollo 中默认提供了四种环境:
● FAT(Feature Acceptance Test):功能测试环境
● UAT(User Acceptance Test):集成测试环境
● DEV(Develop):开发环境
● PRO(Produce):生产环境
在程序中如果想指定使用哪个环境,可以配置变量 env 的值为对应环境名称即可

(3)、cluster

● 一个应用下不同实例的分组,比如典型的可以按照数据中心分,把上海机房的应用实例分为一个集群,把北京机房的应用实例分为另一个集群。
● 对不同的集群,同一个配置可以有不一样的值,比如说上面所指的两个北京、上海两个机房设置两个集群,两个集群中都有 mysql 配置参数,其中参数中配置的地址是不一样的。

(4)、namespace

配置环境分类,比如jdbc、redis、es分为不同的名称空间,可以把它当成分组的概念,假设A服务同时间需要jdbc、redis、mq的配置,就直接在application.yml中配置多个名称空间配置即可
在这里插入图片描述
在这里插入图片描述

apollo中间件部署

需要先安装JDK1.8+ 和mysql5.7+环境,apollo的三个模块依赖他们,且需要导入apollo设计的数据库和表

参考:官方部署文档 https://www.apolloconfig.com/#/zh/deployment/quick-start

sprinboot使用:

(1)引入依赖:

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

(2)application.yml配置

app:
  id: demo_0306  # apollo配置的应用id,一般是一个平台下的所有jar包模块公用一个应用id
apollo:
  bootstrap:
    enabled: true # 启用apollo,或者在启动类上加上@EnableApolloConfig,一样的效果
    namespaces: application # apollo中配置的空间名称
  meta: http://192.168.13.21:8080  # apollo配置服务Config Services模块的连接信息,端口默认是8080

其他更多参数设置说明

#Apollo 配置
app:
  id: apollo-test                            #应用ID
apollo:
  cacheDir: /opt/data/                       #配置本地配置缓存目录,一旦配置中心失联,可以保证可用
  cluster: default                           #指定使用哪个集群的配置
  meta: http://192.168.2.11:30002            #DEV环境配置中心地址
  autoUpdateInjectedSpringProperties: true   #是否开启 Spring 参数自动更新
  bootstrap:                                
    enabled: true                            #是否开启 Apollo
    namespaces: application                  #设置 Namespace
    eagerLoad:
      enabled: false                         #将 Apollo 加载提到初始化日志系统之前

其他:

动态配置的局限:

端口号没法自动更新,就算开启了autoUpdateInjectedSpringProperties:true,也不行
除了 server.port 外,还有一些配置参数是无法通过动态更新实现的,包括但不限于:

  1. 应用程序日志级别:通常应用程序的日志级别在应用启动时已经确定,无法通过动态更新配置参数来实现实时调整日志级别。
  2. 数据库连接信息:数据库连接信息如数据库地址、用户名、密码等通常在应用启动时已经加载并建立连接,无法通过动态更新配置参数来实现实时更改数据库连接信息。
  3. 安全相关配置:涉及安全认证、权限控制等敏感配置通常在应用启动时已经加载并生效,无法通过动态更新配置参数来实现实时更改。
  4. 静态资源路径:应用程序的静态资源路径通常在应用启动时已经确定,无法通过动态更新配置参数来实现实时更改静态资源路径。
    这些配置参数一般需要在应用启动时确定,并且涉及到应用程序的核心功能或安全性,因此无法通过动态更新配置参数的方式来实现实时更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/717129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D元宇宙虚拟主播引领文旅产业迈向更加美好的未来!

随着文旅产业的蓬勃发展&#xff0c;3D数字代言人的应用正逐渐改变着传统的文旅传播方式。文旅3D数字代言人搭建编辑器的出现&#xff0c;正是满足大部分文旅产业借助数字人浪潮&#xff0c;将传统文化与现代科技完美融合的创新之举。 文旅3D数字代言人搭建编辑器不仅满足了Z世…

TQZC706开发板教程:10G光口ping测试

资源分享链接&#xff1a;https://pan.baidu.com/s/1zoUFCXx34qT8lm13YyyOxw提取码&#xff1a;k77h 调整右下角的拨码开关为↑↓↓↑↑ 从原理图中可以看出设置为156.25MHz&#xff0c;10Gige模式 启动模式设置为SD模式&#xff0c;把提供的文件复制到SD卡中&#xff0c;插上…

EasyRecovery2024汉化免费版电脑数据恢复软件下载

亲爱的小伙伴们&#xff0c;今天我要给大家分享一个超级好用的电脑数据恢复软件——EasyRecovery&#xff01;&#x1f310;✨ 相信很多人都遇到过误删文件、格式化硬盘等尴尬情况吧&#xff1f;别担心&#xff0c;有了EasyRecovery&#xff0c;这些问题都能迎刃而解啦&#xf…

树形喇叭状异形创意LED显示屏正在成为设计师们手中的神来之笔

异形创意LED显示屏以其独特的形状和强大的视觉冲击效果&#xff0c;正逐渐改变着我们的视觉体验。不同于传统的矩形、平面板状的LED显示屏&#xff0c;异形屏以其形状各异、造型奇特的特点&#xff0c;为商业显示、展览展示、文旅旅游等行业带来了全新的变化。本文将重点介绍异…

32、循环语句while+until

一、循环控制语句 双层循环和循环语句的使用&#xff0c;while和until的语法使用 1.1、echo 打印 continue&#xff1a;跳出当次&#xff0c;后续的条件成立&#xff0c;继续执行。 break&#xff1a;一旦break&#xff0c;后续的条件不再执行。 exit&#xff1a;满足条件…

基于Django的博客系统之增加手机验证码登录(九)

需求文档 概述 实现基于Redis和第三方短信服务商的短信验证码登录功能。用户可以通过手机号码获取验证码&#xff0c;并使用验证码进行登录。 需求细节 用户请求验证码 用户在登录页面输入手机号码并请求获取验证码。系统生成验证码并将其存储在Redis中&#xff0c;同时通过…

设备保养计划不再是纸上谈兵,智能系统让执行更到位!

在物业管理的日常工作中&#xff0c;我们常常听到“设备保养台账”“设备保养计划”“设备保养记录”等等这些词&#xff0c;但你是否真正了解它们的含义&#xff1f;是否知道一个完善的设备保养计划、记录、台账对于物业运营的重要性&#xff1f;今天&#xff0c;我们就来深入…

一个开源的快速准确地将 PDF 转换为 markdown工具

大家好&#xff0c;今天给大家分享的是一个开源的快速准确地将 PDF 转换为 markdown工具。 Marker是一款功能强大的PDF转换工具&#xff0c;它能够将PDF文件快速、准确地转换为Markdown格式。这款工具特别适合处理书籍和科学论文&#xff0c;支持所有语言的转换&#xff0c;并…

【AI绘画】文心一格

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】

0.零基础入门微服务实战课 1.微服务和 Spring Cloud1.1 什么是微服务&#xff1f;1.2 什么是 Spring Cloud&#xff1f;1.3 微服务 VS Spring Cloud 2.为什么要学微服务&#xff1f;3.Spring Cloud 组件介绍1.什么是 Nacos?1.1 Nacos 功能1.1.1 配置中心1.1.2 注册中心 1.2 Na…

openlayers 使用WMTS和XYZ加载天地图切片服务

openlayers 使用WMTS和XYZ加载天地图切片服务 本篇介绍一下使用openlayers加载天地图切片&#xff0c;两种方法&#xff1a; 使用WMTS使用XYZ 1 需求 openlayers加载天地图 2 分析 主要是不同类型source的使用 WMTS&#xff08;Web Map Tile Service&#xff09; 是 OGC…

《地下城与勇士》新手攻略,开荒必备!云手机多开教程!

《地下城与勇士》&#xff08;DNF&#xff09;是一款广受欢迎的多人在线动作角色扮演游戏。玩家将在游戏中扮演不同职业的角色&#xff0c;通过打怪、做任务、PK等方式不断提升自己&#xff0c;探索广阔的阿拉德大陆。游戏中设有丰富的副本、装备、技能系统&#xff0c;玩家可以…

ESP32-S3芯片的Strapping管脚功能描述

文章目录 一、Strapping管脚是什么&#xff1f;二、ESP32-S3芯片的Strapping管脚总体描述三、ESP32-S3芯片的Strapping管脚具体功能描述1、芯片启动模式控制2、VDD_SPI 电压控制3、ROM 日志打印控制4、JTAG 信号源控制 一、Strapping管脚是什么&#xff1f; 芯片每次上电或复位…

销售如何提高回复客户消息的速度?

在如今竞争激烈的商业环境中&#xff0c;能够快速回复客户消息是维护客户关系和提升用户体验的重要一环。尤其是对于很多企业或是销售客服人员来说&#xff0c;及时回复客户的咨询和反馈&#xff0c;能够有效增强客户的粘性和满意度。 那么怎样才能快速回复客户消息呢&#xf…

sklearn 基础教程

scikit-learn&#xff08;简称sklearn&#xff09;是一个开源的机器学习库&#xff0c;它提供了简单和有效的数据分析和数据挖掘工具。sklearn是Python语言中最重要的机器学习库之一&#xff0c;广泛用于统计学习和数据分析。 以下是scikit-learn的基础教程&#xff0c;帮助您开…

洗地机怎么选?洗地机哪个品牌比较好?四款实力超牛的单品推荐

随着生活节奏的加快&#xff0c;家庭清洁已经成为许多人面临的一大挑战。传统的扫地和拖地方式不仅耗时耗力&#xff0c;还难以彻底清洁每一个角落。家用洗地机的出现&#xff0c;为人们的家庭提供了一个全新的清洁解决方案。然而&#xff0c;在选择合适的洗地机时&#xff0c;…

示例:WPF中DataGrid简单设置合并列头

一、目的&#xff1a;应用DataGridTemplateColumn列模板&#xff0c;去拆分列头和单元格布局的方式设置列头合并样式 二、实现 效果如下 三、环境 VS2022 四、示例 应用DataGridTemplateColumn自定义列头信息和单元格信息 <DataGrid AutoGenerateColumns"False"…

一分钱不花!本地部署Google最强开源AI大模型Gemma教程

谷歌发布了轻量级开源系列模型Gemma&#xff0c;其性能强大&#xff0c;可与主流开源模型竞争。通过Ollama可轻松部署Gemma模型&#xff0c;并使用JANAI美化UI界面。显卡在AIGC应用中至关重要&#xff0c;推荐选择性能强、显存大的NVIDIA系列显卡。 半个月前&#xff0c;谷歌搞…

echarts引入百度地图vue3(大屏项目中缩放点偏移到左上角,解决代码在最后)

实际开发中的问题&#xff0c;遇到了大屏做了自适应&#xff0c;为非标准文档流之后&#xff0c;在缩放时不是以鼠标当前位置缩放的&#xff0c;而是偏移到左上角。 向百度地图提了工单也没解决&#xff0c;同一套适应方案用cesium地图时缩放没问题&#xff1a; 先看看效果&am…

数字人全拆解:如何构建一个基于大模型的实时对话3D数字人?

简单地说&#xff0c;数字人就是在数字世界的“人”。当前语境下我们谈到的数字人通常指的是借助AI技术驱动的虚拟世界人物&#xff0c;具备与真实人类相似甚至接近的外形、感知、交互与行为能力。 AI技术在智能数字人的应用中举足轻重&#xff0c;特别是随着大模型能力的涌现…