apollo配置中心入门实践

news2024/12/23 9:29:05

说明:

(如果微服务开发没有严格统一的代码开发规范,不建议采用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. 静态资源路径:应用程序的静态资源路径通常在应用启动时已经确定,无法通过动态更新配置参数来实现实时更改静态资源路径。
    这些配置参数一般需要在应用启动时确定,并且涉及到应用程序的核心功能或安全性,因此无法通过动态更新配置参数的方式来实现实时更改。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

想要做好短视频?这5大关键点你知道吗?沈阳短视频剪辑培训

在新媒体运营中&#xff0c;短视频已成为抓住观众注意力的重要工具。制作成功的短视频需要细心规划和精确执行。今天小编就围绕做好短视频的五大关键点&#xff0c;为大家进行详细解析&#xff0c;帮助您提升视频的吸引力和效果。 做好短视频的5大关键点 01内容策划&#xff1…

docker通过容器id查看运行命令;Portainer监控管理docker容器

1、docker通过容器id查看运行命令 参考&#xff1a;https://blog.csdn.net/a772304419/article/details/138732138 docker inspect 运行镜像id“Cmd”: [ “–model”, “/qwen-7b”, “–port”, “10860”, “–max-model-len”, “4096”, “–trust-remote-code”, “–t…

【CMU 15-445】Proj3 Query Execution

Query Execution 通关记录Task1 Access Method ExecutorsSeqScanInsertUpdateDeleteIndexScanOptimizing SeqScan to IndexScan Task2 Aggregation & Join ExecutorsAggregationNextedLoopJoin Task3 HashJoin Executor and OptimizationHashJoinOptimizing NestedLoopJoin…

两台电脑如何建立局域网?三种简便方法推荐

方法一&#xff1a;使用网线直接连接 1、准备一根网线&#xff0c;长度不宜过长&#xff08;建议不要超过80米&#xff0c;否则信号会衰减&#xff09;&#xff0c;确保两台电脑相邻或距离较近。 2、将网线的一头插入一台电脑的网口&#xff0c;另一头插入另一台电脑的网口。 …

MATLAB直方图有关函数的关系

histogram Histogram plot画直方图 histcounts 直方图 bin 计数 histcounts是histogram的主要计算函数。 discretize 将数据划分为 bin 或类别 histogram2 画二元直方图 histcounts2 二元直方图 bin 计数 hist和histc过时了。替换不建议使用的 hist 和 histc 实例 hist → \r…

26. 一个反射远照相物镜的设计

导论&#xff1a; 反摄远照相物镜是一类照相物镜的统称&#xff0c;他们的共同特点是有一个负光焦度的前组&#xff0c;和一个正光焦度的后组&#xff0c;至于前组和后组的具体结构&#xff0c;种类繁多。 反摄远物镜能同时实现大视场和大相对孔径&#xff0c;这类系统的长度…

工厂方法模式实战之某商场一次促销活动

目录 1.5.1、前言1.5.2、实战场景简介1.5.3、开发环境1.5.4、用传统的if-else语句实现1.5.4.1、工程结构1.5.4.2、if-else需求实现1.5.4.3、测试验证 1.5.5、工厂模式优化代码1.5.5.1、工程结构1.5.5.2、代码实现1.5.5.2.1、定义各种商品发放接口及接口实现1.5.5.2.2、定义工厂…

数据库管理-第205期 换个角度看23ai(20240617)

数据库管理205期 2024-06-17 数据库管理-第205期 换个角度看23ai&#xff08;20240617&#xff09;1 规范应用开发2 融合总结 数据库管理-第205期 换个角度看23ai&#xff08;20240617&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle ACE Pro…

MES管理系统中的质量管理活动是什么

在制造业的广阔天地中&#xff0c;质量管理如同航船的指南针&#xff0c;指引着产品品质的航行方向。而随着科技的日新月异&#xff0c;MES管理系统在质量管理领域扮演着越来越重要的角色。MES管理系统不仅连接了企业的管理层与车间生产现场&#xff0c;更在质量管理的各个环节…

开源项目大合集(热门)

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

如何让AI 帮你生成 git 提交信息

在协同开发的项目中&#xff0c;我们肯定避免不了使用git提交代码&#xff0c;所以经常会看到了一些描述不清的提交信息。当遇到种情况时&#xff0c;我们也不必为此责怪开发人员&#xff0c;因为我们确实很难记住你在 git 提交时刚刚做了什么。 Nutlope / aicommits 一个使用 …

ABBYY Finereader 15中文版安装包下载及安装教程

​ABBYY FineReader 是一款功能强大的 OCR&#xff08;Optical Character Recognition&#xff09;软件&#xff0c;可以将扫描的文档转换为可编辑的文本文件。它不仅可以识别文本&#xff0c;还可以识别表格、图像和布局&#xff0c;使得文档的转换更加准确和方便。 安 装 包 …

图像的对比度和亮度

目标 访问像素值用0来初始化矩阵cv::saturate_cast像素转换提高一张图像的亮度 原理 图像处理 图像变换可以被视作两个步骤&#xff1a; 点操纵&#xff08;像素转换&#xff09;相邻区域转换&#xff08;以面积为基础&#xff09; 像素转换 在这种图像处理的转换过程中…

【电子实验4】TDA2030功率放大电路

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

如何解决 torch.cuda.is_available()是False

目录 1. 问题2. 解决方法2.1 安装torch的CUDA版本2.1.1 查看安装的torch是什么版本2.1.2 下载GPU版本的torch 2.2 安装 NVIDIA CUDA2.2.1 下载CUDA Toolkit2.2.2 安装CUDA Toolkit 最终效果 1. 问题 在Python中&#xff0c;使用Pytorch时&#xff0c;往往会选择使用CUDA模块&a…

护眼灯对眼睛有伤害吗?千万要小心的行业四大弊端内幕

护眼灯&#xff0c;作为现代家居与办公环境中不可或缺的照明伴侣&#xff0c;因其普及性广受青睐。然而&#xff0c;随着大众对视觉健康意识的逐渐增强&#xff0c;一个疑问悄然滋生&#xff1a;护眼灯对眼睛有伤害吗&#xff1f;这一问题不仅触及到了人们对视觉健康的深层担忧…

【韩顺平零基础学java】第15章练习题

1 2. 使用方法 1.写方法 2.使用Test注解 3.点击左侧运行符号运行 3. User package com.hspedu.homework;/*** author 韩顺平* version 1.0* 该类包含&#xff1a;private成员变量&#xff08;int类型&#xff09; id&#xff0c;age&#xff1b;&#xff08;String 类型&…

grid布局的各项css说明

还有place-self,相当于justify-self与align-selft的复合属性 还有order

慎投!新增1本中科院1区顶刊被“On Hold”

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

集群初始配置

假设已经有三台或多台 Linux&#xff0c;可以是虚拟机或真实设备。如果希望使用这些 Linux 组成一个集群&#xff0c;并在上面运行一些分布式系统&#xff0c;可能需要如下操作。 1 设置静态IP 输入命令route -n打印路由表&#xff0c;可以查看网关地址。图形界面操作&#x…