Hazelcast主要以开源缓存和内存数据网格技术(通常称为Hazelcast IMDG,或者只是Hazelcast)为人所熟知。然而过去的两年中,他们一直致力于一个新的、重要的开源项目Hazelcast Jet,近日,他们宣布了这项新技术的一个主要版本。

\\

InfoQ与Hazelcast首席执行官Greg Luck和Jet核心团队工程师Marko Topolnik取得了联系,进一步了解此次发布的激动人心之处。

\\

InfoQ:据介绍,Jet是流处理领域的巨大改进。您能解释下为什么吗?

\\

\

Luck:Jet的主要目标是让运算速度快的大数据成为应用程序基础设施的一部分。类似Spark和Hadoop这样的技术过多地干扰了应用程序开发人员架构和思考。我们希望Jet可以为开发人员提供工具,让他们专注于问题本身,而不是应用程序管道构建。

\\

Jet还提供了突破性的性能——我们有Jet和其他引擎的横向性能对比数据——全都是基于配备旋转磁盘的10节点集群测得——性能数据说明了一切。

\

\\

InfoQ:您能介绍下你们在Jet研发过程中所做的架构及技术决策吗?与当前市场中已有的一些同类产品——尤其是Apache Spark——相比,它有什么与众不同之处吗?

\\

\

Topolnik:我们决定,以“多任务处理(cooperative multithreading)”作为核心执行引擎建模的原则,也就是人们常说的“绿色线程”。这就是说,我们不是让操作系统调度我们的工作,而是有多少CPU内核可用就启动多少线程,运行任何东西都是这样。我们的基本处理单元,我们称之为tasklet,每次被调用时都会做一点工作实现与执行引擎的协作,然后就回归本身的处理工作。由于我们使用了具有智能批处理功能的有界并发队列,所以这种工作模式来得很自然:每个tasklet调用处理已经在队列中的数据。

\\

我们为什么认为这是一个好方法呢?首先,上下文切换的成本几乎为零。从一个tasklet切换到下一个tasklet几乎不需要任何逻辑。其次,我们获得了CPU内核亲和性的效果:tasklet不会在线程之间跳来跳去,每个工作线程都极有可能固定在一个内核上。这意味着CPU缓存命中率会很高。最后,通过检查输入/输出队列,我们就可以立即知道哪个tasklet已经准备好了运行。如果我们使用本地线程,我们就必须使用阻塞队列,而这种队列采用相对重量级的wait/notify机制,我们必须受操作系统支配,必须由它决定什么时候运行我们的任务。

\\

第二个重要的决策是在所有地方都使用单生产者/单消费者的并发队列。为了将N个上游tasklet和M个下游tasklet连接起来,我们需要NxM个队列;不过,这让我们可以在两端都使用速度极快的无等待算法。我们甚至不需要写入内存,因为我们使用了lazySet,它只需要在CPU的存储缓冲区上将数据项加入队列。在消费者端,在将整个队列存入线程本地存储后,我们只需要一个lazySet。

\\

Luck:当然,这些想法受了Martin Thompson及其创立的Mechanical Sympathy的直接影响。

\

\\

InfoQ:Hazelcast IMDG已经有了一个相当巧妙\u0026amp;直观的划分方法。Jet对此有什么改进?除了简单地“将Runnable发送给一个特定的数据划分”之外,在其他什么场景下可以看到大幅的改善?

\\

\

Topolnik:将Runnable发送给一个划分类似于单个DAG顶点的工作。Jet的优势在于,它能够让顶点转换其读到的数据,生成不属于同一个划分的数据项,然后重新组织并发送给下游顶点,再次正确划分。由于任何类型的map-reduce操作的reduce单元都必须观察到所有具有相同键的数据项,所以这是至关重要的。为了最小化网络流量,Jet可以首先减少本地成员生成的数据切片,然后针对每个键只发送一个数据项给远程成员,而后者会将这些部分结果合并。

\\

Luck:我们也有一个java.util.stream的分布式版本,它可以很好地与Jet架构配合,因为我们将源和汇作为Jet的核心部分。在未来版本中,我们还会将Map-with-Predicate作为一个源加入进来,让筛选和“场投影(field projection)”充当Jet的流数据源。

\

\\

InfoQ:您认为,在什么特殊的行业或场景中,Jet会产生特别的影响或者特别成功?

\\

\

Luck:我们认为,Jet对IoT、金融服务、支付处理、欺诈及其他大量使用CEP(复杂事件处理)的行业都将十分有利。我们觉得,对于Jet而言,关键是,当你在一个业务上下文中执行DAG运算时,它能发挥多大的作用,而不仅仅是作为分析工具的一部分。

\

\\

InfoQ:对于Jet,你们会遵循和IMDG一样的产品策略吗?也就是说,开源,但需要付费获得支持及高级功能。

\\

\

Luck:还不一定。从今天(2月8日)开始,我们将为Jet提供专业的支持,和IMDG一样。Jet将可以很好地与IMDG结合,因此,我们预计,在Jet推出之后,IMDG的应用会增加,但是,Jet没有哪一部分是闭源的,将来也不会有。今年晚些时候,我们可能会增加管理监控作为付费特性,虽然那比较明确,但一切都还未定。

\\

我们目前关注的不是将用Jet赚钱——我们只是想让它成为一个遵循Apache 2许可协议的、成功的开源项目。

\

\\

InfoQ:Jet的路线图是什么样的?

\\

\

Luck:现在发布的是0.3版本,之后我们计划每个月发布一次。

\\

我们还计划在两周之后发布0.3.1——只是稍微整理下几个错过0.3版本的部分。特别地,0.3.1版本将和IMDG 3.8一起发布,而且还会增加Jet集群(甚至于已经在运行的任务)弹性扩展功能。

\\

0.4版本应该会包含大量的性能方面的工作。虽然Jet的性能已经非常出众,但我们会对0.4做进一步的改进。我们还将增加JCache支持以及将IMDG监听器作为一个真正的流源。当前版本已经支持IMDG,但是作为一个批处理源,所以,我们还希望增加真正的流支持。

\\

我们已经支持Kafka和HDFS,但还需要做一些性能工作及更多的文档,让它们进入到一等支持状态。

\\

我们还有一些其他的特性,包括一个DAG可视化工具,我们希望将其作为一个Eclipse及IntelliJ插件发布。

\\

我们希望先向社区推出Jet,然后听听社区的声音——那样一来,一旦Jet确定下来,路线图在很大程度上将是社区驱动的。

\

\\

查看英文原文:Hazelcast release Jet, open-source stream processing engine

Hazelcast发布开源流处理引擎Jet相关推荐

  1. Hazelcast发布Jet 0.6版本

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 分布式计算技术和工具开发商Hazelcast正式发布了他们的开源流式处理引擎Jet 0.6. ...

  2. hazelcast 使用_使用Hazelcast发布和订阅

    hazelcast 使用 几周前,我写了一篇有关Hazelcast入门的博客,描述了创建分布式地图,列表和队列是多么简单. 当时我提到,Hazelcast还做很多其他事情. 该博客快速介绍了Hazel ...

  3. 使用Hazelcast发布和订阅

    几周前,我写了一篇有关Hazelcast入门的博客,描述了创建分布式地图,列表和队列是多么简单. 当时我提到Hazelcast还能做很多其他事情. 该博客快速浏览了Hazelcast的另一个功能:基于 ...

  4. hazelcast_使用Hazelcast发布和订阅

    hazelcast 几周前,我写了一篇有关Hazelcast入门的博客,描述了创建分布式地图,列表和队列是多么简单. 当时我提到,Hazelcast还做很多其他事情. 该博客快速介绍了Hazelcas ...

  5. UE4.18预览第一版发布,共享XR引擎层降低硬件支持难度

    (52VR.com优质翻译) 作为Unreal Engine 4的常规更新,9月22日Epic Games发布了Unreal Engine 4.18版本的第一个预览版,其中包括对iOS 11和增强现实 ...

  6. 用C++实现跨平台游戏开发之Allegro引擎

    要:本文重点讨论开源游戏开发库Allegro(Allegro低级游戏例程),同时涉及到一些深度技术并提供了一个简单的示例程序,帮你进一步确定它是否是适合你的开发平台. 一. 一个适于多环境的引擎 Al ...

  7. Apache Camel 2.15.0 发布,Java 规则引擎

    Apache Camel 2.15.0 发布啦!!!该版本经过 6 个月开发,修复了超过 500 个 bug.但最值得关注的是给我们带来的新特性: 自文档 目录组件 Camel 工具类目录 重用 Ca ...

  8. Wonder 1.0 正式版发布,WebGL 3D引擎和编辑器

    介绍 Wonder 1.0正式版发布了.免费.开源,不用注册,直接打开在线编辑器即可使用. Wonder 是 web 端 3D 开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态.Wo ...

  9. 阿里巴巴发布首个知识引擎研究计划,联合清华浙大等五大高校攻坚AI推理

    近日,阿里巴巴宣布联合清华大学.浙江大学.中国科学院自动化所.中科院软件所.苏州大学 5 所高校发布「藏经阁」(知识引擎)研究计划.该计划以结构化的形式描述客观世界中概念.实体及其之间的关系,将互联网 ...

最新文章

  1. 【蓝桥杯】基础练习 十进制转十六进制
  2. 表格c1等于a1加b1_中国最牛驾照,C1、B1、B2、A1、A2随便开,被称为万能的驾照!...
  3. 输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)
  4. Linux—解压缩命令总结(tar/zip)
  5. 2017.9.29 road 失败总结
  6. windows下的yolov3的运行及结果,实例所需的weights,cfg与names文件
  7. 程序员以上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛?
  8. javascript网页自动填表_javascript实现自动填写表单实例简析
  9. php中switch使用
  10. Amazon EKS 版本管理策略与升级流程
  11. Codeforces Round #660 (Div. 2) A. Captain Flint and Crew Recruitment
  12. ajax提交表单序列化不进请求,表单序列化+ajax跨域提交
  13. 循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别
  14. ElasticSearch(项目中常用的ES)
  15. MyEclipse6.5注册码
  16. multisim中轻触开关在哪_proteus中这个开关在哪
  17. NOIP2020游记
  18. 下沉市场“四大天王”受关注 水滴筹成健康保障领域独角兽
  19. 安装YLMF OS 5.0
  20. kong笔记——自定义插件开发

热门文章

  1. mac mysql 账户密码忘记_MAC下MYSQL数据库密码忘记的解决办法
  2. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
  3. centos用ifconfig不显示ip地址的解决方法
  4. webpack 运行提示“The ‘mode‘ option has not been set”的原因和解决方法
  5. 【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案
  6. 为什么Java有瞬态字段?
  7. 为JavaScript日期添加天数
  8. Win10怎样彻底关闭安全中心
  9. win11打开控制面板闪退怎么办 Windows11控制面板闪退的解决方法
  10. unable to recognize ole stream是什么意思_洞彻状态管理,或者说为什么你永远做不到...