Skip to content
liangmanlin edited this page Apr 14, 2021 · 2 revisions

有时候你可能在构建一个大型集群系统,你的节点可能不止一个,这个时候你希望节点间可以无缝交互,并且就好像在一个节点里面一样。

这里推荐你使用 node 库,该库实现了类似erlang/OTP一样的多节点模式。

你只需要在需要的时候,启动一下node服务即可。由于go无法像erlang一样从二进制中直接获得对象,所以夸节点传输这里是选择gootp/gate/pb作为打包协议。

  • Start(nodeName string, cookie string, defs []interface{})

    启动多节点支持,其中 defs是一组需要跨节点传输的数据结构,例如[]interface}{&Succ{}},nodeName 需要符合这个规则:[email protected]

  • ConnectNode(destNode string) bool

    链接目标节点,成功返回true

  • GetCookie() string

    获取当前节点cookie

  • Monitor(nodeName string,pid *kernel.Pid)

    有时候你需要关心节点是否断开链接了,你可以使用这个api,当节点状态发生变化后,目标进程会收到cast消息:*NodeOP

  • DeMonitor(nodeName string,pid *kernel.Pid)

    取消监控

  • RpcRegister(fun string,function RpcFunc)

    注册一个函数到rpc服务

  • RpcCall(node interface{}, fun string, argStruct interface{}) (succ bool, result interface{})

    远程调用注册的函数,即使是当前节点,也可以返回。

Clone this wiki locally