我有一组数据库文档(几千个),我想为其运行一些数据迁移活动。这些文档中的每一个都包含对Windows文件系统中的不同文件的引用。这些文件存储在通过共享文件夹访问的文件服务器中。我想要做的是将文件移动到文件系统中的不同位置,根据文档中的属性重新排列它们。
我想到了以下设计:
这是一个天真的设计吗?我应该限制创建的演员数量,还是Akka根据处理器可用性调节分配的资源?在文件系统方面是否会出现任何问题,同时有太多请求被激活?
答案 0 :(得分:2)
akka的默认线程池/执行上下文/调度程序将有一个类似于每个核心一个线程的东西,移动文件可能是一个阻塞操作,所以你只需要在任何给定时刻移动尽可能多的文件,因为你有核心和期间那个时候没有其他演员会被调用。
您可以将调度程序配置为使用更多线程来获取更多并行活动,或者将文件移动actor放到不干扰其他actor的特定调度程序中。
也许更好的想法是将文档视为通过系统传递的消息,最后将每个文档枚举为消息,将其发送给从文件中解析属性并将其转发给actor的actor这实际上是移动。这样就可以根据磁盘的吞吐量等来决定有多少个解析器 - actor实例和多少个mover-actor实例。