用于通过RPC传递匿名函数的GobEncoder

时间:2013-04-29 04:05:10

标签: go rpc gob

我正在尝试构建一个系统,它将在多台机器上执行一个函数,通过RPC匿名传递函数到每个工作机器(一个MapReduce)以在某些数据子集上执行。 Gob不支持编码函数,尽管GobEncoder的docs表示“实现GobEncoder和GobDecoder的类型可以完全控制其数据的表示,因此可能包含私有字段,通道和函数等内容,这通常不会在采空区中传播“所以似乎有可能。

这可能如何运作的任何例子?我不太了解如何使用Gob进行编码/解码。

2 个答案:

答案 0 :(得分:4)

恕我直言,这是行不通的。如果您的类型实现了,那确实如此 Gob {En,De}编码器它可以(de)序列化结构的未导出字段仍然不可能(de)序列化代码:Go是静态编译和链接的 运行时代码生成功能(这将绕过编译时类型 安全性)。

简短:您无法序列化功能,只能序列化数据。你的工人必须提供 你不想执行的功能。看一下encoding / rpc。

答案 1 :(得分:1)

你可能想尝试GoCircuit,它提供了一个基本上允许你这样做的框架:

http://www.gocircuit.org/

它的工作原理是将二进制文件复制到远程计算机,启动它,然后执行一个有效地说“使用args A,B,...执行函数X”的RPC。