Kafka 概述

Apache Kafka 是一款开源的消息引擎系统,也是一个分布式流计算平台( Event Streaming Platform)<存储和分析> ,此外,还可以作为数据存储

Kafka 版本信息

发行版本

来源优势缺失
Apache Kafka社区版 Kafka优势在于迭代速度快,社区响应度高,使用它可以让你有更高的把控度;仅提供基础核心组件,缺失一些高级的特性
Confluent KafkaConfluent 公司提供集成了很多高级特性且由 Kafka 原班人马打造,质量上有保证相关文档资料不全,普及率较低,没有太多可供参考的范例。
CDH/HDP Kafka大数据云公司提供操作简单,节省运维成本;把控度低,演进速度较慢

Apache Kafka 版本日志

版本更新日志更新时间文档链接
3.5.0Kafka Streams API的增强,增加对 KIP-847(兼容性优化)的支持;添加更强大的监控工具。2023年6月文档链接
3.4.0引入了可伸缩的 Kafka Connect,并增加了 Kafka Streams 中容错处理的功能。2023年2月文档链接
3.3.0新的 Streams API 改进,如交叉分区流的处理;新的分区分配策略。2022年9月文档链接
2.8.0支持多租户,改进了 Kafka Connect 的任务分布和恢复。2021年4月文档链接
2.7.0增加了对动态配置更改的支持,并显著改进了流处理性能。2020年12月文档链接

其他更新:流处理和连接器等子系统引入了新的功能

Kafka 功能特性(设计目标)

高性能

  • 分区、分段、索引
  • 零拷贝
  • 顺序读写
  • 页缓存
  • 批量读写
  • pull 模式
  • 数据压缩

高可用

  • 持久化
  • 副本机制
  • 选举 Leader

扩展性

  • 分区

定义

Kafka 由ScalaJava编写,Kafka是一种高吞吐量的分布式发布-订阅消息系统.

  • 消息队列(mq) : 消息的传输过程中保存消息的容器 , 把要传输的数据放在队列中

  • 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息

  • 默认端口: 9092

API

Apache Kafka有4个主要的API

1、生产者接口
2、消费者接口
3、流接口
4、连接器接口

Kafka拥有三个非常重要的角色特性

  • 消息系统。与传统的消息队列或者消息系统类似。
  • 存储系统。可以把消息持久化到磁盘,有较好的容错性。
  • 流式处理平台。可以在流式记录产生时就进行处理。

消息队列的两种模式

两种类型的消息传递模式可用:

点对点模式 : 一个生产者+一个消费者+一个topic,会删除数据 不常用 # 一对一

消费者主动拉取数据,消息收到后清除消息

发布-订阅模式 : 多个生产者+多个消费者+多个topic/相互独立,不会删除数据 # 多对多

基础架构

1、生产者 # 发送数据 100T
2、broker
	2-1: 服务器 hadoop102 
	2-2: topic 主题
	2-3: 分区
	2-4: 可靠性: 副本
	2-5: leader follower
	2-6: 生产者和消费者,只针对leader节点操作
3、消费者
	3-1: 消费者和消费者相互独立
	3-2: 消费者组 : 每个分区的数据只能由消费者组中的一个消费者消费
	4-1: broker.ids 0 1 2 
	4-2: leader leader 

Kafka支持的主要应用场景

  • 削峰填谷”:所谓的“削峰填谷”就是指缓冲上下游瞬时突发流量,使其更平滑
  • 解耦 :即允许独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束
  • 异步通信:即允许把一个消息放入队列,但并不立即处理它们,然后再需要的时候才去处理它们。

Resource

Books List

Paper List

Projects

Presentation

Keynote Session | Kafka Summit London 2024

Question

面试|Kafka常见面试问题总结 | Jmx’s Blog

  • Kafka是如何保障数据不丢失的?

  • 如何解决Kafka数据丢失问题?

  • Kafka可以保障永久不丢失数据吗?

  • 如何保障Kafka中的消息是有序的?

  • 如何确定Kafka主题的分区数量?

  • 如何调整生产环境中Kafka主题的分区数量?

  • 如何重平衡Kafka集群?

  • 如何查看消费者组是否存在滞后消费?

Business Example

Reference