我正在构建一个遵循该方案的软件程序:
我有很多计算机,并将每一台计算机添加到一个集群中。 集群中的每台计算机都可以将文件添加到分布式表(字典,散列映射,应该足够快)。
所以现在我有一个地方,每个人都可以看到组/集群包含哪些文件。 现在,组/集群中的计算机请求文件。他可以从分布式表中访问有关该文件的所有信息(在哪台计算机上可以找到该文件等)。
通过某种机制,它应该从B点(具有该文件的计算机)到A点(请求该文件的计算机)获取文件。
基本上它应该进行数据复制。 (但对于非常大的文件)
所以你现在可能想知道,这个quy要求的是什么,这里是:
数据复制应该尽可能快。什么是最好的方法?我想过像通量网络这样的东西。
在场景之后用于软件的最佳框架是什么?
我正在寻找一个JAVA FRAMEWORK :)。 (我需要跑完十字架)
谢谢!
答案 0 :(得分:4)
我相信你已经发现有很多java的库允许你实现这种干扰的地图。
还有更多(相当多),我个人的偏好是Hazelcast,它非常容易上手。我列出的所有缓存框架(我认为)依赖于能够(至少暂时)能够将整个条目加载到内存中,如果您尝试将大文件的内容放入内存中,这可能是一个问题它们。
在你的情况下,我可能会使用disturbuted映射来存储位置数据,即一些数据告诉任何其他节点特定文件所在的位置,然后使用某些绑定方法(如HTTP)直接转到该节点。
答案 1 :(得分:1)
JXTA是Sun的Java点对点框架,最有可能在这里使用。
或者查看Jini,它具有服务租赁,动态发现和协议无关的客户端/服务器通信的能力。使用Jini你可以发布具有特定属性的每个服务(在这种情况下你的文件名?),或者可能与Javaspaces一起使用(但我不确定这里是否适合空格)
答案 2 :(得分:0)
答案 3 :(得分:0)
上面有一些关于分布式hashmap的好答案。
如果要尽可能地复制文件,我宁愿不复制任何内容,只需要一些共享存储解决方案。如果必须为每台计算机使用单独的磁盘,那么在每台计算机上设置FTP服务器等简单的操作应该可行。这不一定是基于Java的,但是如果你只想要Java,那么像Apache MINA这样的解决方案就可以了。