我正在构建一个遵循该场景的软件程序:
我有很多计算机,并将它们中的每一台都添加到一个集群中.
集群中的每台计算机都可以将文件添加到分布式表(字典,散列映射,应该足够快).
所以现在我有一个地方,每个人都可以看到组/集群包含哪些文件.
现在,组/集群中的计算机请求文件.他可以从分布式表中访问有关该文件的所有信息(在哪台计算机上可以找到该文件等等).
通过某种机制,它应该从B点(具有该文件的计算机)到A点(请求该文件的计算机)获取文件.
基本上它应该进行数据复制. (但对于非常大的文件)
所以你现在可能想知道,这个quy要求的是什么,这里是:
数据复制应该尽可能快.什么是最好的方法?我想过像通量网络这样的东西.
在场景之后使用软件的最佳框架是什么?
我在寻找一个JAVA FRAMEWORK :). (我需要跑完十字架)
谢谢!
解决方法:
我相信你已经发现有很多用于java的库可以让你实现这种干扰的地图.
> Hazelcast – 块上的新手,非常简单易用,并提供标准Java接口(如ConcurrentMap)的实现
> JGroups – 实际上只是用于群组消息传递的库,但包含DisturbutedHashMap实现
> jBoss Cache – 构建在jGroups之上,提供了一个更完整的干扰缓存系统,具有可选的持久性和事务
> Terracotta – 大而且非常受欢迎,商业支持
> Oracle Coherence – 他们所有的爸爸,价格标签相匹配
还有更多(相当多),我个人的偏好是Hazelcast,它很容易上手.我列出的所有缓存框架(我认为)依赖于能够(至少暂时)能够将整个条目加载到内存中,如果您尝试将大文件的内容放入内存中,这可能是一个问题他们.
在您的情况下,我可能会使用disturbuted映射来存储位置数据,即一些数据告诉任何其他节点特定文件的位置,然后使用某些出站方法(如HTTP)直接转到该节点.