阿波罗使用注意事项

SpringBoot 集成 Apollo 配置中心 由于 Apollo 概念比较多,刚开始使用比较复杂,最好先过一遍概念再动手实践尝试使用。 1、背景 随着程序功能的日益复杂,程序的配置日益增多,各种功能的开关、参数的配置、服务器的地址……对程序配置的期望值也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。因此 Apollo 配置中心应运而生! 2、简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能 阅读详情

1.引入客户端依赖

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

注:

如果是有内部多个应用同时要使用Apollo,可以将Apollo封装到一个单独的Jar中,供这些应用引入。且可以将各环境(DEV、UAT、TEST、PRD)Meta Server写在名为apollo-env.properties配置文件中,如下所示:

dev.meta=http://1.1.1.1:8080
fat.meta=http://apollo.fat.xxx.com
uat.meta=http://apollo.uat.xxx.com
pro.meta=http://apollo.xxx.com

并将其放到classpath下,这些Meta Server就是各环境的默认值,后续也可以通过在java的启动参数-Dapollo.meta=metaServerHost,或者spring boot的配置文件application.properties通过指定apollo.meta=metaServerHost等方式,进行修改。

然后在java启动参数只需要通过-Denv=DEV等参数,apollo就会选择特定环境的Meta Server。

详见:apollo meta server的配置

 

2、配置中引入其它变量的参数热更新配置

Apollo本身对参数具有热更新的功能,但是Apollo中配置Key一定要是application.properties或application.yml中的key,而不是引入了其它配置文件中的key,否则热更新不会起效,以下举示例说明。

项目中包括了两个配置文件:

application-config.properties
application.properties

内容分别如下:

application-config.properties

TEST_KEY=It's a test value

application.properties

spring.profile.active = config
test.key=${TEST_KEY:default_value}

如果在apollo中配置项是

TEST_KEY=new value

那修改该配置项TEST_KEY,应用虽然可以收到配置项修改的通知,但是引入test.key的对象中的属性值不会发生变化,只有重启应用才会生效。

为了让配置即时生效,Apollo中的配置项应该是application.properties中的test.key,修改配置项test.key的值,则引入test.key的对象中的属性值就会即时生效。

 

3、Apollo 关于@ConfigurationProperties 的动态刷新

针对使用了注解@ConfigurationProperties的配置注入方式,如下示例类:

@ConfigurationProperties(prefix = "redis.cache")
public class SampleRedisConfig {
  private int expireSeconds;
  private int commandTimeout;

  public void setExpireSeconds(int expireSeconds) {
    this.expireSeconds = expireSeconds;
  }
  public void setCommandTimeout(int commandTimeout) {
    this.commandTimeout = commandTimeout;
  }
}

针对这种Bean,需要使用spring cloud的EnvironmentChangeEvent和RefreshScope,实现方式如下:

1)依赖spring cloud context,如:

<dependency>
		    <groupId>org.springframework.cloud</groupId>
		    <artifactId>spring-cloud-context</artifactId>
		    <version>2.0.4.RELEASE</version><!--版本根据实际场景而定-->
</dependency>

2)在spring boot的配置文件中增加如下配置项:

spring.boot.enableautoconfiguration=true

3)实现ApplicationContextAware

import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * apollo 自动刷新
 *
 * @author qubianzhong
 * @Date 20:32 2019/11/11
 */
@Component
@Slf4j
public class ApolloRefreshConfig implements ApplicationContextAware {

    ApplicationContext applicationContext;

    @Autowired
    RefreshScope refreshScope;

	//这里指定Apollo的namespace,非常重要,如果不指定,默认只使用application
    @ApolloConfigChangeListener(value = {ConfigConsts.NAMESPACE_APPLICATION,"business","everything"})
    public void onChange(ConfigChangeEvent changeEvent) {
        for (String changedKey : changeEvent.changedKeys()) {
            log.info("apollo changed namespace:{} Key:{} value:{}", changeEvent.getNamespace(), changedKey, changeEvent.getChange(changedKey));
        }
        refreshProperties(changeEvent);
    }

    public void refreshProperties(ConfigChangeEvent changeEvent) {
        this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));
        refreshScope.refreshAll();
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

4、服务器上的项目启动脚本boot.sh里面增加启动参数

 

java \ 
-Dapollo.autoUpdateInjectedSpringProperties=true \ 
-Dapp.id=apollo-demo  \ 
-Denv=DEV \ 
-Dapollo.meta=http://192.168.10.235:8071 \ 
-Dapollo.bootstrap.enabled=true \ 
-Dapollo.bootstrap.eagerLoad.enabled=true \ 
-Dapollo.bootstrap.namespaces=application \ 
-Dapollo.cacheDir=/opt/data/some-cache-dir \
-jar apollo-demo.jar   

apollo.autoUpdateInjectedSpringProperties:是否自动更新配置,如果不想自动更新则将该值设置为false,默认值为true

app.id:项目的AppId

env:环境设置,测试环境DEV,预发布环境UAT,生产环境PRO,可以通三种方式(启动参数、操作系统环境变量以及配置文件)指定,详见文档

apollo.meta:apollo服务地址,例如测试环境是http://192.168.10.235:8071

apollo.bootstrap.enabled:启动阶段是否注入配置

apollo.bootstrap.eagerLoad.enabled:是否将apollo的加载放到日志系统的加载之前,这样就可以通过apollo来管理日志相关的配置,如日志级别的设置等,如果为true,则会在这个阶段apollo不会有日志输出

apollo.bootstrap.namespaces:配置项,这里要和阿波罗里面配置的properties文件一一对应,例如阿波罗配置了application.properties、db.properties和dubbo.properties三个配置文件,这里就是设值为application,db,dubbo

apollo.cacheDir:自定义缓存路径

 

脚本中namespaces的默认值为application,所以默认读取的是阿波罗上application.properties配置文件。

如果参数特别多,或者其他需求,需要添加多个配置文件的话,需要联系运维同学配合修改项目的jenkins配置,修改namespaces参数。正常情况建议只用一个application.properties配置文件

 

详情参看Apollo Java使用的官方文档:Apollo Java客户端使用指南

使用MaxKB知识库+工作流构建阿波罗AI客服系统实战教程 在上一篇文章中我们搭建了MaxKb知识库系统,这个系统的特色就在于知识库和高级编排应用两大功能,今天我们就利用这两大特色功能实现一个AI客服系统。 阅读详情

相关推荐

解密阿波罗登月计划中运载火箭是如何设计和运行的?附:NASA解密文件

文 / 王不留(微信公众号:王不留) 早晨看到2020年精彩瞬间的超燃宣传片,深为国家的强盛而自豪。 2020年,中国航天最引人注目的成绩,莫过于嫦娥五号任务顺利完成。11 月 24 日 4 时 30 分,长征五号遥五运载火箭成功发射,带着嫦娥五号探测器飞往月球。 我联想到阿波罗登月计划,人类第一次登上月球。那是无法想像的19世纪60年代。 那个时代的人类是如何将航天器送到月球的? 带着这个问题,我在NASA官网扒到了一份解密的《土星5号运载火箭飞行手册》,可以略解心...

王不留 877

配置中心阿波罗学习之二 项目实战

一、背景 通过上一篇日志,我们已经将一个单机版的apollo server端搭建起来了,并且可以通过官方提供的demo实现最基本的配置文件的读取。接下来我主要通过一个实际的spring项目来演示如何利用apollo的java客户端实现项目的配置文件动态更新。 apollo的Java客户端可以通过纯java API,spring注解,springboot注解等形式绑定到我们的项目中,我项目使用的...

sinat_28771747的博客 693

由浅入深剖析 Apollo(阿波罗)架构

Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo 目前在国内开发者社区比较热,在Github上有超过 5k 颗星,在国内众多互联网公司有落地案例,可以说 Apollo 是目前配置中心产品领域 Number1 的产品,其成熟度和企业级特性要远远强于 Spring Cloud 体系中的 Spring Cloud Config 产品。

Clearlove_S7的博客 4821

Apollo使用篇 - Apollo客户端的使用

本文介绍如何使用Apollo客户端

The Secret 4322

3连通平面图与阿波罗对偶图的唯一可定向电路双覆盖

图论中的电路双覆盖(CDC)是指一组偶子图集合,使得图中每条边恰好被两个子图覆盖,这一概念与图的曲面嵌入密切相关。可定向电路双覆盖进一步要求子图定向方式满足特定条件,对应图在可定向曲面上的嵌入。3连通平面图作为一类特殊图结构,其平面嵌入在拓扑意义上是唯一的。研究发现,阿波罗对偶图与唯一可定向电路双覆盖存在深刻对应关系:一个3连通平面图具有唯一可定向电路双覆盖当且仅当它是阿波罗对偶图。这一结论不仅具有理论价值,在网络设计、材料科学等领域也有重要应用。通过完全截断和完全增广等图操作,可以建立这一对应关系的严格证

weixin_30294759的博客 268

Apollo(阿波罗)架构由浅入深剖析

Apollo(阿波罗)架构由浅入深剖析

春风化雨的博客 1312

Apollo入门

Apollo入门 公司项目使用了Apollo配置中心,找了个入门视频学习一下。只是一些基本的操作,架构有待深入研究。内容包括: Apollo的工作流程 Apollo的4个维度管理Key-Value格式的配置:application (应用)、environment (环境)、cluster (集群)、namespace (命名空间) SpringBoot 集成Apollo的使用方法 生产环境的部署、灰度发布 项目地址:https://github.com/ctripcorp/apollo 参考视频: B

qq_43699614的博客 937

2025-08-19利用opencv检测图片中文字及图片的坐标

该代码实现了图片中中文文本的检测与位置计算功能。主要使用CnOcr库进行OCR识别,结合OpenCV和PIL库处理图像。功能包括:1)检测图片中的中文文本及位置坐标;2)计算每个文本的像素宽度和高度;3)在原图上绘制文本边界框并标注识别结果。代码通过put_chinese_text函数解决中文显示问题,最终输出各文本内容、坐标位置及尺寸信息。适用于需要获取图片中文字精确位置的应用场景。

m0_58149406的博客 394

RT-Thread STM32F429阿波罗开发板BSP说明

本文档为 RT-Thread 开发团队为 STM32F429 阿波罗开发板提供的 BSP (板级支持包) 说明。开发板资源介绍BSP 快速上手进阶使用方法通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。

华为奋斗者精神 1908

数字取证双雄:Passware Kit Forensic 与 ElcomSoft 在实战场景下的能力边界解析

本文深入解析了Passware Kit Forensic与ElcomSoft在数字取证实战中的能力边界,涵盖Windows、macOS、iOS和Android系统的密码恢复与数据提取技术。通过真实案例对比两款工具在硬件加速、分布式计算及云取证等场景下的表现差异,为取证专家提供关键决策参考。特别探讨了密码恢复软件在加密设备突破中的核心作用。

weixin_30342209的博客 398

【车载开发系列】ParaSoft单元测试环境配置(一)

bdf是数据文件的一种类型,表示一种数据库文件。在ParaSoft当中,可以使用bdf文件来快速创建一个测试项目。

千月星跡 2147

TripoSR 单图 3D 重建 10 分钟上手:一条命令从一张图片出 3D 模型

TripoSR 是开源的单图 3D 重建模型:给它一张图片直接输出 3D 网格,单图约需 6GB 显存,NVIDIA A100 上重建不到 0.5 秒,MIT 许可。从零到出结果只需 3 条命令,跑完你手里是一个可导入 3D 软件查看的 obj 模型文件。 ## 🧾 值不值得跑 · 运行门槛 一句话定位:单张图片进、3D 网格出,无需多视角采集,也不用跑离线优化。 环境清单: - Pyt

gitblog_00273的博客 209

更换光猫的原理与方法

当你给装维打电话说你需要更换光猫时,对于装维来说,他并不需要知道怎么更换,他只需要生成一张工单,由后台进行业务操作后,在去用户家把新光猫给装好即可,此时装维到底起到了什么作用呢?我想可能只是运输员吧,把一个设备从一个地方运到另一个地方罢了,此时并不能指望装维做什么,因为本质上来说装维的能力真的很差很差,我是不知道那些装维哪来的勇气做视频,还说自己什么什么能力很强?很强吗?吹牛的技术确实很强。 更换光猫之前,需要先明白为什么要更换光猫,怎么更换光猫,更换后不能用怎么办?怎么才能更换成功,换光猫以后被限速了怎么

qq_34146290的博客 1万+

RT-Thread STM32F767阿波罗开发板BSP说明

本文档为 RT-Thread 开发团队为 STM32F767 阿波罗开发板提供的 BSP (板级支持包) 说明。开发板资源介绍BSP 快速上手进阶使用方法通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。

华为奋斗者精神 1664

2、硬件工程师笔试面试汇总(2025版本)

本文摘要:文章系统梳理了硬件工程师笔试面试中的电子元器件知识要点,涵盖电阻、电容、电感、二极管、三极管、MOS管等器件的工作原理、选型要点和应用场景。详细解析了UART、I2C、SPI等通信协议的特点及实现方式,并探讨了电源管理、信号处理、PCB设计等核心问题。针对常见电路如放大电路、滤波电路、逻辑电路等提供了深入分析,同时介绍了示波器使用、单片机系统设计等实用技能。文章还包含器件封装、电平转换、时序分析等工程实践内容,并附有相关真题解析和仿真实验指导,为硬件工程师提供全面的技术参考。

XU157303764的博客 9004

Flink 运维监控与指标采集实战(Prometheus + Grafana 全流程)

Flink运维监控在实时计算场景中至关重要,因为Flink作业需要7×24小时稳定运行,对性能、资源、故障感知和状态变化的实时监控是保障系统稳定的关键。Flink自带的Metrics系统提供了基本的监控能力,但为了更全面的监控,Prometheus+Grafana成为最主流的解决方案。通过配置PrometheusReporter和Grafana仪表盘,可以实现对Flink作业的全面监控,包括CPU、内存、吞吐量、Checkpoint状态、KafkaSink性能等关键指标。此外,自定义指标采集和报警机制的配置

晴天彩虹雨的博客 1368

开发板通用刷机教程

这是STM通用的刷固件方法,不仅仅适用于.Net Micro Framework,支持我们当前所有板子,包括阿波罗、探索者和雅典娜三个系列。单片机可以看做是CPU、内存和硬盘的集合体,其中的Flash就是硬盘,RAM就是内存。我们所谓的刷机(刷固件)就是把系统(固件)安装(刷)到单片机上。固件一般是bin文件,也有hex。传统单片机程序,系统程序和用户程序都混在一个bin里面,...

weixin_30364147的博客 485

3. 动手运行第一个 SAP Fiori Elements 应用(ListReport 类型)

这个代理服务器能够自动监听我们 Fiori Elements 应用里向 ES5 Demo 系统发送的 OData 请求,拦截这个请求,并通过 Node.js 代码向 ES5 服务器转发,拿到响应数据后再交还给 Fiori Elements 应用。后者对自己发出的请求被代理这件事情一无所知。本文的任务是,大家按照我的介绍,在本地成功运行笔者准备的这个 Fiori Elements 应用。的错误消息, 说明大家安装的 Node.js 版本没有达到本地运行 Fiori Elements 的最低要求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1670

 .net core 使用阿波罗配置中心

.net core 使用阿波罗配置中心 1、安装阿波罗服务(参考网络上各种各样的文章即可) 2、c# 用法 直接贴码。配置改变实时更新。 private static IConfiguration _config; private static IConfiguration Configs { get { if (_config == null) ...

小马嘎嘎 1343

【知识分享】CAN总线中终端网络的重要性

P沟道和N沟道晶体管的漏源通态电阻匹配良好时,形成的CANH和CANL信号匹配良好;如果驱动器的一半具有比另一半低得多的导通状态电阻,那么总线共模电压将从VCC/2的显性状态偏离,并回到VCC/2的隐性状态,这将导致每一次状态转换都会伴随着共模电压噪声,从而导致更高水平的传导和辐射能量发射。

一只豌豆象的博客 1543

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

原子阿波罗STM32F429程序的控制器改为STM32F407驱动LCD屏

无奈手里只有F407的探索者开发板,随把阿波罗F429控制器改为F407,利用现有硬件熟悉模块化编程的阿波罗F429。原子大神的阿波罗开发板使用STM32F429IGT6控制器,编程风格也与探索者F407系列有了很大的不同,这种模块式的程序风格更加方便移植,当然,不同控制器,功能,内存,都不同,虽然是个小改动,但也没有那么一帆风顺的。F429控制器有FMC功能,F407就没有FMC,只有FSMC功能。基础的更改操作肯定得有,和前面说的一样,详见另一篇基础更改。以下是更改过程注意的问题和更改的地方。

wenroudelang8888的博客 654

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

基于正点原子阿波罗F429开发板的LWIP应用(2)——设置静态IP和MAC地址修改

基于正点原子阿波罗F429开发板的LWIP应用(2)——设置静态IP和MAC地址修改

qq_44712722的博客 1642

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

dsh-purge 完整指南:按模型换提示词、一键还原,三步装好并验证

dsh-purge 是装在本机 DeepSeek Harness(DSH)上的开源红队评测插件:提示词可按模型分别注入,补丁改坏了能一键还原,演练台只对本地靶场开放。本文按五步讲完:环境自检、三步安装、三项核心能力、红线边界、排障。 ## 环境自检:装之前确认宿主版本与 DSH_HOME 跑 dsh-purge 提示词注入前,先核对宿主是否对得上。版本不对,补丁会显示待应用或跳过: | 检查

gitblog_00798的博客 380

总线与微命令实验总结_阿波罗 STM32F767 开发板资料连载第四十五章 SD 卡实验

1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自《STM32F7 开发指南(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第四十五章 SD 卡实验很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有 U 盘,FLASH 芯片,SD 卡等。他们各有优点,综合比较,最适合单片机系统的莫过于 SD 卡了,它不仅容量可以做到很大(32GB 以上),支持 SP...

weixin_39970823的博客 1577

RT-Thread串口驱动避坑:在正点原子阿波罗H7上解决数据丢失与乱码的完整排查流程

本文详细解析了在RT-Thread环境下使用正点原子阿波罗H7开发板时遇到的串口数据丢失与乱码问题,提供了从硬件连接到软件配置的完整排查流程。重点介绍了时钟配置、缓冲区设置、中断优先级调整等关键解决方案,帮助开发者高效解决串口通信难题。

weixin_33735077的博客 621
上一篇: 基于Sentinel的高可用限流系统HASentinel设计及实现
下一篇: 基本Spring Cloud的微服务架构搭建及应用(一)
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值