繁体   English   中英

Akka是否根据可用资源来规范参与者?

[英]Does Akka regulate actors based on available resources?

我有一组数据库文档(几千个),我想为其运行一些数据迁移活动。 这些文档中的每一个都包含对Windows文件系统中不同文件的引用。 这些文件存储在通过共享文件夹访问的文件服务器中。 我想做的是将文件移动到文件系统中的其他位置,然后根据文档中的属性重新排列它们。

我想到了以下设计:

  1. 拥有一个查询数据库的参与者,并且每个文档产生一个参与者
  2. 这些参与者中的每一个都将负责将其相关文件复制到新位置,并负责处理任何例外情况。
  3. 当每个参与者完成任务时,它将把结果(成功/失败)通知中心参与者。

这是幼稚的设计吗? 我应该限制创建的角色多少,还是Akka根据处理器的可用性调节分配的资源? 文件系统方面是否存在任何问题,同时有太多请求处于活动状态?

akka的默认线程池/执行上下文/调度程序每个内核都有一个线程,移动文件可能是一项阻塞操作,因此在给定的任何时刻,您移动的文件数仅与拥有内核的一样多,在此期间,其他角色将被调用。

您可以将调度程序配置为使用更多线程来获取更多的并行活动,或者将文件移动actor放置到不干扰其他actor的特定调度程序中。

也许更好的主意是将文档视为通过系统传递的消息,最后,您将每个文档枚举为一条消息,将其发送给actor,该actor解析文件中的属性,然后将其转发给执行此操作的actor。实际移动。 这样就可以根据磁盘的吞吐量等来决定有多少个解析器-actor实例和多少个move-actor实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM