负责持久保存他们将使用的数据的演员?

时间:2013-03-24 05:12:44

标签: scala architecture persistence akka actor

我正在使用akka / scala创建一个包含许多actor的分布式系统。大多数“工人”角色将对大量数据的不同子集执行基本相同的操作。我不是在需要计算时将数据存储在公共数据库中并将其分发给工作者,而是考虑在创建工作者时将数据分开,并使每个工作者最终负责保存数据。操作。

这是一种常见的架构,在什么情况下会有意义?创建一个体系结构有什么缺点,每个代理负责持久保存它将要处理的数据?

1 个答案:

答案 0 :(得分:2)

听起来像是一种典型的分而治之的方式。

在考虑让工作人员存储处理过的数据时要记住的事情是这个过程通常是IO绑定的。根据您存储数据的方式,您可能无法获得任何收益。

如果您正在使用远程actor,并将数据存储在执行worker的节点的本地磁盘上,那很好。因为IO在写入可以在集群中分布的硬盘时受到约束。如果在同一节点上运行的所有工作者都不会获得任何好处,因为瓶颈会写入磁盘。

希望有所帮助。