我在进程 A 上创建了一个有向图术语,我想将此有向图传递给另一个节点上的进程。每当我在其他进程上使用此有向图时,我都会收到以下错误:
** {badarg,
[{ets,insert,[598105,{"EPqzYxiM9UV0pplPTRg8vX28h",[]}],[]},
{digraph,do_add_vertex,2,[{file,"digraph.erl"},{line,377}]},
因为有向图是基于 ETS 的,所以看起来这要复杂得多,使得有向图在它创建的过程中几乎是独立的。我发现这个条目揭示了一个类似的问题:ETS on a different process
我知道我可以在服务器中创建有向图,然后通过 otp 消息连接到它,但我不能在我的架构中这样做。所有节点都可以使用旨在将状态作为条款传递的特定方法进行通信。
在我看来,将有向图发送到无法直接相互通信的不同节点是不可能的。总的来说,一个有向图似乎不能被直接序列化。我在想我可以将有向图“展开”为顶点和边的列表,然后在另一个进程上传输和重新创建它(效率不高、性能不高或优雅)。关于更好的序列化方法有什么想法吗?有没有办法将有向图状态从 ETS 存储中序列化出来?
有什么想法吗 ?