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配置中心

简介

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

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dapeng-大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值