Memory 使用Go在主机之间共享变量
我在golang中编写了一个应用程序,它会将基本数据加载到全局var,因此使应用程序响应更快,并在用户更改数据库时导出一个http接口来更新var 但我部署了另一台服务器,并使用了代理。出现了一个问题,当用户向更新url发送http请求时,它会将流量加载到其中一台服务器。因此服务器会更新此变量,而其他服务器则不会 例如utils.go:Memory 使用Go在主机之间共享变量,memory,go,Memory,Go,我在golang中编写了一个应用程序,它会将基本数据加载到全局var,因此使应用程序响应更快,并在用户更改数据库时导出一个http接口来更新var 但我部署了另一台服务器,并使用了代理。出现了一个问题,当用户向更新url发送http请求时,它会将流量加载到其中一台服务器。因此服务器会更新此变量,而其他服务器则不会 例如utils.go: package utils var BasicDatas map[string]*MyModel func UpdateVar(){ // do some
package utils
var BasicDatas map[string]*MyModel
func UpdateVar(){
// do some work
}
func PreLoadVar(){
// preload data to basicDatas
}
还有主菜,走吧
package main
import(
"codebase/utils"
)
func main(){
utils.PreLoadVar()
}
那么,如果有多个主机之间共享var的方法,或者任何库都可以帮助完成这项工作
Nsq.io似乎是一个不错的选择,但如果有,我想寻求一个更简单的选择。
谢谢:)您的全局变量是一种非常简单的形式,当您在多台服务器上运行应用程序时,这是众所周知的问题。有几种方法可以解决此问题:
如果您手头有太多时间,您可以使用nsq之类的消息传递解决方案来实现您自己的分布式缓存,但我建议您不要这样做—这不是一个容易的问题。这是一个典型的进程间通信(IPC)问题,没有一个通用的解决方案。