从零学习Kafka:集群架构和基本概念
在前文中我们从源码层面介绍了 Flink 的 Kafka Connector 的实现。从本文开始我们的目标也正式从 Flink 过渡到 Kafka。什么是 KafkaKafka 官方文档给出的定义是Apache Kafka 是一个事件流平台。它的关键能力如下发布写入和订阅读取事件流包括从其他系统持续导入和导出数据。将事件流持久可靠的存储可以自定义时长。实时处理事件流或历史回溯。我们通过一个最基础的场景来理解一下这些定义系统 A 将数据发送给 KafkaKafka 会将数据进行持久化存储系统 B 从 Kafka 中读取系统 A 发送的数据。那么这里有两个关键问题一是如何设计事件的编码格式二是使用什么样的传输协议。关于编码格式目前有很多成熟的方案比如 Protocol Buffer、Thrift、JSON 等。而 Kafka 使用的是纯二进制的字节序列。确定好了编码格式之后我们再来看传输协议。常见的传输协议有两种点对点模型点对点模型也叫消息队列模型即上游发送的数据只能由一个下游接收。对上面的场景来说就是系统 A 发送的消息只能由系统 B 接收。发布/订阅模型在这个模型中有 topic 的概念会存在多个发布者向同一个 topic 发送消息多个订阅者从 topic 读取消息的情况。Kafka 同时支持这两种模型这点我们在后面会具体阐述。现在知道了什么是 Kafka 之后我们再来考虑另一个问题为什么要使用 Kafka这个问题每个人可能会有不同的答案对我而言使用 Kafka 最主要的原因是做流量缓冲和数据同步。流量缓冲是 Kafka 的应用场景之一在上面的例子中当系统 A 有很大的突增流量时如果直接对接系统 B那么瞬时流量很有可能直接把系统 B 打挂。而 Kafka 就可以在中间起到一个缓冲的作用。给系统 B 留出充足的处理时间同时也避免了因为系统 B 崩溃可能导致的整个链路的雪崩问题。数据同步在实际应用场景中更多与 Flink 结合完成离线数据链路流转或者离线到在线的数据传输。有了这些基本的背景信息之后我们再来看一些 Kafka 的核心概念。核心概念我们从一张图开始对图中的概念逐个进行解释。首先是 Topic在 Kafka 中发布和订阅的对象就是 Topic。通常我们按照业务来拆分把不同业务的数据放在不同的 Topic 中。Topic 的数据是由 Producer 生产的。Producer 即生产者程序它和 Consumer 都可以被称为 Kafka 集群的客户端。Producer 负责把消息写入对应的 Topic 中在写入时会选择对应的 Partition。Partition 类似于 HBase 中的 region它是用来支撑横向扩展的。当我们的消息量太大时一个 Partition 存不下或者处理不过来我们可以选择扩 Partition 的数量。利用多分区分散存储和处理请求的压力。你可能还注意到Partition 还有 Leader 和 Follower 之分这其实是 Kafka 的副本机制Replica它是 Kafka 高可用手段之一。每个分区都会有 1 个 Leader 副本和 n 个 Follower 副本写入消息和消费消息都是由 Leader 副本执行Follower 只负责向 Leader 副本发送请求将最新的消息发送给它这样与 Leader 副本保持同步。在 Kafka 集群的服务端由 Broker 进程对客户端的请求进行处理。将多个 Broker 集群分别部署在不同的机器上是 Kafka 的高可用手段之一。前面我们提到了 Kafka 除了发布/订阅模型之外还支持点对点模型对于点对点模型的支持Kafka 是引入了 Consumer Group 的概念。Consumer Group 是由多个 Consumer 组成负责消费一组主题这组主题中的每一个 Partition 只能由其中的一个 Consumer 消费。如果有新增的 Consumer 加入或者现有的 Consumer 崩溃那么就会进行 Rebalance。在消息写入和消费流程中分别有 Offset 和 Consumer Offset 两个概念。Offset 是在分区中递增的。Consumer Offset 是消费者用来记录自己消费到了哪个 Offset。最后再多提一点Kafka Broker 是使用 Log 保存数据Log 底层又分成了多个 Log Segment消息在 Log Segment 上只能追加写入当一个 Log Segment 写满后就会创建新的 Log Segment 继续写入。Kafka 还会定期清理旧的 Log Segment以此来节省磁盘空间。总结本文我们先是简单介绍了什么是 Kafka接着又介绍了几个核心概念。包括 Topic、Producer、Consumer、Consumer Group、Partition、Replica、Broker、Rebalance等。接下来让我们一起开始学习 Kafka 相关的知识吧。

相关新闻

AI原生应用开发:用户画像特征工程的10个实用技巧

AI原生应用开发:用户画像特征工程的10个实用技巧

AI原生应用开发:用户画像特征工程的10个实用技巧 关键词:用户画像、特征工程、AI原生应用、数据融合、特征分箱、时效性管理、特征评估、高维稀疏、缺失值处理、业务对齐 摘要:在AI原生应用中,用户画像是实现个性化服务的“数字指纹”,而特征工程则是构建这枚指纹的“雕刻…

2026/7/3 3:56:27 阅读更多 →
亲测有效:免费降AI率工具推荐:如何一键降低AI率?论文轻松降AIGC?

亲测有效:免费降AI率工具推荐:如何一键降低AI率?论文轻松降AIGC?

凌晨三点,你瞪着屏幕里那个醒目的“AI疑似率87%”,内心飘过一万句:我真的只是让它润色一下啊!怎么它直接替我写完了整篇论文?! 别问我为啥懂——问就是我也曾被这个数字狠狠伤害过。我对着它修修补补三小时…

2026/7/3 16:57:36 阅读更多 →
【联邦学习入门指南】Part 1:概述与核心逻辑

【联邦学习入门指南】Part 1:概述与核心逻辑

联邦学习入门指南 — Part 1:概述与核心逻辑 🔐 打破数据孤岛的下一代分布式 AI 范式 🎯 目标:理解联邦学习的定义、解决的核心矛盾、工作流程及基础架构 💡 核心:数据不动模型动,数据可用不可见…

2026/7/3 16:57:43 阅读更多 →

最新新闻

VisProg与GPT-3的完美结合:揭秘自然语言生成Python视觉程序的黑科技

VisProg与GPT-3的完美结合:揭秘自然语言生成Python视觉程序的黑科技

VisProg与GPT-3的完美结合:揭秘自然语言生成Python视觉程序的黑科技 【免费下载链接】visprog Official code for VisProg (CVPR 2023 Best Paper!) 项目地址: https://gitcode.com/gh_mirrors/vi/visprog 想要让AI理解你的自然语言指令并自动生成Python视觉…

2026/7/4 6:52:54 阅读更多 →
深入理解Laravel Vonage Notification Channel的核心组件:从ServiceProvider到Message类

深入理解Laravel Vonage Notification Channel的核心组件:从ServiceProvider到Message类

深入理解Laravel Vonage Notification Channel的核心组件:从ServiceProvider到Message类 【免费下载链接】vonage-notification-channel Vonage Notification Channel for Laravel. 项目地址: https://gitcode.com/gh_mirrors/vo/vonage-notification-channel …

2026/7/4 6:52:54 阅读更多 →
SQL聚合函数实战:SQL Ultimate Course数据分析基础指南

SQL聚合函数实战:SQL Ultimate Course数据分析基础指南

SQL聚合函数实战:SQL Ultimate Course数据分析基础指南 【免费下载链接】sql-ultimate-course The most comprehensive SQL guide from a real-world expert! Learn everything from basics to advanced queries, optimizations, and real-world SQL 项目地址: h…

2026/7/4 6:46:51 阅读更多 →
switch.vim性能优化:大型代码库中的高效文本切换策略终极指南

switch.vim性能优化:大型代码库中的高效文本切换策略终极指南

switch.vim性能优化:大型代码库中的高效文本切换策略终极指南 【免费下载链接】switch.vim A simple Vim plugin to switch segments of text with predefined replacements 项目地址: https://gitcode.com/gh_mirrors/sw/switch.vim 你是否在大型代码库中频…

2026/7/4 6:46:51 阅读更多 →
如何智能切换DLSS版本:游戏性能优化的终极指南

如何智能切换DLSS版本:游戏性能优化的终极指南

如何智能切换DLSS版本:游戏性能优化的终极指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏卡顿而烦恼吗?想要提升游戏帧率却不知从何下手?DLSS Swapper正是你需要的游…

2026/7/4 6:44:51 阅读更多 →
CANN/asc-devkit LoadData矩阵搬运

CANN/asc-devkit LoadData矩阵搬运

# LoadData(2D矩阵搬运) 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景…

2026/7/4 6:44:51 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻