分布式系统,最佳框架?

时间:2009-08-06 11:17:04

标签: java algorithm frameworks distributed

我正在构建一个遵循该方案的软件程序:

我有很多计算机,并将每一台计算机添加到一个集群中。 集群中的每台计算机都可以将文件添加到分布式表(字典,散列映射,应该足够快)。

所以现在我有一个地方,每个人都可以看到组/集群包含哪些文件。 现在,组/集群中的计算机请求文件。他可以从分布式表中访问有关该文件的所有信息(在哪台计算机上可以找到该文件等)。

通过某种机制,它应该从B点(具有该文件的计算机)到A点(请求该文件的计算机)获取文件。

基本上它应该进行数据复制。 (但对于非常大的文件)

所以你现在可能想知道,这个quy要求的是什么,这里是:

数据复制应该尽可能快。什么是最好的方法?我想过像通量网络这样的东西。

在场景之后用于软件的最佳框架是什么?

我正在寻找一个JAVA FRAMEWORK :)。 (我需要跑完十字架)

谢谢!

4 个答案:

答案 0 :(得分:4)

我相信你已经发现有很多java的库允许你实现这种干扰的地图。

  • Hazelcast - 块上的新手,非常简单易用,并提供标准java接口的实现,如ConcurrentMap
  • JGroups - 真的只是用于群组消息传递的库,但包含一个DisturbutedHashMap实现
  • jBoss Cache - 建立在jGroups之上,提供了一个更加完整的干扰缓存系统,带有可选的持久性和事务
  • Terracotta - 非常受欢迎,受商业支持
  • Oracle Coherence - 他们的爸爸,价格标签匹配

还有更多(相当多),我个人的偏好是Hazelcast,它非常容易上手。我列出的所有缓存框架(我认为)依赖于能够(至少暂时)能够将整个条目加载到内存中,如果您尝试将大文件的内容放入内存中,这可能是一个问题它们。

在你的情况下,我可能会使用disturbuted映射来存储位置数据,即一些数据告诉任何其他节点特定文件所在的位置,然后使用某些绑定方法(如HTTP)直接转到该节点。

答案 1 :(得分:1)

JXTA是Sun的Java点对点框架,最有可能在这里使用。

或者查看Jini,它具有服务租赁,动态发现和协议无关的客户端/服务器通信的能力。使用Jini你可以发布具有特定属性的每个服务(在这种情况下你的文件名?),或者可能与Javaspaces一起使用(但我不确定这里是否适合空格)

答案 2 :(得分:0)

答案 3 :(得分:0)

上面有一些关于分布式hashmap的好答案。

如果要尽可能地复制文件,我宁愿不复制任何内容,只需要一些共享存储解决方案。如果必须为每台计算机使用单独的磁盘,那么在每台计算机上设置FTP服务器等简单的操作应该可行。这不一定是基于Java的,但是如果你只想要Java,那么像Apache MINA这样的解决方案就可以了。