动态更新配置的步骤
注意:Viper本身不是并发安全的,在实现配置动态更新时,要注意采用锁机制等方式来保证Viper并发读写的安全。
1,更新配置源中的配置
在Viper支持的配置源中,命令行参数、环境变量是在进程启动时一次性读取的,不支持动态更新。本地配置文件和远程配置文件可以支持动态更新,直接修改配置文件即可。
2,更新加载到内存中的配置
Viper支持监听本地配置文件的变化,同时允许注册文件变化时的回调函数,借助这个功能可以实现本地配置文件的动态更新
3,配置的动态生效
不同配置的使用方式不同,动态生效方式也就不同,大概可以分为两类:
- 有些配置,每次使用时都是读取最新的值,因此只要更新了内存中的配置,就会即时生效
- 有些配置,比如数据库凭据,可能需要重建连接池才能生效
Ref
浅谈Golang配置管理
ConfigMap的热更新
Go 每日一库之 viper