我在golang中编写了一个应用程序,它将基本数据加载到global var,因此快速启动应用程序响应,并在用户对数据库进行更改时导出http接口以更新var。
但我部署了另一台服务器,并使用了proxy.There有一个问题,当用户向更新URL发送http请求时,它会将流量加载到其中一个服务器。所以该服务器更新此var,但其他服务器不更新。 / p>
例如utils.go:
package utils
var BasicDatas map[string]*MyModel
func UpdateVar(){
// do some work
}
func PreLoadVar(){
// preload data to basicDatas
}
和main.go
package main
import(
"codebase/utils"
)
func main(){
utils.PreLoadVar()
}
所以,如果无论如何要在多个主机之间共享var?或者任何一个库可以帮助完成这项工作?
Nsq.io似乎是一个不错的选择,但如果有的话,我想寻求一个更简单的选择。 感谢:)
答案 0 :(得分:1)
您的全局变量是caching的一种非常简单的形式,众所周知,当您在多个服务器上运行应用程序时会出现问题。有几种方法可以解决这个问题:
如果您手上有太多时间,可以使用像nsq这样的消息传递解决方案来实现您自己的分布式缓存,但我建议不要这样做 - 这不是一个简单的问题。