Kafka基本概念及原理
简介
kafka是用于构建实时数据管道和数据流的应用程序。具有实时横向扩展、高吞吐量、支持大量堆积具有容错性和速度快等特点。它是一个高性能分布式消息系统。通常一个分布式流数据平台它具有三个特点:
- 发布和订阅功能,类似于消息系统
- 以容错的方式记录流
- 处理流
基础概念
Broker
:其实就是Kafka服务,一个Kafka服务叫做一个实例,也就是一个代理。一个集群通常包含多台代理,每个代理有一个非负整数的id,且在整个集群中id值是唯一的。
topic
:就是消息的分类,生产者将消息发送到特定主题,消费者订阅该主题或者主题的分区来进行消费。是一个物理概念。
Partition
:每个topic可以有一个或多个partition(分区)。分区是在物理层面上的,不同的分区对应着不同的数据文件。Kafka使用分区支持物理上的并发写入和读取,从而大大提高了吞吐量。
Producer
:生产者,用来向Kafka中发送数据(record)。
Consumer
:消费者,用来读取Kafka中的数据(record)。
Consumer Group
:一个消费者组可以包含一个或多个消费者。使用多分区+多消费者方式可以极大提高数据下游的处理速度。
- 一般情况下一个topic的 partition 数量是broker数量的整数倍,即 partition % broker = 0
- 一个 partition 只允许同一个消费者组的一个消费者消费,不允许同组多个消费者同时消费一个partition
- 一个分区可以允许多个不同消费者组的消费者消费,每组有且只能有一个消费者消费
offset
:发布到分区的消息会追加到日志文件的尾部,每条消息在日志文件中的位置都会对应一个按序递增的偏移量。不过偏移量不表示消息在磁盘上的位置,而且kafka几乎不允许对消息进行随机读写,消费者可以指定偏移量的的起始位置进行消费。旧版消费者将偏移量保存到Zookeeper中,新版则保存到Kafka内部的一个主题中,消费者也可以保存偏移量到其他地方。
ISR
:所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成 ISR (In Sync Replicas)。 ISR 集合是 AR 集合的一个子集。
AR
:分区中的所有副本统称为 AR (Assigned Replicas)。
OSR
:leader副本同步滞后过多的副本(不包括leader副本)将组成 OSR (Out-of-Sync Replied)
由此可见,AR = ISR + OSR。
HW
:俗称高水位(High Watermark),它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。
LEO
:标识当前日志文件中下一条待写入的消息的offset。上图中offset为9的位置即为当前日志文件的 LEO,LEO 的大小相当于当前日志分区中最后一条消息的offset值加1.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器