Kafka入门基础知识学习笔记-Kafka只是消息引擎吗

学习极客时间 《Kafka核心技术与实战》入门 03-05
作者 胡夕,Apache Kafka 的一名代码贡献者,目前在社区的 Patch 提交总数位列第 22 位,应该说算是国内比较活跃的贡献者了。

胡夕老师 赠言: 聪明人也要下死功夫 。
最近工作杂事比较多,学习进度比较慢,慢慢来吧。

Kafka只是消息引擎吗?

相信对于大多数人来说,接触到Kafka基本上都是基于对消息引擎的需求,在未学习胡夕老师课程时,我对于Kafka的认知也仅限于是跟IBM-MQ、RocktMQ、RabbitMQ一样的消息引擎,用于上下游系统的消息传递。

文章中林夕老师给出答案:
Apache Kafka 是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform)
对于消息引擎系统,Kafka在设计之初就提供三个方面的特性:

  • 提供一套API实现生产者和消费者
  • 降低网络传输和磁盘存储开销
  • 实现高伸缩性架构

对于分布式流处理平台,不是很了解,根据文章中提到的Flink是流处理平台,进行了简单的了解:接收和发送数据流并执行应用程序或分析逻辑的系统称为流处理器。流处理器的基本职责是确保数据有效流动,并且计算可扩展并具有容错能力。

流处理之前:我们的数据一般都是从各各应用系统或者渠道接收到数据保存在数据库中或者存储在NAS等文件系统中,应用程序根据需要查询或者定时计算数据。 
可以结合我们熟悉的批处理来理解。通过接收到数据流后触发某个事件实时的进行数据逻辑计算,而不是在需要之前约定时间进行批处理。

作为流处理平台,Kafka 与其他主流大数据流式计算框架相比,优势在哪里呢?林老师给出以下两点:

  • 第一点是更容易实现端到端的正确性(Correctness)。
    -Google 大神 Tyler 曾经说过,流处理要最终替代它的“兄弟”批处理需要具备两点核心优势:要实现正确性和提供能够推导时间的工具。 实现正确性是流处理能够匹敌批处理的基石。正确性一直是批处理的强项,而实现正确性的基石则是要求框架能提供精确一次处理语义,即处理一条消息有且只有一次机会能够影响系统状态。目前主流的大数据流处理框架都宣称实现了精确一次处理语义,但这是有限定条件的,即它们只能实现框架内的精确一次处理语义,无法实现端到端的。

    对于精确一次处理语义,林老师解读其他主流大数据流处理框架仅能实现其内部的精确一次处理语义,但与Kafka结合对接后,由于不是一个体系,独立系统和模块,其大数据流处理框架无法控制Kafka数据状态的变更,即如果kafka接收到消息但未能成功返回,其可能会再次发送一条数据到kafka。
    但对于Kafka而言则不同,其本身即负责数据的传递流转,在数据传递流转过程中顺便进行数据处理,即可在内部保证精确的一次处理语义。

  • 第 二点是它自己对于流式计算的定位。
    FKafka Streams 是一个用于搭建实时流处理的客户端库而非是一个完整的功能系统。与Flink等完善的流处理平台不同,其缺少类似于集群调度、弹性部署等开箱即用的运维特性,你需要自己选择适合的工具或系统来帮助 Kafka 流处理应用实现这些功能。作为一个轻量级的分布式流处理平台,以满足中小企业对数据的流处理需求。

Kafka版本类型及选择

  • Apache Kafka,也称社区版 Kafka。优势在于迭代速度快,社区响应度高,使用它可以让你有更高的把控度;缺陷在于仅提供基础核心组件,缺失一些高级的特性。

开发人数最多,迭代版本最快,如果仅需要一个消息引擎或简单的流处理场景,推荐使用。

  • Confluent Kafka,Confluent 公司提供的 Kafka。优势在于集成了很多高级特性且由 Kafka 原班人马打造,质量上有保证;缺陷在于相关文档资料不全,普及率较低,没有太多可供参考的范例。

分免费版和企业版两种。企业版提供了很多功能,最有用当属跨数据中心备份和集群监控了,如果需要用到一些Kafka高级特性推荐使用。

  • CDH/HDP Kafka,大数据云公司提供的 Kafka,内嵌 Apache Kafka。优势在于操作简单,节省运维成本;缺陷在于把控度低,演进速度较慢。

需要快速搭建消息引擎系统,或者搭建的是多框架构成的数据平台且Kafka只是其中一个组件,推荐使用。
Kafka入门基础知识学习笔记-Kafka只是消息引擎吗_第1张图片

Kafka版本号

Kafka入门基础知识学习笔记-Kafka只是消息引擎吗_第2张图片

你可能感兴趣的:(Kafka)