Need a distributed key-value lookup system

2019-03-09 21:18发布

I need a way to do key-value lookups across (potentially) hundreds of GB of data. Ideally something based on a distributed hashtable, that works nicely with Java. It should be fault-tolerant, and open source.

The store should be persistent, but would ideally cache data in memory to speed things up.

It should be able to support concurrent reads and writes from multiple machines (reads will be 100X more common though). Basically the purpose is to do a quick initial lookup of user metadata for a web-service.

Can anyone recommend anything?

10条回答
叛逆
2楼-- · 2019-03-09 21:31

You should probably specify if it needs to be persistent or not, in memory or not, etc. You could try: http://www.danga.com/memcached/

查看更多
相关推荐>>
3楼-- · 2019-03-09 21:31

Try distributed Map structure from Redisson, it based on Redis server. Using Redis cluster configuration you may split data across 1000 servers.

Usage example:

Redisson redisson = Redisson.create();

ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");
map.put("123", new SomeObject());
map.putIfAbsent("323", new SomeObject());
map.remove("123");

...

redisson.shutdown();
查看更多
Root(大扎)
4楼-- · 2019-03-09 21:37

Open Chord is an implementation of the CHORD protocol in Java. It is a distributed hash table protocol that should fit your needs perfectly.

查看更多
家丑人穷心不美
5楼-- · 2019-03-09 21:37

DNS has the capability to do this, I don't know how large each one of your records is (8GB of tons of small data?), but it may work.

查看更多
Animai°情兽
6楼-- · 2019-03-09 21:39

Depending on the use case, Terracotta may be just what you need.

查看更多
我命由我不由天
7楼-- · 2019-03-09 21:42

OpenChord sounds promising; but i'd also consider BDB, or any other non-SQL hashtable, making it distributed can be dead-easy (if the number of storage nodes is (almost) constant, at least), just hash the key on the client to get the appropriate server.

查看更多
登录 后发表回答