使用Akka在Scala中快速批量文件复制

时间:2011-12-12 17:09:51

标签: scala nio actor akka

我想知道在Scala中将文件src复制到dest的最佳方法是什么,它将被包装在Akka Actor中,并且可能使用带有多台机器的RemoteActor。

我有大量的图像文件,我必须从一个目录复制到NFS安装目录。

在Java或Scala中没有做太多的FileHandling,但是知道自从Scala 2.7以来已经有了NIO lib和其他一些已经处理过的工作。最安全,最快捷的东西。

我可能也应该对我的基础设施有所了解。连接为1000 MB,通过Cisco3560从Isilon节点连接到Windows 2003 Server。 Isilon节点是NFS安装,Windows 2003 Server是高度配置的Samba(Cifs)安装。

1 个答案:

答案 0 :(得分:1)

您可能无法击败底层操作系统文件的复制速度,因此如果文件很大或者您可以批量处理它们,您可能最好用Scala编写shell脚本然后用bash或其他方式调用它。有可能一个线程可以使磁盘IO饱和,所以真的没什么好看的。如果图像很大,您将等待磁盘上的50个MB / s限制(或100 Mbps以太网上的10个MB / s限制);如果它们很小,那么你将等待文件搜索和网络ping时间相当于几十毫秒的开销,等等。

也就是说,您可以使用具有文件复制实用程序的Apache Commons IO,并且previous question在评分最高的条目中具有高性能答案。你可以让一个actor处理所有的复制任务,这应该像你有一群演员试图争夺相同的有限IO带宽一样快。