Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

40 | Kafka Streams与其他流处理平台的差异在哪里?

Flink等框架需要使用Kafka的事务机制才能支持端到端精确一次处理语义
Kafka Streams天然支持端到端的EOS
Flink等框架通过主节点全局协调控制
Kafka Streams应用依赖于Kafka集群提供的协调功能
其他框架集成了丰富的上下游数据源连接器
Kafka Streams只支持与Kafka集群进行交互
其他流处理平台提供完整的部署方案,包括作业的生命周期管理和资源管理器
Kafka Streams应用需要开发人员自行打包和部署
消息语义保障
协调方式
上下游数据源
应用部署
可以使用任何熟悉的技术或框架对其进行编译、打包、部署和上线
构建高伸缩性、高弹性、高容错性的分布式应用和微服务
不是一个平台,而是一个Java客户端库
Lambda架构:结合流处理和批处理
批处理:准确的计算结果,延时高
流处理:低延时,结果不准确,处理无界数据
无限数据集是指数据永远没有尽头
与批处理相对应
流处理平台是处理无限数据集的数据处理引擎
Kafka Streams与其他框架的差异
Kafka Streams的特色
流处理与批处理的区别
什么是流处理平台?
Kafka Streams与其他流处理平台的差异

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我要和你分享的主题是:Kafka Streams 与其他流处理平台的差异。
近些年来,开源流处理领域涌现出了很多优秀框架。光是在 Apache 基金会孵化的项目,关于流处理的大数据框架就有十几个之多,比如早期的 Apache Samza、Apache Storm,以及这两年火爆的 Spark 以及 Flink 等。
应该说,每个框架都有自己独特的地方,也都有自己的缺陷。面对这众多的流处理框架,我们应该如何选择呢?今天,我就来梳理几个主流的流处理平台,并重点分析一下 Kafka Streams 与其他流处理平台的差异。

什么是流处理平台?

首先,我们有必要了解一下流处理平台的概念。“Streaming Systems”一书是这么定义“流处理平台”的:流处理平台(Streaming System)是处理无限数据集(Unbounded Dataset)的数据处理引擎,而流处理是与批处理(Batch Processing)相对应的。
所谓的无限数据,是指数据永远没有尽头。流处理平台是专门处理这种数据集的系统或框架。当然,这并不是说批处理系统不能处理这种无限数据集,只是通常情况下,它更擅长处理有限数据集(Bounded Dataset)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka Streams与其他流处理平台的差异在于其轻量级的特点。作为一个Java客户端库,Kafka Streams不提供完整的功能,如调度器和资源管理器,更倾向于将部署交给开发人员来处理。另外,Kafka Streams目前只支持与Kafka集群进行交互,缺乏对外部数据源的直接支持。相比之下,其他流处理平台如Spark Streaming和Flink集成了丰富的上下游数据源连接器,并提供完整的部署方案和资源管理器。在分布式协调方面,Kafka Streams应用依赖于Kafka集群提供的协调功能,实现了高容错性和高伸缩性。而在消息语义保障方面,Kafka Streams天然支持端到端的EOS,而其他框架需要依赖Kafka的事务机制来实现。总的来说,Kafka Streams的轻量级特点使其在某些场景下更为便捷,但读者在选择流处理平台时需要考虑其特点和适用场景。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 沧海一粟
    分不太清streams和直接启动consumer消费有什么区别?都是实时的呀。

    作者回复: Kafka Streams是实时流处理组件,默认提供了很多算子,组合在一起可以实现较为复杂的流处理逻辑。Consumer只是单纯的消费者组件,没有这些算子。另外Consumer也不能保证EOS和operator状态管理等常见的流处理框架提供的功能

    2020-04-19
    14
  • hunterlodge
    老师,我一直没理解流处理的正确性是什么,既然是处理无限的数据,那又怎么可以和批处理来比较呢?好比我们无法比较一个无限整数集合的sum以及一个有限整数集合的sum呢?

    作者回复: 无限数据集也可以按照时间线进行窗口化切分,那么我们就关心每个窗口的实时计算结果是否能够和离线计算这段时间内的结果匹配上

    2019-11-07
    2
    10
  • 小刀
    留言好少,我加一个场景,我在用stream关联应用日志和istio的open tracing调用链日志

    作者回复: 👍

    2020-05-19
    2
    5
  • sipom
    batch、streaming区别的图非常形象👍

    作者回复: Thanks, man:)

    2020-03-22
    4
  • 火锅小王子
    老师好,请教下,kafka stream模型底层有应该也是采用拉模型的方式吧,这样的话还是一个轮训的过程,也就是实际上不是属于那种真正的流数据吧 ?

    作者回复: push还pull不影响真正的流处理

    2021-04-27
    1
  • 吴宇晨
    想问老师对新出的ksql有什么看法

    作者回复: 个人感觉市场定位不是很清晰。大数据工程师本身不会用,而对于纯数据分析人员门槛又有点高。

    2019-09-05
    1
  • 时彬斌
    老师好,请问有好用的golang版的处理streams的库推荐吗,目前用的kasper

    作者回复: 对golang的客户端确实不太了解。。。

    2021-01-13
  • 长脖子树
    配图 好评 哈哈哈

    作者回复: 哈哈哈,谢谢~

    2020-06-17
  • Hello world
    老师,你使用有bug的connector是官方的还是自己写的呢?kafka stream如果要写入其他数据源,是不是就得开发自己的connector呢?

    作者回复: 不是官方的,是个人写的。目前Confluent公司在给各个connector做认证。我使用的时候还是比较久远的年代。。。

    2019-09-11
  • 单纯从功能角度来看,Flink 等标准的大数据处理框架肯定是胜过 kafka streams 的。但按照 Confluent CTO 的说法,二者之间的最大区别是:“Flink 和 Kafka Streams 程序之间的根本区别在于它们的部署和管理方式。” 怎么理解这句话呢?一般来说 Flink 等大数据处理平台都是由公司的大数据团队部署和管理的,如果某个应用项目中的部分处理逻辑需要依赖于这些大数据处理平台的话,那必然涉及团队间的协作问题,很多时候这比技术问题本身还难以解决😅。但是如果相关处理不是很复杂的话,其实完全可以通过 Kafka streams 来解决,因此应用研发团队可以完全掌控相关的代码和部署,从而能够快速响应需求变化。
    2020-07-23
    2
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部