我正在编写一个巨大的单词词典 -> 语言,我拥有的数据,但我需要的是让一个线程运行一个守护进程,用 Go 编写,它将所有这些保存在内存中(是的,我也有那么多内存)并且可以被其他 Go 应用程序“调用”。
我确信这是一种标准类型的操作,但老实说,我以前从未尝试过这样的操作,而且我不太熟悉,不知道在哪里可以找到有关如何执行此操作的信息。
让它作为守护进程运行很容易。我的问题是什么是从另一个 Go 应用程序调用此应用程序的有效方法,这将需要完成数百万次。
我在想一些事情:
connection, err := InitateConnectionToApp()
for _, someword := range mysliceofstrings {
languageofword := connection.FindIt(someword)
}
然后守护进程以某种方式接收到这个请求,在其映射中查找值并将其返回。
我希望这是有道理的。我尝试在 Google 上查找,但找不到任何特定于 Go 的内容。
如果有人能告诉我从哪里开始,那就太好了。
最佳答案
你可以使用 RPC Go 的标准远程过程调用包。
只需公开您的 api,然后创建一个客户端以远程调用该方法。
从文档中粘贴的简单示例副本:
package server
type Args struct {
A, B int
}
type Quotient struct {
Quo, Rem int
}
type Arith int
func (t *Arith) Multiply(args *Args, reply *int) error {
*reply = args.A * args.B
return nil
}
func (t *Arith) Divide(args *Args, quo *Quotient) error {
if args.B == 0 {
return errors.New("divide by zero")
}
quo.Quo = args.A / args.B
quo.Rem = args.A % args.B
return nil
}
func main() {
arith := new(Arith)
rpc.Register(arith)
rpc.HandleHTTP()
l, e := net.Listen("tcp", ":1234")
if e != nil {
log.Fatal("listen error:", e)
}
go http.Serve(l, nil)
}
关于Go:制作一个可从其他 Go 应用程序调用的守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25086652/