1

我正在使用 akka/scala 创建一个包含许多参与者的分布式系统。大多数“工人”参与者将对大量数据的不同子集执行基本相同的操作。我没有将数据存储在公共数据库中并在需要计算时将其分发给工作人员,而是考虑在创建数据时在工作人员之间划分数据,并让每个工作人员负责持久化数据操作。

这是一种常见的架构吗?在什么情况下它才有意义?创建一个架构,其中每个代理负责持久化它将处理的数据,有什么缺点?

4

1 回答 1

2

听起来像是典型的分而治之的方法。

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

如果您使用远程参与者,并将数据存储在执行工作程序的节点的本地磁盘上,那很好。因为IO在写入硬盘时是绑定的,可以分布在集群中。如果所有工作人员都在同一个节点上运行,那么您将不会获得任何收益,因为瓶颈将是写入磁盘。

希望有所帮助。

于 2013-03-24T16:54:24.267 回答