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

Ale*_*man 1 datagrid distributed caching scalability

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

小智 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之间的比较,我认为这本身就说明了:)

HTH,Uri