当前位置: 首页 > news >正文

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

🚀 发现 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 框架文档

相关文章:

  • 智能手持终端PDA在设备巡检管理中的应用
  • 【C++ 继承】—— 青花分水、和而不同,继承中的“明明德”与“止于至善”
  • 大数据学习(83)-数仓建模理论
  • InnoDB 引擎核心知识点
  • 【AI】知识蒸馏-简单易懂版
  • C/C++蓝桥杯算法真题打卡(Day9)
  • ffmpeg+QOpenGLWidget显示视频
  • 计算机网络高频(三)UDP基础
  • 质检LIMS系统在基因检测机构的核心应用 基因检测行业的挑战
  • deepseek实战教程-第四篇开放平台接口文档使用
  • 【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署
  • Python中的类
  • Python自动化测试 之 DrissionPage 的下载、安装、基本使用详解
  • Postgresql源码(142)子查询提升pull_up_sublinks
  • python filter() 和 reduce()函数
  • 平芯微PW2609A过压保护芯片应用电路
  • (一)环境搭建及烧录
  • 优先级队列(PriorityQueue)
  • 全文 - MLIR Toy Tutorial Chapter 1: Toy Language and AST
  • BM100-K系列开关量输入信号隔离器
  • 习近平出席俄罗斯总统举行的欢迎仪式
  • 98岁动物学家、北京大学教授杨安峰逝世
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段
  • 超燃!走过莫斯科街头的“中国排面”
  • 暴雨蓝色预警:南方开启较强降雨过程
  • 短剧剧组在贵州拍戏突遇极端天气,演员背部、手臂被冰雹砸伤