用于Java项目的内存数据网格

时间:2012-06-28 09:39:17

标签: caching datagrid scalability distributed

我希望在我的java项目中使用内存数据网格。我知道有一些相关的产品,如VMWare GemFire,GigaSpaces XAP,IBM eXtreme Scale等。有人可以根据他们使用这些工具的经验以及他们如何相互比较来详细说明吗?谢谢,Alex

2 个答案:

答案 0 :(得分:5)

(免责声明 - 我为GigaSpaces工作)

嗨亚历克斯

有许多标准可供比较,它实际上取决于你要做的事情。在内存数据网格中有很多用例,例如:缓存,OLTP,高吞吐量事件处理等 一般来说,您应该关注的主要标准是:

  • 编程模型:支持流行的Java框架,如Spring(XAP和Gemfire本机支持)
  • 查询和索引:如果您想要的不仅仅是简单的键/值数据访问。大多数人都需要SQL语义,甚至是全文搜索,如果数据网格可以提供开箱即用的功能,那么这是一个很大的优势。
  • 能够在网格节点上执行代码,甚至可以将代码与它们共存,并处理注入网格的事件(例如,写入或更新的对象)。这是一个巨大的可扩展性优势,允许您实现非常高效的无共享体系结构。
  • 语言和API支持:大多数数据网格至少支持基于Java和JVM的语言(例如Scala),但是其中许多还支持其他语言,并允许您从各种编程语言访问相同的数据。例如,XAP使用其REST和memcached接口支持本机Java,.Net和C ++以及其他语言。就API而言,一些网格支持多个API。在GigaSpaces,我们支持Map,Spring / POJO,JPA,JDBC等。
  • 交易:如果你想要去除缓存以外的任何地方,这也是一个很大的问题。当使用内存作为记录系统时,您应该能够回滚状态,以防出现错误或错误,否则最终会导致数据损坏。另一个重要的事情是支持哪种类型的事务。许多数据网格仅支持“本地”事务。即在单个节点/分区/分片的边界内(出于性能原因,这可能是您在大多数情况下想要做的事情)。但更高级的网格还支持分布式事务,并且知道如何在需要时从本地无缝升级到分布式。
  • 复制:这里有各种模型(同步,异步,混合),您需要决定哪一个最适合您的用例。某些网格还明确支持通过WAN进行跨群集复制,这对于实施DR非常重要。
  • 数据分区和可扩展性:网格划分数据(固定/一致性散列)如何,用户对其进行控制的程度如何,是否支持向网格动态添加服务器以增加容量。
  • 管理和监控:最后但并非最不重要的 - 开箱即用的设施类型,例如监控和管理挂钩(JMX或其他管理API),用户界面以及与其他第三方系统的集成。

以下链接是一个很好的起点:

  1. http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/。另请阅读评论
  2. http://www.neovise.com/neovise-data-caching-performance-technical-white-paper - GigaSpaces和GemFire最近的比较,我认为这本身就说明了:)
  3. HTH, Uri

答案 1 :(得分:0)

Gartner对内存数据网格市场的总结称为“竞争格局:内存数据网格”。您可以在以下位置查看副本:http://www.gartner.com/technology/reprints.do?id=1-1HCCIMJ&ct=130718&st=sb

Oracle Coherence(以前的Tangosol Coherence)长期以来一直是这一领域的市场领导者,但它是一种商业产品。正如我最近在别处解释的那样:

优点:

  • 弹性。只需添加节点。自动发现。自动负载平衡。没有数据丢失。没有中断。每次添加节点时,您都​​可以获得更多的数据容量和更高的吞吐量。
  • 同时使用RAM和闪存。透明。每个Coherence节点轻松处理10s甚至100s千兆字节(例如每个物理服务器最多TB或更多)。
  • 自动高可用性(HA)。杀死一个进程,没有数据丢失。杀死服务器,没有数据丢失。
  • 数据中心连续可用性(CA)。杀死数据中心,不会丢失任何数据。
  • 可从任何语言获得的RESTful API。用于C / C ++,C#,.NET和Java的本机API和客户端库。
  • 除了简单的键值(K / V)缓存外,还支持查询(包括一些SQL),并行查询,索引(包括自定义索引),丰富的事件模型(用于事件驱动的系统,如交换),事务(包括MVCC),标量(EntryProcessor)和聚合(ParallelAwareAggregator)函数的并行执行,缓存触发器等。
  • 通过读取,预读,直写和后写缓存轻松与数据库集成。当数据库发生更改时,自动刷新已更改的数据(利用Oracle GoldenGate技术)。
  • Coherence Incubator:Coherence Incubator
  • memcache协议支持:github上的Oracle Coherence项目的Memcached接口
  • 成千上万的客户,有些人现在使用Coherence生产了十多年。

缺点:

  • 从Coherence 12.1.2开始,缓存本身并不持久。
  • 花钱。

为了充分披露,我在Oracle工作。本文中表达的观点和观点是我自己的,不一定反映我的雇主的意见或观点。