【发布时间】:2019-05-13 16:28:34
【问题描述】:
我在 Node.js 中有一个低延迟应用程序,我正在用它编写一个新的 Go 基线。
node 中的应用使用 config 和一些键/值对。
在 config/index.js 中
var config = {};
config.app = {
port:9000
};
config.log= {
level:"error"
}
module.exports=config;
另一个文件 config/key_values.js 包含键/值对,每隔几分钟刷新一次。
module.exports.key_values= {
"key1":"value1",
"key2":"value2",
}
要阅读这篇文章,我只需使用以下代码。
let config = require('./config/index');
let keys_vals = require('./config/key_values.js');
console.log('port', config.app.port); //port 9000
console.log('key1 data -->', keys_vals.key_values['key1']); //key1 data --> value1
我怎样才能在 Go 中实现同样的目标。我已经检查了Gonfig 的配置实现以及构建结构。
什么应该是更好/最好的方式来实现与我在 Node 中相同的功能?
【问题讨论】:
-
文件可能每隔几分钟就被重写一次,但你的节点应用程序不会在更改时重新加载它,是吗?
-
是的,一旦在间隔后从预定作业下载,计时器会在节点应用程序中运行,刷新文件。我用这个。
delete require.cache[require.resolve("./config/key_values.js")];虽然这不是 go 实现的问题,但如果需要,我可能会重新启动应用程序以重新加载配置。 -
这个问题太笼统了。有很多配置格式可供选择(json、yaml、toml、ini 等)。建议将基于意见。如果您遇到问题,请选择一个并提出具体问题。
-
我确实包含了一个有问题的示例 json 配置,并且需要知道如何通过一些明显的更改来重用它。 yaml 也可以,只是为了确保它以相同的方式工作。
-
这里真的没有足够的细节。你在哪里存储他的配置?什么系统必须读取它?哪些“事物” 将成为配置的一部分?如果您正在设置您的服务应该监听的端口,那么重新加载并不是您最担心的问题。如果您的服务是 HA,在多个区域/节点上,那么您可能希望使用 K/V 存储,并且可以通过多种方式处理更新,如果是配置文件,您可以使用 fsnotify,或者重用现有的东西像眼镜蛇等......
标签: go