Java中的分布式哈希表或分布式信息存储

3

有人知道一个好的Java分布式哈希表(DHT)框架吗?

一段时间以前,我使用过Overlay Weaver,但这里缺少良好的文档,所以我只用它来做了一个带有丑陋hack的原型...,但现在我需要可靠的代码。或者有人找到了OverlayWeaver的好文档吗?

如果DHT框架支持Chord或Kademlia,并可以在我的Java应用程序中调用,那就太完美了。

或者有人知道在分布式系统中保存可靠和安全的短字符串数据的更好方法吗?

4个回答

10

我认为Hazelcast非常适合这种情况。它实际上不需要任何设置(除了您需要将依赖项添加到Hazelcast的Jars中)。以下代码示例显示如何设置共享Map

// Code in process 1
Config cfg = new Config();
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
Map<Integer, String> sharedData = instance.getMap("shared");
sharedData.put(1, "This is shared data");

// Code in process 2
Config cfg = new Config();
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
Map<Integer, String> sharedData = instance.getMap("shared");
String theSharedString = sharedData.get(1);

Hazelcast 支持各种共享数据结构,包括 MapQueueListAtomicLongIdGenerator 等等。文档很好,根据我的经验,实现也很可靠。

如果您使用的是一个合理的构建环境(如 Maven),只需要以下依赖项就可以开始:

<dependency>
    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast</artifactId>
    <version>3.4</version>
</dependency>

哇,Hazelcast 真的很棒又容易使用。感谢您的快速回答 :-) - heaphach
但是似乎你可以付费使用,所以可能有一些限制。你知道免费版本的限制吗? - heaphach
请查看以下定价信息:http://hazelcast.com/pricing/ - 开源替代方案不包括支持、Tomcat会话集群等功能。 - wassgren
但是在免费版本中是否有一些速率限制(例如队列中的许多项目)?这里没有提到,所以我猜没有,但我不确定。 - heaphach
我会这样假设,因为它没有被提及。 - wassgren

2
尝试使用开源的Hazelcast,它有企业级支持。请点击这里了解更多。

0
你也可以检查Apache Ignite。它支持内存分布式键值存储,分布式任务,持久化内存,分布式锁等。它还支持ANSI-99兼容的分布式SQL查询。
开始使用只需添加Maven依赖项即可。
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-core</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-indexing</artifactId>
    <version>${ignite.version}</version>
</dependency>

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接