正如您所提到的,两者都是流媒体平台,可以实时进行内存计算。但是当你仔细观察时,会有一些架构上的差异。
- Apex 是纱线原生架构,它充分利用纱线进行调度、安全和多租户,而 Flink 与纱线集成。Apex 可以使用纱线在操作员(容器)级别进行资源分配。
- 分区:Apex 支持多种复杂的流分区方案,还允许控制操作员位置和流位置。Flink 支持简单的哈希分区和自定义分区。
- Apex 允许对拓扑进行动态更改,而无需关闭应用程序。Apex 允许在运行时更新应用程序,因此您可以添加和删除运算符、更新运算符的属性或在运行时自动扩展应用程序。Apache Flink 不支持任何这些功能。
- Buffer Server:运营商之间有一条消息总线叫做buffer server。订阅者可以连接到缓冲服务器并从特定偏移量获取数据。这是窗口感知的,只要没有订阅者需要,它就会保存数据。
- 容错性:Apex 有增量恢复模型,失败只能重启部分拓扑,无需回源,在 flink 中回源。
- Apex 有高级 api 和低级 api。Flink 只有高级 api。
- Apex 有一个名为 Apache Malhar 的库,其中包含大量经过良好测试的连接器和处理运算符,可以轻松重用。
- 最后,Apex 更专注于大数据应用程序的产品化,因此具有许多有助于轻松开发和维护应用程序的功能。
注意:我是 Apache Apex 的提交者,所以我听起来可能对 Apex 有偏见 :)