BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Java内存数据网格Hazelcast 3.0支持连续查询和条目处理

| 作者 Srini Penchikala 关注 36 他的粉丝 ,译者 马德奎 关注 0 他的粉丝 发布于 2013年10月22日. 估计阅读时间: 7 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

Java开源内存数据网格Hazelcast的最新版本支持“条目处理(Entry Processing)”、多线程执行、连续查询和延迟索引。Hazelcast 3.0在两周前的JavaOne会议期间发布,体现了该产品自2008年创建以来的最大变化,以及改写其70-80%的代码所做出的努力。它还使用服务提供程序接口(SPI)重新实现了所有现有的分布式对象,如Map、Queue和ExecutorService等。

借助多线程执行这一新特性,操作现在可以由多个线程执行(由处理器内核因子确定),这有助于在多核机器上进行扩展。新SPI允许开发新的分区服务和数据结构。所有Hazelcast数据结构,如Map、Queue,均使用SPI进行了重新实现。

Hazelcast 3的其它技术特性包括:

条目处理:Hazel cast 3有一个称为条目处理的新特性,使开发人员可以对Map进行快速内存操作,而无须担心锁或并发问题。EntryProcessor是一个可以修改或替换映射条目值的接口。它既可以作用在单个映射条目上,也可以作用在所有映射条目上。未来版本还会增加使用Predicate选择目标条目的支持,如“查找和替换”。EntryProcessor可以与Hazelcast的另一个新特性一起使用:内存格式设置。在默认情况下,条目值存为字节数组(二进制格式),但当它存为对象(对象格式)时,条目处理器可以直接作用在该对象上。EntryProcessor的另一个特性是,它可以自动取得映射条目的独占访问,而无须使用同步来防止更新丢失。

序列化:作为现有序列化方法的一种替代方法,Hazelcast提供了Portable序列化接口。该接口有许多优点,如相同对象类型的多版本支持和不依赖于反序列化和/或反射的查询和索引支持。Hazelcast还提供了IdentifiedDataSerializable接口,它是DataSerializable接口的略微优化版本,不使用类名和反射进行反序列化。Hazelcast还允许开发人员插入自定义的串行器用于对象序列化。

连续查询:特性允许程序员设置查询,这些查询会在addition/update/remove/evict事件中的任何数据与其相匹配时触发。这一过程由侦听器完成。侦听器使用查询进行注册,并在Map条目发生了与查询相匹配的变化时获得通知。在支持诸如复杂事件处理(CEP)这样的情况时,这很有用,而此类情况通常需要单独的产品支持。

延迟索引:借助延迟索引这一新特性,开发人员无须每次在开始阶段就添加索引,而是可以在任何时候为条目添加索引。

分布式事务:Hazelcast 3支持两阶段提交的分布式事务。新事务API同时支持1-阶段(本地)和2-阶段事务。

InfoQ就新版本的特性与Hazelcast的共同创建者Fuad Malikov进行了交谈。

InfoQ:在新版本中增加分布式事务支持的动机是什么?与关系数据库中的2PC事务相比,它在内存数据网格中是如何工作的?该特性有什么限制吗?

Fuad我们听取了很多来自社区的建议。Hazelcast用户要求Hazelcast提供2阶段提交(2PC)事务的能力。例如,他们希望能够在一个分布式队列中消费一个数据项,对其进行处理,然后将一个条目存入另一个分布式Map中。这整个过程需要在一个事务中完成,这样,在节点失败时,才不会丢失未处理的数据。

Hazelcast是完全的内存解决方案,在默认情况下,它依赖多节点内存复制实现持久性。2PC的实现也是如此。在准备状态,它就在多个节点上复制事务状态。

另外,Hazelcast的下一个版本将能够通过JCA以及JMS和JDBC等其它资源参与XA事务。

InfoQ:对于Hazelcast v3中的连续查询特性,您可以解释下它的工作原理吗?

Fuad在这些特性中,这是另一个使人们认识到内存数据网格不仅仅是缓存的特性。连续查询提供了便利和分布式处理能力这一“存储过程”由来已久的思想,但它与现代复杂事件处理(CEP)模式更为类似。与数据库存储过程不同的是,在Java中,连续查询可以保证应用层中应用逻辑的清晰。除此之外,它还具有其它优点,包括有极高的可扩展性,以及能够保证在数据所在的位置对其进行处理,从而使这一过程非常快速和高效。

连续查询的实现结合了Event和Predicate API。Hazelcast支持EntryListener,该侦听器监听在Map条目上进行的ADDED、UPDATED、REMOVED或EVICTED等操作。在先前的版本中,它就可以监听所有的Map条目或者特定的Key。除此之外,借助连续查询特性,开发人员可以定义查询(Predicate),而只有更新的条目与该查询匹配时才会触发事件。通过这种方式,侦听器会收到一个基于查询的连续的事件流。

InfoQ:在Hazelcast的下一个版本中,有什么开发人员可以期待的新特性和功能增强吗?

Fuad为了创建Hazelcast 3,它70-80%的代码都重写了,这使我们能够支持一些主要架构的模块化。在下一个版本里,其中一个真正令人兴奋的特性是服务提供程序接口(SPI)。我们将Hazelcast内部构件分成Networking、Clustering、Partitioning和Service等四个模块。这些内部构件将暴露为SPI,因此社区可以对Hazelcast进行扩展和开发自定义的分布式数据结构和处理服务。另一个特性是可移植客户端协议。该协议使开发人员可以用任何语言实现客户端。我们会发布C++客户端,并期待由社区来实现其它语言的客户端,如Python和Ruby。

Hazelcast 3遵循Apache 2许可协议,可以从其产品网站上下载。

查看英文原文:Java In-Memory Data Grid Hazelcast 3.0 Supports Continuous Queries and Entry Processing

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

很好很强大 by yang jun

正打算试用 ....

CEP SQL与云计算的融合 by Gen CEPGuru

现在越来越多的技术都在将传统的数据管理和云计算技术进行结合。例如Hive,Impala,是将SQL语言和大数据存储进行融合。流式数据管理方面CEP SQL也在和分布式缓存、并行计算进行融合。如,速德贝斯SODBASE CEP平台。www.sodbase.com 本身的CEP SQL支持Negation、Kleen closure等操作,同时支持分布式扩展接口和优良的大数据存储平台的对接能力。包括与Gemfile和Hazelcast的对接也是发展趋势。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT