Gone v2 配置管理4:连接Apollo配置中心

news2025/3/27 8:20:19

🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!🌟 您的支持是我们前进的动力!🤝 欢迎贡献代码或提出建议,一起让 gone 变得更好!👨‍💻 #golang #依赖注入 #开源 👉github.com/gone-io/gone
本文原地址:https://github.com/gone-io/goner/blob/main/apollo/README.md

相关内容
- Gone v2 配置管理1:使用 Gone Viper 组件进行本地配置
- Gone v2 配置管理2:使用 goner/viper/remote链接远程的配置中心,支持etcd、consul、firestore、nats
- Gone v2 配置管理3:连接 Nacos 配置中心
- Gone v2 配置管理4:连接Apollo配置中心

文章目录

    • 简介
    • 快速开始
      • 1. 加载 Apollo 配置组件
      • 2. 配置 Apollo 连接信息
      • 3. 使用配置
    • 配置动态更新
    • 配置项说明
    • 高级用法
      • 多命名空间支持
      • 本地缓存配置
    • 注意事项
    • 参考资料

简介

Gone Apollo 组件是基于 Apollo 配置中心的 Gone 框架集成组件,提供了配置的动态获取和实时更新功能。Apollo 是携程开源的分布式配置中心,能够集中管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

快速开始

1. 加载 Apollo 配置组件

package main

import (
	"github.com/gone-io/gone/v2"
	"github.com/gone-io/goner/apollo"
)

func main() {
	gone.
		Loads(
			apollo.Load, // 加载 Apollo 配置组件
			// 其他组件...
		).
		// 或者 Serve()
		Run()
}

2. 配置 Apollo 连接信息

在项目的配置文件中(如 config/default.yaml)添加以下配置:

apollo.appId: YourAppId           # Apollo 应用 ID
apollo.cluster: default           # 集群名称,默认为 default
apollo.ip: http://apollo-server:8080  # Apollo 配置中心地址
apollo.namespace: application     # 命名空间,默认为 application
apollo.secret: YourSecretKey      # 访问密钥(如果启用了访问密钥验证)
apollo.isBackupConfig: true       # 是否开启备份配置
apollo.watch: true                # 是否监听配置变更
apollo.useLocalConfIfKeyNotExist: true  # 如果 Apollo 配置中不存在某个 key,是否使用本地配置文件中的值

3. 使用配置

在 Gone 组件中注入配置:

type YourComponent struct {
	gone.Flag
	
	// 方式一:直接注入配置值
	DbUrl string `gone:"config,database.url"`
	
	// 方式二:通过 Configure 接口获取配置
	configure gone.Configure `gone:"*"`
}

func (c *YourComponent) AfterProp() {
	// 方式二:动态获取配置
	var port int
	err := c.configure.Get("server.port", &port, "8080")
	if err != nil {
		// 处理错误
	}
}

配置动态更新

apollo.watch 设置为 true 时,Apollo 组件会监听配置变更,并自动更新已注册的配置项。
注意:需要动态更新的字段,必须使用指针类型才有效。

要使配置项支持动态更新,需要在获取配置时将配置项注册到变更监听器中:

type YourComponent struct {
	gone.Flag
	
	// 这些配置项将支持动态更新
	ServerPort *int    `gone:"config,server.port"`
	DbUrl      *string `gone:"config,database.url"`
}

// 配置变更后,ServerPort 和 DbUrl 的值会自动更新

配置项说明

配置项说明默认值
apollo.appIdApollo 应用 ID,必须与 Apollo 配置中心中的应用 ID 一致-
apollo.cluster集群名称default
apollo.ipApollo 配置中心地址-
apollo.namespace命名空间application
apollo.secret访问密钥,用于验证客户端身份-
apollo.isBackupConfig是否开启备份配置,开启后会将配置保存到本地true
apollo.watch是否监听配置变更,开启后配置变更时会自动更新false
apollo.useLocalConfIfKeyNotExist如果 Apollo 配置中不存在某个 key,是否使用本地配置文件中的值true

高级用法

多命名空间支持

Apollo 支持多个命名空间,默认使用 application 命名空间。如果需要使用多个命名空间,可以在配置中指定:

apollo.namespace: application,common,custom

本地缓存配置

apollo.isBackupConfig 设置为 true 时,Apollo 客户端会将配置缓存到本地,当 Apollo 服务不可用时,会使用本地缓存的配置。

注意事项

  1. 确保 Apollo 配置中心已正确部署并可访问
  2. 配置项的类型转换由 Gone 框架处理,支持基本类型(如 string、int、bool 等)
  3. 对于复杂类型(如结构体、数组等),Apollo 客户端会尝试将配置值解析为 JSON
  4. 配置变更监听功能需要设置 apollo.watch: true

参考资料

  • Apollo 官方文档
  • Gone 框架文档

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

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

相关文章

【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署

【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…

什么是 Ansible Playbook?

一、Ansible Playbook 是什么? Ansible Playbook 是 Ansible 自动化工具的核心组件之一,它是一个以 YAML 格式编写的文件,用于定义一组自动化任务(tasks)。简单来说,Playbook 就像一个“剧本”或“指令清单…

Dynamics 365 Business Central 财务经常性一般日记帐做帐方法简介

#BC ERP# #Navision# #Recurring General Journal# 在BC ERP中为了方便财务做些经常性的一般日记帐的方法,为了省时省事会用到Recurring General Journal模块是一个好方法。在这里将分别用不同的示例 对经常性日记帐的各种方法做一介绍: 经常性日记帐 …

Mybatis注解的基础操作——02

写mybatis代码的方法有两种: 注解xml方式 本篇就介绍注解的方式 mybatis的操作主要有增删改查,下面进行一一讲解。 目录 一、参数传递 二、增(Insert) 三、删(Delete) 四、改(Update&#…

在 IntelliJIDEA中实现Spring Boot多实例运行:修改配置与批量启动详解

前言 一、通过 ‌修改配置‌ 实现多实例运行二、通过 ‌批量启动‌ 实现多实例运行三、常见问题及解决方案四、最佳实践与扩展五、总结 在微服务开发中,经常需要同时启动多个服务实例进行测试或模拟集群环境。‌IntelliJ IDEA‌ 作为Java开发者常用工具,…

Mongodb分片模式部署

MongoDB 分片集群部署教程 1. 概述 MongoDB 分片是一种用于处理大规模数据集的集群技术。通过分片,MongoDB 可以将数据分布在多个服务器上,从而提高存储容量和读写性能。本教程将详细介绍如何从零开始部署 MongoDB 分片集群。 介绍 分片集群中主要由三…

ElementPlus 快速入门

目录 前言 为什么要学习 ElementPlus? 正文 步骤 1 创建 一个工程化的vue 项目 ​2 安装 element-Plus :Form 表单 | Element Plus 1 点击 当前界面的指南 2 点击左边菜单栏上的安装,选择包管理器 3 运行该命令 demo(案例1 ) 步骤 …

C++输入输出流第二弹:文件输入输出流and字符串输入输出流

目录 文件输入输出流(重点) 文件输入流 文件输入流对象的创建 对测试代码进行解读: 1. 代码核心逻辑 2. 读取过程详解 3. 关键特性总结 4. 注意事项 5. 完整流程示例 这里既然提到了 >> 流,那么就对他进行进一步的…

TCP传输---计算机网络

TCP结构 源端口和目标端口:标识通信的应用程序。序列号:标记发送的数据段的顺序序号。确认号 ( ACK):确认接收到的数据序号。标志位:控制连接状态,包括 SYN(同步)、ACK(确认&#xf…

基于TweenMax和SVG的炫酷弹性进度条动画特效

这是一款效果非常炫酷的基于TweenMax和SVG的炫酷弹性进度条动画特效。该弹性进度条特效在点击触发按钮之后,按钮会变形为进度条,然后一个滑块在它上面滑动,就像重物滑过绳子的感觉,非常有创意。 在线演示 使用方法 该弹性进度条效…

python面试高频考点(深度学习大模型方向)

1. python中yeild和return的区别? 2. 介绍一下pytohn中的上下文管理器? 在Python中,上下文管理器(Context Manager) 是一种通过 with 语句管理资源的协议,确保资源(如文件、数据库连接、线程锁…

六、重学C++—深入探索new delete

上一章节: 五、重学C—类(封装继承)-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146458436?spm1001.2014.3001.5502 本章节代码: cpp CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppstudy/tree/m…

Unity代码热更新和资源热更新

知识点来源:人间自有韬哥在,hybridclr,豆包 目录 一、代码热更新1.代码热更新概述2.HybridCLR 二、资源热更新1.资源热更新概述2.AB包2.1.AB包的加载2.2.卸载AB包2.3.加载AB包依赖包2.4.获取MD52.5.生成对比文件2.6.更新AB包 3.Addressable3.1.AssetRef…

于纷扰中寻静谧:正念观照的智慧之旅

在现代社会的快节奏浪潮中,我们仿若被裹挟前行的浮萍,生活的压力与信息的洪流冲刷着内心的宁静,焦虑与迷茫如影随形。而正念观照,恰似一叶扁舟,能引领我们在心灵的海洋中回归自我,探寻那片澄澈之境。 正念…

环境评价分析中土地利用现状图的制作方法

在环境评价中,土地利用现状图是重要的基础图件,用于分析项目区域的土地利用类型、分布格局及其生态环境特征。 以下是制作土地利用现状图的详细步骤和方法: 一、前期准备工作 确定制图范围和比例尺 根据评价范围确定制图区域边界 常用比例…

编程题记录3

九宫幻方 题目链接:https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&second_category_id3&tags%E7%9C%81%E8%B5%9B&tag_relationintersection 先旋转、镜像得到所有的情况,可以发现情况是可以暴力得出的。…

sql语句给表添加一个递增列

SSMS–》视图-》数据库(表)-》新建查询 ALTER TABLE [表名] DROP COLUMN ID ALTER TABLE [表名] ADD ID INT IDENTITY(1,1)执行完以上操作,会在表的最后一列添加一个自增字段 接下来如何把最后一个字段放到第一个字段呢? 假如sqlserver 表test 有以下…

vue java 实现大地图切片上传

文章目录 一、项目背景二、页面三、代码1.前端2.mock-i18n.js文件3.xx.js文件定义方法4.配置文件 application.properties5.后端方法 四、易错点易错点1:前端要进行分片切割,然后再分片上传。易错点2:后端配置文件要配置。易错点3&#xff1a…

langchain+ollama+deepseek的部署(win)

ANACONDA 安装 官网:Download Anaconda Distribution | Anaconda 配置系统环境 在系统变量中配置 检查是否配置成功 通过 cmd 窗口输入: conda info 如图:表示成功 配置你的虚拟环境 二、安装 ollama allama 安装 官网地址&#xff1a…

deepseek实战教程-第四篇开放平台接口文档使用

第二篇讲解了如何本地安装大模型,然后编写一个基于jsspringboot的项目,通过页面实现对话的功能。实际上,上面的demo用到是deepseek提供的接口,那么deepseek共提供了多少接口呢?这就要讨论到deepseek的接口库了&#xf…