Kafka 概述
定义
Kafka 由Scala
和Java
编写,Kafka是一种高吞吐量
的分布式发布-订阅
消息系统.
-
消息队列(mq)
: 消息的传输过程中保存消息的容器 , 把要传输的数据放在队列中 -
发布/订阅
:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息 -
默认端口: 9092
API
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
- Kafka at LinkedIn
- 2019-05-17 快手万亿级别Kafka集群应用实践与技术演进之路
- 快手 Kafka 使用场景
- Kafka 的 5 点重要改进:平滑扩容、Mirror 集群化、资源隔离、cache 改造以及消费智能限速
Reference
- The Log : What every software engineer should know about real-time data’s unifying abstraction - By Jay PKreps 201311
- Bufstream 几分钟内将 Kafka 消息传输到 Iceberg
- Monitoring Kafka Performance Metrics | Datadog
- Kafka入门实战教程(1)基础概念与术语
- Kafka 快速入门 | BIGDATA-TUTORIAL
- Apache Kafka include Books and Papers
- What is Apache Kafka
- Know Streaming Kafka实时流运行平台,提供运维管控、监控告警、资源治理、多活容灾等核心场景
- Apache Kafka Overview. The terminology and the architecture. | by Vu Trinh | Data Engineer Things
- 源码的一些介绍