Java分布式缓存用于低延迟、高可用性。

25

我从未使用过像Memcached、JBoss Cache、Ehcache等分布式缓存/DHT。 我想知道这些产品中哪个是适用于我的需求。

首先,我不做 web 应用程序(因为大多数这类项目似乎都是针对 web 应用程序设计的)。 我为金融交易公司编写服务器(实际上是订单管理系统)。 这些服务器本身并不太复杂。 它们需要接收信息(市场数据、订单、执行等),将它们路由到其目的地,同时可能转换其中一些消息。

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

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

  • 这个存储库应该是分布式的:如果其中一个数据存储失败了,应该有一两个其他存储库可以正常运行,并且我应该能够无缝切换到它们

  • 这个存储库应该是 快速的。 这里计算单个数字毫秒,换句话说,处理这些数据的系统是自动化系统,而不是人类点击链接。该系统需要高吞吐量和低延迟。通过将数据发送到进程外部,我必然会降低性能,但我正在尝试平衡绝对的原始速度和数据的绝对保护。

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

我真的想停止编写自己的“交易服务器”。 我是否正确地研究了 JBoss Cache、Ehcache 等项目?

谢谢

7个回答

10

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

Hazelcast实际上不仅仅是一个分布式缓存;它是Java的队列、主题、映射、多重映射、锁、执行器服务的分布式实现。


5
很多金融机构正在使用Oracle Coherence进行此操作。但它不会匹配您列表上的所有要点。

4

这里有一些不错的免费解决方案。但是如果您需要更快速的解决方案,可以尝试使用29 WestSolace,它们提供了可靠/保证消息传递解决方案,延迟在100微秒以下。


1
@HaveAGuess,那是一个很好的观点。不过,一旦您拥有低延迟的连接,实施分布式缓存就相对简单了。 - Peter Lawrey

4

我相信,JBoss Cache 对于您的目的来说已经足够好了:

  • 速度快
  • 分布式
  • 具有MVCC实现的事务处理(无读锁)
  • 支持JTA
  • 支持异步模式
  • 将数据驱逐到持久存储(jdbc,bdb等)

3

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


如果您需要,它还可以持久化缓存。 - Andrew Swan

2
请查看Cacheonix分布式缓存和数据网格,它通过提供一致的本地缓存并将缓存数据分发到多个服务器并复制缓存数据来满足您对低延迟和可靠性的要求。完整披露:我为Cacheonix工作。

-2
我建议使用 NCache,理由如下:
  • 支持 .NET 和 Java
  • 广泛的拓扑结构
  • 无需更改代码
  • 高度分布式和可伸缩性
  • 完全免费(NCache Express)

1
我猜@Timmy在Alachisoft工作。 - mjaggard
这是一个.NET解决方案。 - de.la.ru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接