java分布式缓存,用于低延迟,高可用性

时间:2009-03-16 06:04:19

标签: java caching dht trading

我从未使用分布式缓存/ DHT,如memcached,jboss缓存,ehcache等。我想知道哪些适合我的使用。

首先,我不是在做Web应用程序(因为这些项目中的大多数似乎都面向Web应用程序)。我为金融交易公司编写服务器(实际上是订单管理系统)。服务器本身并不复杂。他们需要接收信息(市场数据,订单,执行等),然后将这些信息转发到目的地,同时可能会转换其中一些消息。

我正在研究这些产品以解决以下问题:

  • 服务器状态的安全存储库。我宁愿将我的应用程序的逻辑构建为一堆变换器(类似于Apache Camel)并将状态存储在“安全”的地方

  • 应该分发这个存储库:如果这些数据中的一个存储崩溃,那么应该有一个或两个存储崩溃,我应该可以无缝地切换到它们

  • 此存储库应快速。这里使用单位数毫秒,换句话说,使用/处理此数据的系统是自动化系统,而不是人类点击链接。该系统需要具有高吞吐量低延迟。通过在流程外发送我的数据,我必然会降低性能,但我试图平衡绝对原始速度和绝对数据保护。

  • 此存储库应该是安全的。与几个在线备份相似,该系统需要将数据写入磁盘(可能多于一个磁盘)。

我真的想停止编写自己的“交易服务器”。我是否正确地研究诸如jboss cache,ehcache等项目?

由于

7 个答案:

答案 0 :(得分:9)

Hazelcast是一个用于Java的开源,事务性,分布式缓存解决方案。非常适合金融应用。它是在Apache许可下发布的。

Hazelcast实际上不仅仅是分布式缓存;它是Java的队列,主题,地图,多图,锁,执行服务的分布式实现。

答案 1 :(得分:5)

很多金融机构正在使用Oracle Coherence。

但它不会匹配列表中的所有点。

答案 2 :(得分:4)

我相信, JBoss Cache 足以满足您的目的:

  • 分布式
  • 与MVCC实现的事务处理(无读锁定)
  • 支持JTA
  • 支持异步模式
  • 逐出数据到持久存储(jdbc,bdb等)

答案 3 :(得分:4)

这里有一些很好的免费解决方案。但是,如果您需要更快的解决方案,可以尝试29 WestSolace,它们具有低于100微秒延迟的可靠/有保证的消息传递解决方案。

答案 4 :(得分:3)

看看Gemfire它在内存数据网格中的高性能。它提供分布式缓存,对象查询和事件通知。

答案 5 :(得分:2)

看看Cacheonix Distributed Cache and Data Grid。它通过提供一致的本地缓存并将缓存的数据分发到多个服务器并复制缓存的数据,满足您对低延迟和可靠性的要求。完全披露:我为Cacheonix工作。

答案 6 :(得分:-2)

由于以下原因,我建议NCache

  • 支持.NET和java
  • 广泛的拓扑
  • 无需更改代码
  • 高度分散且可扩展
  • 绝对自由(NCache Express)