25

I've never used distributed caches/DHTs like memcached, jboss cache, ehcache, etc. I'm wondering which, if any, is appropriate for my use.

First, I'm not doing web applications (as most of these project seem to be geared towards web apps). I write servers (Order Management Systems actually) for financial trading firms. The servers themselves are not too complicated. They need to receive information (market data, orders, executions, etc.) rout them to their destination while possibly transforming some of these messages.

I am looking at these products to solve the following problems:

  • Safe repository of the state of the server. I'd rather build the logic of my application as a bunch of transformers (similar to Apache Camel) and store the state in a 'safe' place

  • This repository should be distributed: in case one of these data stores crashes, one or two more should be up and I should be able to switch to them seamlessly

  • This repository should be fast. Single digits milliseconds count here, in other words, systems which consume/process this data are automated systems, not humans clicking on links. This system needs to have high-throughput and low latency. By sending my data outside the process, I am necessarily slowing performance, but I am trying to balance absolute raw speed and absolute protection of data.

  • This repository should be safe. Similar to the point about several on-line backups, this system needs to write data to disk (potentially more than one disk).

I'd really like to stop writing my own 'transaction servers.' Am I correct to be looking into projects such as jboss cache, ehcache, etc.?

Thanks

extraneon
  • 23,575
  • 2
  • 47
  • 51
Shahbaz
  • 10,395
  • 21
  • 54
  • 83

7 Answers7

10

Hazelcast is an open source, transactional, distributed caching solution for Java. Good fit for financial applications. It is released under Apache license.

Hazelcast is actually a little more than a distributed cache; it is distributed implementation of queue, topic, map, multimap, lock, executor service for Java.

Talip Ozturk
  • 1,709
  • 12
  • 14
5

A lot of financial institutions are using Oracle Coherence for this.

It won't match all the points on your list though.

Fortyrunner
  • 12,702
  • 4
  • 31
  • 54
4

You have some good free solutions here. However if you need a faster solution, you could try 29 West or Solace which have sub-100 micro-second latency reliable/guaranteed messaging solutions.

Buhake Sindi
  • 87,898
  • 29
  • 167
  • 228
Peter Lawrey
  • 525,659
  • 79
  • 751
  • 1,130
  • 1
    @HaveAGuess, That is a good point however, implementing a distributed cache is relatively simple once you have low latency connectivity. – Peter Lawrey Apr 06 '11 at 22:24
4

I believe, JBoss Cache is a good enough for your purposes:

  • fast
  • distributed
  • transactional with MVCC implementation (no read locking)
  • supports JTA
  • supports asynchronous mode
  • eviction data to persistent storage (jdbc, bdb, etc)
Andrey Vityuk
  • 991
  • 1
  • 6
  • 11
3

Look at Gemfire it's high-performance in memory data grid. It provide distributed cache, object querieng and event notifications.

Tarlog
  • 10,024
  • 2
  • 43
  • 67
2

Take a look at Cacheonix Distributed Cache and Data Grid. It satisfies your requirements for low latency and reliability by providing a coherent local cache and by distributing the cached data to multiple servers and by replicating the cached data. Full disclosure: I work for Cacheonix.

Slava Imeshev
  • 1,360
  • 10
  • 14
-2

I'll suggest NCache because of the following reasons,

  • Support .NET and java
  • Wide range of topologies
  • No code change required
  • Highly distributed and scalable
  • Absolutely Free (NCache Express)
Timmy
  • 9