java distributed cache for low latency, high availability

13,803

Solution 1

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.

Solution 2

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

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

Solution 3

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.

Solution 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)

Solution 5

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

Share:
13,803

Related videos on Youtube

Scott Cumming
Author by

Scott Cumming

Updated on April 16, 2022

Comments

  • Scott Cumming
    Scott Cumming about 2 years

    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

  • Vishy
    Vishy about 13 years
    @HaveAGuess, That is a good point however, implementing a distributed cache is relatively simple once you have low latency connectivity.
  • juckele
    juckele over 11 years
    It can also persist the cache if that's what you want.
  • mjaggard
    mjaggard over 11 years
    I'm going to go ahead and guess that @Timmy works for Alachisoft.
  • de.la.ru
    de.la.ru about 7 years
    This a .NET solution