有人知道分布式哈希映射(DHT)的优秀java框架吗?
前段时间我曾与Overlay Weaver合作,但这里缺少一份好的文档,所以我只用它来制作一个丑陋的黑客原型......但现在我需要可靠的代码。或者有人为OverlayWeaver找到了一个好的文档吗?
如果dht框架支持Chord或Kademlia并且可以在我的java应用程序中调用,那将是完美的。
或者有人知道在分布式系统中保存可靠且故障安全的短字符串数据的更好方法吗?
答案 0 :(得分:5)
我认为Hazelcast适用于此类情况。它实际上不需要设置(超过你需要将依赖项添加到Hazelcast jar)。以下代码示例显示了如何设置共享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支持各种共享数据结构,包括Map
,Queue
,List
,AtomicLong
,IdGenerator
等The documentation is good以及我的经验实施是可靠的。
如果您使用的是理智的构建环境(例如Maven),则只需启用以下依赖项:
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>3.4</version>
</dependency>
答案 1 :(得分:2)
试试Hazelcast。它是开源的,并且拥有企业支持。
答案 2 :(得分:0)
尝试Redisson PRO。它支持sharded maps。
答案 3 :(得分: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>