由于两者都是一次处理事件的流框架,因此这两种技术/流框架之间的核心体系结构差异是什么?
另外,在某些特定的用例中,哪一种比另一种更合适?
如您所提到的,这两个都是流平台,可以实时在内存中进行计算。但是,当您仔细观察时,仍存在一些体系结构差异。
Apex是 yarn native 体系结构,它充分利用 yarn 进行调度,安全性和 Multi-Tenancy ,而Flink与 yarn 集成在一起。 Apex可以在运算符(operator)(容器)级别使用 yarn 进行资源分配。 分区:Apex支持多种复杂的流分区方案,还允许控制运算符(operator)的本地性和流本地性。 Flink支持简单的哈希分区和自定义分区。 Apex允许动态更改拓扑,而不必关闭应用程序。 Apex允许在运行时更新应用程序,因此您可以添加和删除运算符,更新运算符的属性或在运行时自动缩放应用程序。 Apache Flink不支持任何这些功能。 缓冲服务器:运算符(operator)之间有一条称为缓冲服务器的消息总线。订户可以连接到缓冲服务器,并从特定的偏移量获取数据。这是窗口感知的,并且只要没有订阅者需要就保存数据。 容错能力:Apex具有增量恢复模型,在发生故障时,它仅可以重新启动部分拓扑,而无需返回源,而在flink中,它可以返回源。 Apex具有高级api和低级api。 Flink仅具有高级api。 Apex有一个名为Apache Malhar的库,该库具有各种经过良好测试的连接器和处理运算符,可以很容易地重用。 最后,Apex更专注于产品化大数据应用程序,因此其许多功能将有助于轻松开发和维护应用程序。
注意:我是Apache Apex的提交者,所以我可能偏向于Apex :)