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

04 | 我应该选择哪种Kafka?

缺陷:把控度低,演进速度较慢
优势:操作简单,节省运维成本
缺陷:相关文档资料不全,普及率较低
优势:集成了高级特性
缺陷:仅提供基础核心组件,缺失高级特性
优势:迭代速度快,社区响应度高
演进速度较慢
降低对Kafka集群的掌控程度
操作简单
大数据平台天然集成
缺乏国内业务发展计划
提供高级特性
分为免费版和企业版
缺失一些高级的特性
提供最基础的组件
版本迭代速度最快
开发人数最多
CDH/HDP Kafka
Confluent Kafka
Apache Kafka
根据实际需求选择合适的Kafka
CDH/HDP Kafka
Confluent Kafka
Apache Kafka
CDH/HDP Kafka
Confluent Kafka
Apache Kafka
CDH/HDP Kafka
Confluent Kafka
Apache Kafka
Kafka生态圈
大规模流处理领域的名字
Kafka Connect组件
Kafka Streams组件
Apache Storm、Apache Spark Streaming、Apache Flink
能够实现精确一次(Exactly-once)处理语义的实时流处理平台
Kafka不再是一个单纯的消息引擎系统
Kafka当前的定位问题
小结
特点比较
你知道几种Kafka?
参考文章
我应该选择哪种Kafka?

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

在专栏上一期中,我们谈了 Kafka 当前的定位问题,Kafka 不再是一个单纯的消息引擎系统,而是能够实现精确一次(Exactly-once)处理语义的实时流处理平台。
你可能听说过 Apache Storm、Apache Spark Streaming 抑或是 Apache Flink,它们在大规模流处理领域可都是响当当的名字。令人高兴的是,Kafka 经过这么长时间的不断迭代,现在已经能够稍稍比肩这些框架了。我在这里使用了“稍稍”这个字眼,一方面想表达 Kafka 社区对于这些框架心存敬意;另一方面也想表达目前国内鲜有大厂将 Kafka 用于流处理的尴尬境地,毕竟 Kafka 是从消息引擎“半路出家”转型成流处理平台的,它在流处理方面的表现还需要经过时间的检验。
如果我们把视角从流处理平台扩展到流处理生态圈,Kafka 更是还有很长的路要走。前面我提到过 Kafka Streams 组件,正是它提供了 Kafka 实时处理流数据的能力。但是其实还有一个重要的组件我没有提及,那就是 Kafka Connect。
我们在评估流处理平台的时候,框架本身的性能、所提供操作算子(Operator)的丰富程度固然是重要的评判指标,但框架与上下游交互的能力也是非常重要的。能够与之进行数据传输的外部系统越多,围绕它打造的生态圈就越牢固,因而也就有更多的人愿意去使用它,从而形成正向反馈,不断地促进该生态圈的发展。就 Kafka 而言,Kafka Connect 通过一个个具体的连接器(Connector),串联起上下游的外部系统。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka已经不再是一个单纯的消息引擎系统,而是能够实现精确一次处理语义的实时流处理平台。本文介绍了Kafka的发展脉络和生态圈现状,对于指导读者选择合适的Kafka版本具有裨益。文章梳理了Apache Kafka、Confluent Kafka以及Cloudera/Hortonworks Kafka等多个“发行版”,并介绍了它们的特点和适用场景。此外,还提到了Kafka Streams组件和Kafka Connect组件,以及它们在构建Kafka生态圈中的重要作用。对于读者来说,了解这些不同版本的Kafka以及它们的特点,有助于选择适合自己需求的Kafka版本。文章内容涉及技术性较强,对于从事流处理领域或对Kafka感兴趣的读者具有一定的参考价值。 Apache Kafka是开发人数最多、版本迭代速度最快的Kafka,具有高把控度,但缺乏高级特性。Confluent Kafka集成了许多高级特性,但在国内普及率较低。CDH/HDP Kafka操作简单,但把控度低,演进速度较慢。读者可以根据实际需求选择合适的Kafka版本。

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

全部留言(55)

  • 最新
  • 精选
  • yellowcloud
    老师,您好,目前我们使用kafka时,使用的监控工具是kafka manager,后面也尝试过 kafka eagle,但是总是感觉这两款工具做的不尽如人意,有的甚至已经很长时间不维护了,老师能不能推荐下好的监控工具呢?

    作者回复: 试试JMXTrans + InfluxDB + Grafana

    2019-06-12
    2
    67
  • 张亮
    滴滴开源https://github.com/didi/Logi-KafkaManager,是目前市面上最好用的一站式 Kafka 集群指标监控与运维管控平台,欢迎体验交流

    作者回复: 支持!前些天试用了一下,非常惊艳!

    2021-02-06
    6
    38
  • 高志强
    最近接触使用到了两种kafka监控软件,一个是 kafka tools ,能够清晰的看到kafka存储结构。一个是 granafa,能看到消费的折线图。感觉棒棒哒~

    作者回复: 👍

    2019-12-05
    30
  • 永光
    按照文章说的,我理解现在国内大部分用的都是apache kafka 是这样吧?

    作者回复: 就我这边观察到的,Confluent很少,创业公司多是CDH,大厂一般使用Apache Kafka,并且自己做了定制和改造

    2019-06-11
    14
  • 疯琴
    请问老师,kafka是否可以调整一个时间窗口内先发生却后到达的错序数据,使其可以按照事件时间戳的正确顺序被消费?

    作者回复: 需要使用Kafka Streams组件或其他流处理框架编写流处理应用来实现。这是典型的event time windowing场景。 不过具体实现时要微调一下:不是按照事件时间戳的正确顺序被消费,而是保证late message也会被及时处理,并且对状态的影响有且只会有一次。

    2019-06-11
    2
    11
  • 技术修行者
    选择哪个Kafka版本,更多取决于项目性质: 1. 如果是非常紧急的项目,优先选择商业版,毕竟花了钱以后,有人support。 2. 如果是研究性质或者时间相对宽松的项目,选择Apache Kafka,可以在和社区不断交流的过程中加深理解,根据项目需求,做一些定制。

    作者回复: 完全同意:)

    2020-03-07
    6
  • 风中花
    一口气看完4篇,有种从入门到放弃得感觉,感觉越来越重,越来越迷茫! 调整下,调整下,继续坚持下吧,集成得对于菜鸟合适只想用用,如果真得想玩转它控制它还是社区版本。或者有钱整个全套收费得也是一省百省。呵呵

    作者回复: 别放弃!有的时候坚持一下就过去了。我当初看源码就是这样的体会:)

    2019-06-11
    2
    6
  • 莱茵金属
    我想问下kafka性能测试工具有哪些?

    作者回复: 没有特别好的工具。Kafka自己提供了kafka-producer-perf-test和kafka-consumer-perf-test脚本可以做producer和consumer的性能测试。另外LinkedIn开源了一款名为kafka-monitor的端到端系统测试工具,也可以用来测试Kafka集群end-to-end的性能。有些遗憾的是这个工具几乎没什么人维护了,你可以试试吧(https://github.com/linkedin/kafka-monitor)

    2019-06-11
    6
  • 朱广彬
    老师,Client/Broker 跨版本具体会带来什么性能影响呢?Kafka 在1.1版本后做了协议兼容,允许Client/Broker 协议不一致。如果生产上Client/Broker 协议不一致,除了新协议的功能上不兼容,性能上有什么影响呢?比如Client 是1.1而Broker 是2.3,会不会影响比如Zero copy 而导致性能下降?

    作者回复: 功能上是兼容的,只是性能上可能会有影响,因为可能出现需要把消息格式向下转换成老版本的额外中间步骤,增加了延时,降低了TPS

    2019-09-03
    5
  • 老杜去哪儿
    老师,咨询个问题,最近通过spingboot使用非注解方式配置kafka消费者,每一段时间会出现(Re-)joining group的情况,导致即便少量消息也会堆积直到消费者挂上,出现这种情况的原因大概会有哪些呢, 配置如下: Properties props = new Properties(); props.put("bootstrap.servers", env.getBootserver()); // 每个消费者分配独立的组号 props.put("group.id", env.getGroupId()); // 如果value合法,则自动提交偏移量 props.put("enable.auto.commit", "false"); // 设置多久一次更新被消费消息的偏移量 props.put("auto.commit.interval.ms", "1000"); // 设置会话响应的时间,超过这个时间kafka可以选择放弃消费或者消费下一条消息 props.put("session.timeout.ms", "30000"); props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, "100"); props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 600000); // 自动重置offset props.put("auto.offset.reset", "earliest"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); DefaultKafkaConsumerFactory kafkaConsumerFactory = new DefaultKafkaConsumerFactory(props); ContainerProperties containerProperties = new ContainerProperties(topicName); containerProperties.setMessageListener(this); containerProperties.setPollTimeout(300000); ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(3); executor.initialize(); containerProperties.setConsumerTaskExecutor(executor); KafkaMessageListenerContainer container = new KafkaMessageListenerContainer(kafkaConsumerFactory, containerProperties);

    作者回复: 1. 查看一下你的程序中是否频繁创建KafkaConsumer实例; 2. 查看一下你的消息平均处理时间是否超过10分钟

    2019-06-12
    2
    5
收起评论
显示
设置
留言
55
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部