Kafka 概述
Apache Kafka 是一款开源的
消息引擎系统
,也是一个分布式流计算平台
( Event Streaming Platform)<存储和分析> ,此外,还可以作为数据存储
。
Kafka 版本信息
发行版本
来源 | 优势 | 缺失 | |
---|---|---|---|
Apache Kafka | 社区版 Kafka | 优势在于迭代速度快,社区响应度高,使用它可以让你有更高的把控度; | 仅提供基础核心组件,缺失一些高级的特性 |
Confluent Kafka | Confluent 公司提供 | 集成了很多高级特性且由 Kafka 原班人马打造,质量上有保证 | 相关文档资料不全,普及率较低,没有太多可供参考的范例。 |
CDH/HDP Kafka | 大数据云公司提供 | 操作简单,节省运维成本; | 把控度低,演进速度较慢 |
Apache Kafka 版本日志
版本 | 更新日志 | 更新时间 | 文档链接 |
---|---|---|---|
3.5.0 | Kafka 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 由Scala
和Java
编写,Kafka是一种高吞吐量
的分布式发布-订阅
消息系统.
-
消息队列(mq)
: 消息的传输过程中保存消息的容器 , 把要传输的数据放在队列中 -
发布/订阅
:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息 -
默认端口: 9092
API
Apache Kafka有4个主要的API
1、生产者接口
2、消费者接口
3、流接口
4、连接器接口
Kafka拥有三个非常重要的角色特性
- 消息系统。与传统的消息队列或者消息系统类似。
- 存储系统。可以把消息持久化到磁盘,有较好的容错性。
- 流式处理平台。可以在流式记录产生时就进行处理。
消息队列的两种模式
两种类型的消息传递模式可用:
点对点模式 : 一个生产者+一个消费者+一个topic,会删除数据 不常用
# 一对一
消费者主动拉取数据,消息收到后清除消息
发布-订阅模式 : 多个生产者+多个消费者+多个topic/相互独立,不会删除数据 # 多对多
基础架构
Kafka支持的主要应用场景
- “削峰填谷”:所谓的“削峰填谷”就是指缓冲上下游瞬时突发流量,使其更平滑
- 解耦 :即允许独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束
- 异步通信:即允许把一个消息放入队列,但并不立即处理它们,然后再需要的时候才去处理它们。
Resource
Books List
Paper List
Projects
Presentation
Keynote Session | Kafka Summit London 2024
Question
-
Kafka是如何保障数据不丢失的?
-
如何解决Kafka数据丢失问题?
-
Kafka可以保障永久不丢失数据吗?
-
如何保障Kafka中的消息是有序的?
-
如何确定Kafka主题的分区数量?
-
如何调整生产环境中Kafka主题的分区数量?
-
如何重平衡Kafka集群?
-
如何查看消费者组是否存在滞后消费?
Business Example
- 2019-05-17 快手万亿级别Kafka集群应用实践与技术演进之路
- 快手 Kafka 使用场景
- Kafka 的 5 点重要改进:平滑扩容、Mirror 集群化、资源隔离、cache 改造以及消费智能限速
Reference
- Apache Kafka
- 1. 入门 - 【布客】kafka 中文翻译
- Kafka入门实战教程(1)基础概念与术语 - EdisonZhou - 博客园
- Kafka 快速入门 | BIGDATA-TUTORIAL
- Apache Kafka Books and Papers
- What is Apache Kafka
- Know Streaming 运维管控、监控告警、资源治理、多活容灾等核心场景