首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Akka参与者之间共享或访问大型不可变数据

在Akka参与者之间共享或访问大型不可变数据
EN

Stack Overflow用户
提问于 2016-09-02 07:06:57
回答 2查看 346关注 0票数 0

我正在开发一个应用程序,它在一个不可变的数据结构上进行大量的数字运算。(一个非常大的数组的集合--本质上是一个大的矩阵。假设一个典型的大小是200列乘以100,000行的双精度。)许多计算可以以不同的方式并行化,我想利用Akka角色模型来解决这个问题。

我担心必须在消息中传递这个矩阵(或其中的一部分),因为我认为这将涉及到大量的复制和序列化。

我是不是想多了这个问题?(也就是说,如果一个主管参与者将这个矩阵的一些数组传递给它的下属,那么Akka运行时是否足够智能,可以将其作为引用传递--假设它们保持在同一个JVM上--而不是将所有内容序列化为传递的消息?)

我想问这个问题的更简单的方法是:应该避免在消息中传递大量数据结构的情况吗?

我只想重申一下:这些数据是完全不变的。它永远不会改变。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-02 16:34:35

只有当您发送到remote actor (或者,扩展到集群节点)时,Akka才会序列化消息。远程并不一定意味着涉及到适当的网络;它可以是同一台机器上的不同JVM (通过环回接口)。如果在没有任何远程处理的JVM上有一个参与者系统,那么只传递一个引用,就像您将消息放在一个队列上并拥有一个不同的Thread it一样。

票数 2
EN

Stack Overflow用户

发布于 2016-09-03 05:23:51

通常,不应该将非常大的数据结构传递给远程参与者。相反,将您的数据结构上传到某种类型的持久性blob存储(HDFS、S3等),并发送一条消息告诉远程参与者新数据可供处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39282117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档