Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
Apache Flink与Kafka Streams区别? - Gunnar
22-12-24
banq
Apache Flink与Kafka Stream都能实现流处理,但在一些重要方面有所不同。
下面是从用户的角度出发的,不涉及实现细节:
支持的流平台不同
作为的Apache Kafka项目的一部分,Kafka Streams专门支持Kafka中的数据流处理。
ApacheFlink是平台无关的,可以让你处理Kafka、AWS Kinesis、Google Cloud Pub/Sub、RabbitMQ中的数据。
部署方式不同
Kafka Streams是一个库,你可以把它嵌入到你的Java(或更普遍的,基于JVM的)应用程序中。
Flink也可以像作为一个库使用,但更典型的是,它是作为一个工作者集群运行的,你把你的工作上传到这个集群。它配备了一个Web控制台,可供用户使用,可管理作业、仪表盘、REST API、自动扩展手段("反应模式")、Kubernetes运营商等。所有这些都有助于在prod中大规模地运行流处理作业,而对于Kafka Streams,你必须自己添加这样一个操作层。
接口/API
Kafka Streams是一个专门的Java API(实际上是两个:Streams + Processor API);
Flink提供了两个Java API(DataStream和Table),以及一个Python(PyFlink)和一个内置的SQL接口(Flink SQL)。后者是完全开源的,是Apache Flink项目本身的一部分,与Kafka生态上的ksqlDB不同。
批量处理与流式处理
Kafka Streams专注于无界数据流的有状态处理
而Flink旨在为处理有界作业("批")和无界作业("流")提供一个统一的平台。
连接器集成
源和sink连接器是Flink作业的一个核心要素,即它们与流处理逻辑部署在同一个集群中。
使用Kafka Streams,连接器是通过Kafka Connect集群单独部署和操作的。
stream流处理模式
Java批处理架构
Flink实时流处理系统
Kafka消息系统