常见的配置中心:Apollo(二)-接入Apollo

article/2025/8/26 5:15:09

1 配置

Apollo作为大型互联网系统生产级别的配置中心,在开发的积累当中构建了自己的配置维度体系。

1.1 配置四层维度

(1)Application(项目应用)

维度中的最顶层,在实际开发中我们一般以项目来作为最外层配置的区分维度。

(2)Environment(开发环境)

在实际开发当中从开发到上线一般都需要经过各种环境的验证的,Apollo在这个维度下根据携程实际的应用提供了若干环境:

dev:开发环境

fat:功能验收测试环境

uat:用户验收测试环境

lpt:性能测试环境

pro:生成环境

(3)cluster(集群)

一般系统可能没有这一层,但是如果大型的互联网系统则会因为本地多机房,异地多活而会出现统一环境下不同区域的部署,这个时候就需要集群这个维度来进一步细分。

(4)namespace(配置文件(命名空间))

等同于我们平常的boostrap.yml就是一个配置文件集合。

2 接入Apollo

引入依赖

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

添加配置

app:id: APOLLO_DEV                            
apollo:cacheDir: /Users/kirra/Desktop/project/logs                  cluster: default                           meta: http://127.0.0.1:8080/            bootstrap:enabled: true                            namespaces: TEST1.AUTH.yml,kafka.yml                 

app.id 应用ID

apollo.cacheDir 配置文件缓存目录

这里可以参考apollo的可用性考虑

场景影响降级原因
某台Config Service下线无影响 Config Service无状态,客户端重连其它Config Service
所有Config Service下线客户端无法读取最新配置,Portal无影响客户端重启时,可以读取本地缓存配置文件。如果是新扩容的机器,可以从其它机器上获取已缓存的配置文件,具体信息可以参考Java客户端使用指南 - 1.2.3 本地缓存路径 
某台Admin Service下线无影响 Admin Service无状态,Portal重连其它Admin Service
所有Admin Service下线客户端无影响,Portal无法更新配置  
某台Portal下线无影响 Portal域名通过SLB绑定多台服务器,重试后指向可用的服务器
全部Portal下线客户端无影响,Portal无法更新配置  
某个数据中心下线无影响 多数据中心部署,数据完全同步,Meta Server/Portal域名通过SLB自动切换到其它存活的数据中心
数据库宕机客户端无影响,Portal无法更新配置Config Service开启配置缓存后,对配置的读取不受数据库宕机影响 

apollo.cluster 集群

apollo.meta 拉取配置文件的meta服务地址

apollo.bootstrap.enabled 是否开启 Apollo

apollo.bootstrap.namespaces 需要加载的配置文件,以逗号隔开,需要填写配置全称如*.yml

访问代码

package scan.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {@Value("${apollo.test.name}")private String name;@RequestMapping("name")public String name(){return name;}
}

结果 

3 版本回滚

Apollo默认只支持本版本的上一个版本的配置回滚

3.1 跨版本回滚

1.7.0版本开始支持了properties的跨版本回滚

  • Support revoking modified but unpublished configurations #2952
  • Avoid unnecessary retry for non-existing configurations in apollo-client #3056
  • Use Spring Boot native datasource variables instead of custom ones in startup script #3098
  • Show namespace comment as tooltip and item modified count in lazy init mode #3112
  • Support rollback to specified releases #3093
  • Add kubernetes native service discovery support and helm chart templates #3055 #3176 #3205
  • Change pom's static version number to ${revision} variable #3151
  • Support extracting placeholder from non-normalized expressions in apollo-client, e.g. ${user.address}/user/gateway #3178
  • Support exporting multiple configs #3088

 注意:Apollo的回滚在界面上配置的值不会回滚到回滚版本的值,而是Apollo向订阅配置的客户端推送回滚的配置。

如果发现已发布的配置有问题,可以通过点击『回滚』按钮来将客户端读取到的配置回滚到上一个发布版本。

这里的回滚机制类似于发布系统,发布系统中的回滚操作是将部署到机器上的安装包回滚到上一个部署的版本,但代码仓库中的代码是不会回滚的,从而开发可以在修复代码后重新发布。

Apollo中的回滚也是类似的机制,点击回滚后是将发布到客户端的配置回滚到上一个已发布版本,也就是说客户端读取到的配置会恢复到上一个版本,但页面上编辑状态的配置是不会回滚的,从而开发可以在修复配置后重新发布。

4 加密

Apollo暂时和Nacos一样没有自己的加密机制,官方推荐引入jasypt进行加密,在没有新修复之前暂时建议使用1.16版:https://github.com/ctripcorp/apollo/issues/2170

引入依赖

        <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>1.16</version></dependency>

追加配置

jasypt:encryptor:password:  ero

使用加密配置

apollo:test:name: stephaniestephanieencryptname: ENC(xoA7RdQgV1VAJ6LWoz0bcRiDrSeb02/z)

结果

5 灰度发布

Apollo支持IP级别的实例灰度发布

创建灰度发布

编辑灰度配置和规则

结果

灰度发布前
172.16.0.4服务:这是灰度发布中端口:1234服务的time值:200
172.16.0.11服务:这是灰度发布中端口:1234服务的time值:200
灰度发布后
172.16.0.4服务:这是灰度发布中端口:1234服务的time值:500
172.16.0.11服务:这是灰度发布中端口:1234服务的time值:200

6 动态刷新

Apollo已经默认给接入的客户端启动动态刷新功能,Portal对配置进行修改就会向客户端推送配置

2021-04-29 21:47:06.538  INFO 45478 --- [Apollo-Config-2] c.f.a.s.p.AutoUpdateConfigChangeListener : Auto update apollo changed value successfully, new value: 500, key: time, beanName: testController, field: scan.controller.TestController.time

动态刷新是可以通过配置apollo.autoUpdateInjectedSpringProperties来设置,但是目前配置在某些版本加载会有问题,可以通过增加vm启动配置来保证配置正确加载

-Dapollo.autoUpdateInjectedSpringProperties=false

7 日志配置云部署

Appollo在1.20版本开始可以通过设置配置在Portal中统一控制日志的输出

从1.2.0版本开始,如果希望把日志相关的配置(如logging.level.root=infologback-spring.xml中的参数)也放在Apollo管理,那么可以额外配置apollo.bootstrap.eagerLoad.enabled=true来使Apollo的加载顺序放到日志系统加载之前,不过这会导致Apollo的启动过程无法通过日志的方式输出(因为执行Apollo加载的时候,日志系统压根没有准备好呢!

设置配置

当apollo.bootstrap.eagerLoad.enabled=false时候,控制台还会输出AutoUpdateConfigChangeListener日志

当apollo.bootstrap.eagerLoad.enabled=true时候,控制台会禁止输出AutoUpdateConfigChangeListener日志

参考:https://github.com/ctripcorp/apollo/wiki/Apollo%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

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

github:https://github.com/tale2009/Distributed-Learning/tree/main/Apollo-Learning


http://chatgpt.dhexx.cn/article/1MPuHBxh.shtml

相关文章

apollo问题之 无法连接apollo配置中心

1.问题描述 1.1.现状场景 1.apollo的配置中心config-server 通过域名 http://demo-applo.wrok.com负载了两台机器10.10.10.02和 10.10.10.01 2.当前应用机器 可以访问并ping通 demo-applo.wrok.com域名 但是无法访问负载的机器1.2.报错信息 [demol-core-server:10.166.101.…

Apollo分布式配置中心(一)

目录 什么是配置&#xff1f; 什么是配置中心&#xff1f; 配置中心需要满足条件 什么是Apollo&#xff1f; Apollo特性 Apollo执行流程 Apollo安装 Git地址&#xff1a; 用户手册&#xff1a; 环境准备&#xff1a; 使用idea 的git clone 拉取源码 修改Apollo\scripts…

Apollo配置中心-手把手教你搭建Apollo配置中心运行环境

1、预置环境信息 运行环境 JDK > 1.8 具体安装及环境及环境变量配置这里不再赘述&#xff0c; 可自行查找资料。 2、下载程序包 演示版本使用的是apollo-1.9.2版本&#xff08;就是几个springboot的项目&#xff09; 应用包下载地址&#xff1a;https://github.com/apo…

Apollo 配置详解

Apollo的总体架构 Apollo的使用架构 Apollo的不同维度的配置分类 下面按照生效顺序 Application 在springboot的application.property定义appid这个key的value&#xff0c;标识该类型的应用。 Environment DEV&#xff08;开发环境&#xff09;FAT&#xff08;功能测试&#…

Apollo配置中心多环境配置

Apollo的快速启动项目中&#xff0c;只有一个DEV&#xff08;开发&#xff09;环境&#xff0c;但是本身的一个apollo-portal管控端可以管理不同环境下的配置&#xff1b;所以apollo配置中心多环境配置下的主要思路为&#xff08;这里以DEV和FAT两个环境举例说明&#xff09;&a…

Apollo配置中心与本地配置优先级

背景 在项目重构时&#xff0c;删除若干个application-{env}.yml文件&#xff0c;仅保留一个application.yml文件&#xff0c;该文件中保留的配置项都是几乎不会变更的配置&#xff0c;至于需要跟随不同环境而变更的配置项都放置在Apollo配置中心。 然后本地application.yml文…

Apollo配置中心搭建

目录 1. 下载安装包和源码包2. 创建数据库和表3. 启动Apollo服务端4. 访问Apollo客户端 1. 下载安装包和源码包 下载地址 找到要安装的版本&#xff0c;我这里选择的是1.3.0版本 下载好安装包后上传至linux的 /usr/local/src文件下并执行下面命令解压到对应文件夹 mkdir apo…

Apollo配置中心动态生效机制

看了其他大佬的文章记录一下自己追源码的过程。 Apollo配置中心动态生效机制&#xff0c;是基于Http长轮询请求和Spring扩展机制实现的&#xff0c;在Spring容器启动过程中&#xff0c;Apollo通过自定义的BeanPostProcessor和BeanFactoryPostProcessor將参数中包含${…}占位符和…

Apollo配置中心使用篇

Apollo配置中心使用篇 常见配置中心对比Apollo核心概念Apollo核心特性Apollo架构设计各模块介绍服务端设计客户端设计Apollo与Spring集成的底层原理 Apollo安装安装apollo-portalconfig service和admin service部署多网卡问题解决修改Portal环境配置调整ApolloPortal配置 Apoll…

携程 Apollo 配置中心 | 学习笔记(一) Apollo配置中心简单介绍

本章将介绍如何在Apollo配置中心中删除已经发布的项目。 专栏目录&#xff1a; 携程 Apollo 配置中心 | 学习笔记 序章 欢迎关注个人公众号&#xff1a; Coder编程 欢迎关注个人网站&#xff1a;https://coder-programming.cn/ 一、前言 之前一直学习SpringCloud, 对于配置…

Apollo 配置中心 多环境配置 Apollo Profiles 配置

Apollo 配置中心 多环境配置 Apollo Profiles 配置 一、全局的配置 1、各环境不变的参数配置在Spring Boot的 application.properties中&#xff1a; app.id你的appid apollo.bootstrap.enabledtrue apollo.bootstrap.namespaces名字空间1&#xff0c;名字空间2 (可以省略) 2、…

Apollo配置中心的基本使用

1、首先创建SpringBoot项目&#xff0c;保证可以正常启动访问 2、加入依赖包 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.1.2</version> </…

开源配置中心之Apollo

Introduction Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的配置管理平台&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性。 服务端基于Spring Boot和Sprin…

【Apollo配置中心】Apollo环境配置

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

【配置中心----Apollo】Apollo的介绍及使用方式

环境SpringBoot 2 一、Apollo简介 项目组最近的项目都是使用springcloud微服务开发&#xff0c;整个微服务框架中分布式的系统服务、集群等等都非常的多。 每一个服务都有着自己的配置&#xff08;包括参数配置、服务器地址配置、功能开关等都能&#xff09;&#xff0c;当配…

Apollo-阿波罗配置中心详细使用教程

Apollo基本概念 一、简介 Apollo - A reliable configuration management system Apollo的Github地址 Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用的不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送…

Apollo配置中心介绍

一、背景 最近公司订单中心重构&#xff0c;利用spring boot集成apollo配置中心&#xff0c;因此学习一下apollo配置中心 因为如今程序功能越来越复杂&#xff0c;程序的配置日益增多&#xff1a;各种功能的开关、参数配置、服务器地址、数据库链接等 对于配置的期望值越来越…

你们信不信,everyting找不全文件

everything这个软件思路,很好.查名字.找文件. 可是这个软件有两大缺点: 一,内存占用太大,500M,这还只是我1千万文件下面的情况,我还屏蔽了很大部分.要是3,4千万,everything根本启动不了. 二,搜索文件不全,不相信,看证据: 这是我保存在百度下载里面的文件,我没有加入排除列表. …

搜索工具 Everything 的简单设置

文章目录 1、常规2、界面3、结果4、视图&#xff08;重要修改&#xff09;5、字体与颜色&#xff08;重要修改&#xff09;1&#xff09;高亮部分 &#xff0c;对其 前景色 设置 自定义为 红色2&#xff09; 鼠标悬停 &#xff0c;对其 背景色 设置 自定义为 浅蓝色3&#xff0…

通过Everything 快速搭建局域网内文件服务器

文章目录 通过Everything 快速搭建局域网内文件服务器1、软件下载2、通过工具里面的Http 服务器构建局域网文件服务器3、通过局域网IP 或者自己的电脑访问 通过Everything 快速搭建局域网内文件服务器 1、软件下载 传送门 安装软件请自行完成&#xff0c;一路next 2、通过工…