对于流数据的处理存在很多技术:简单的事件处理器,流处理器和复杂的事件处理器。即使在开源社区中,也存在很多扑朔迷离的选择,其中很多的差异并没有被很好的记载,也不容易发现。这就是为什么我决定写这篇Apache流技术概述的文章的原因,包括 Flume , NiFi , Apex , Kafka流 , Spark流 , Storm , Flink , Samza , Ignite 和 Beam 。
(点击放大图像)
我原来写过很多篇幅很大的博客,并很受欢迎,但今天我打算破例一次。事不宜迟,马上开始这篇概述吧(点击查看全屏图片):
Flume和NiFi确切地属于数据收集(DC)和单事件处理器(SEP),而其它的是多事件流处理器(ESP)引擎或复杂的事件处理器(CEP)。显然,Spark本身和Ignite确切来说不仅仅是流处理器,但我还是在这里把它们列出来,因为它们提供流媒体功能。Apex也是同样的情况,这是一个统一批次和流数据的平台,它应该是介于一个数据收集引擎、一个基本ETL工具与一个事件流处理器之间。
在撰写本文时,Kafka流还没有正式发布。它有望在2016年4月发布,即将发布的是0.10版本。带有“back-pressure”的一行中标注“N/A”表示没有“back-pressure”,因为队列由Kafka管理,本身仅仅受限于可用的磁盘空间。毕竟,Kafka允许消息闲置重播。
Kafka流的预览当前 可获得 。Kafka流是一个Kafka 的Java库,是最初由LinkedIn开发的消息传递系统。Kafka目前在LinkedIn、Netflix和Spotify中被广泛应用。
自动扩展有时也被称为弹性扩展,动态扩展,动态的(资源)分配和动态工作重平衡。注意,自动扩展并不等同于一个负载平衡器。一个负载平衡器是“简单地”对工作量进行分配,但是当工作负荷相对cluster来说变得太大,或者可用资源超过需求的时候,负载平衡器不会扩张或收缩。
in-flight修改表示在流动当中修改数据的能力,即没有任何停机或应用程序重新提交的情况。有时也被称为零停机扩容,和即席或动态应用程序修改。对于in-flight修改, Spooker 是一个值得多看一眼的项目。
为了平衡起见,我不得不提,在CEP市场上当然还有许多其他选择,例如: Software AG的Apama , 微软的StreamInsight , Oracle事件处理 , SAP ESP , Tibco的BusinessEvents & Streambase 。它们列出时并没有按具体的顺序!另外还有 Esper ,其中有一个可获取的开源版本,是GNU GPL许可的。
表中的信息已经从官方项目页面中被编辑,通过挖掘源代码,主要有下列来源:
这个表并不完整,也不太可能是完全准确的,有些可能也有些过时。如果你确实发现了万有引力的错误,请让我知道,我会尽力以正视听。
如果您对Hadoop的文件格式和SerDes 的类似概述有兴趣,请查看我以前关于这些主题的 帖子 。
感谢杜小芳对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。