kratos 配置文件热更新
一、配置文件的说明
1. 官方有关配置的文档:配置 | Kratos
2. 配置的相关文件(以框架示例的配置文件为例)
1)configs/config.yaml 为项目的配置文件,可进行配置内容的修改
2)internal/conf 放配置文件的结构定义,.proto文件进行配置定义,然后通过在根目录执行
make config,就可以将对应的.pb.go文件生成到相同的目录下供使用。
3)cmd/server/main.go 是服务的入口,这个是服务的入口,我们默认使用了内置的config/file组件从本地文件系统读取配置文件,默认会读取相对路径configs
目录,您可以修改这个文件里config.New()
参数中使用的配置源,从其它配置源(比如配置中心)进行加载配置。配置在这里将被加载到conf.Bootstrap
结构体中,这个结构体的内容可以通过依赖注入,注入到服务内部的其它层,比如server或data,这样各层就能读取到各自需要的配置,完成自己的初始化。
二、配置文件的用法
1. 添加新的配置
1)config.yaml文件中加入
etc:test:test_01: 111testname
2) internal/conf/conf.proto 文件添加相应结构
message Bootstrap {Server server = 1;Data data = 2;Etc etc = 3; //添加1
}//添加2
message Etc {message Test {string test01 = 1;}Test test = 1;
}
3)输入make config命令生成conf.pb.go文件
make config
4)main.go 入口文件中加入以下代码,用来监听配置热更新
if err := c.Watch("etc.test.test01", func(key string, value config.Value) {log.Debugf("config changed: %s = %v\n", key, value)test01, err := c.Value("etc.test.test01").String()if err != nil {panic(err)}bc.Etc.Test.Test01 = test01
}); err != nil {log.Error(err)
}//2.加 bc.Etc, 方便程序中使用
app, cleanup, err := wireApp(bc.Server, bc.Data, bc.Etc, logger)
5)wire.go 文件中添加 *conf.Etc
func wireApp(*conf.Server, *conf.Data, *conf.Etc, log.Logger) (*kratos.App, func(), error) {panic(wire.Build(server.ProviderSet, data.ProviderSet, biz.ProviderSet, service.ProviderSet, newApp))
}
6) 进入wire.go所在文件,执行 wire命令,生成新的 wire_gen.go
7)kratos run执行程序,修改我们设置的配置,将看到:
DEBUG msg=config changed: etc.test.test01 = &{{111tes}}
热更新监听成功!
kratos 配置文件热更新相关推荐
- golang配置文件热更新
配置文件热更新是服务器程序的一个基本功能,通过热更新可以不停机调整程序的配置,特别是在生产环境可以提供极大的便利,比如发现log打得太多了可以动态调高日志等级,业务逻辑参数变化,甚至某个功能模块的开关 ...
- 自定义变量 配置文件_跟我一起学.NetCore之自定义配置源热更新对象绑定
前言 上一篇针对不同的配置源进行举例演示,感受到不同配置源和不同数据格式使用统一操作的便捷(即没有什么加一层解决不了的,这个不是我说的),这里接着说说自定义配置源.配置热更新.配置绑定对象相关操作: ...
- 如何将日志配置文件放入到Apollo配置中心并支持热更新
增加监听日志文件(LoggerConfiguration.java) @Service public class LoggerConfiguration {private static final L ...
- 修改html时webpack热更新,webpack学习之路(二)webpack-dev-server实现热更新
上一章对webpack的配置有了简单的认识. 这一章,我需要学习的是webpack热更新,因为在开发过程中,不希望当文件更改时,人肉去编译文件,刷新浏览器. webpack热更新 webpack-de ...
- 白话Elasticsearch30-IK中文分词之热更新IK词库
文章目录 概述 热更新方案 IK Github 下载Source Code 导入maven工程 修改源码 Dictionary#initial方法中开启扫描线程 HotDictReloadThread ...
- Android 美团Robust热更新 使用入门
Android热更新方案Robust 相信很多人都认识了解过 热修复.热更新.热补丁(对于这个技术也没有特别标准的一种叫法,下面我统一叫热更新),之后的一年里,各种热更新方案如雨后春笋般出现,比较耳熟 ...
- Ionic APP 热更新
开门见山,本文主题:cordova-hot-code-push 作用:cordova热更新插件,提供了在应用程序中对基于Web的内容进行自动更新的功能. GitHub地址:https://github ...
- webpack学习之路(四)webpack-hot-middleware实现热更新
上一节我学习了webpack-dev-middleware,但是单独使用它并没有实现热更新,所以这节我要学习搭配使用webpack-hot-middleware,来实现热更新功能. 创建项目 我们依然 ...
- 腾讯开源手游热更新方案,Unity3D下的Lua编程
写在前面 \\ xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能.易用性.扩展性而广受好评.现在,腾讯已经将xLua开源到GitHub. ...
最新文章
- 2020 ICPC Macau A. Accelerator(期望,计数,分治FFT)(每日一题 21.7.6)
- Qt pro使用sql之类的需要添加的模块
- keras保存和载入模型继续训练
- legend---十二、js中的js语句和函数和ready函数的关系是什么
- python 关闭 定时开启_Python爬虫邮箱定时自动发送
- 使用C#+Edge (Chromium)进行Web自动化测试
- 【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式
- 工业智能网关BL110应用之六十二: 实现西门子S7-200SMART PLC 接入MQTT Client One云平台
- python英文分词统计词频_Python 分词并统计词频
- 标书制作详细教程(零基础速成,助力公司中标)
- 由企业证书打包的app--提示证书不受信任的解决途径
- 用关键词搜索店铺列表详情
- 程序员复工后被裁,600万房21000房贷无力偿还,给年轻人3点忠告
- spring cloudAlibaba gateway网关报错,显示无法找到注册中心注册自己。
- 【错误】vs 应用程序无法正常启动0xc00007b
- 盘口技术大全(六): 吸筹与试盘
- 换行符后需要加逗号吗c语言,为什么大多数编程语言都在换行符之前而不是换行符之后使用逗号?...
- # 这是一级标题 ## 这是二级标题
- 在ModelSim中添加Xilinx仿真库
- Java JDK中几个经典的版本
热门文章
- excel文件变成乱码如何解决?
- 解决访问远程共享时发生 请检查名称的拼写. 否则, 网络可能有问题 故障
- 2020h黑苹果 y7000p_拯救者Y7000黑苹果升级macOS 10.15.4分享
- xPad该歇了,我们需要的只是小尺寸触控显示器
- 使用Struts2 开发一个简易的《B2C电子商务网站》 。续集(适合新手)
- Jenkins配置流水线
- 钱多多软件制作第六天
- FRED应用:TMT MOBIE成像光谱仪的概念设计阶段杂散光分析
- (洛谷刷题)P1830 轰炸机III
- zzuli oj 2532: 婷婷是土豪 DFS深搜