当前位置: 首页 > news >正文

kafka的架构和工作原理

目录

Kafka 架构

Kafka 工作原理

Kafka 数据流

Kafka 核心特性

总结

Kafka 架构

1. 生产者(Producer)

2. 消费者(Consumer)

3. 主题(Topic)

4. 分区(Partition)

5. 副本(Replica)

6. 代理(Broker)

7. ZooKeeper(旧版本)/KRaft(新版本)

Kafka 工作原理

1. 消息生产

2. 消息存储

3. 消息消费

4. 领导者选举

5. 集群协调


Kafka 架构

Kafka 是一个分布式流处理平台,核心架构包括以下组件:

  1. Producer(生产者)

    • 负责将消息发布到 Kafka 的 Topic 中。

  2. Consumer(消费者)

    • 从 Topic 订阅并消费消息。

  3. Broker(服务器)

    • Kafka 集群中的每个节点都是一个 Broker,负责消息的存储和转发。

  4. Topic(主题)

    • 消息的逻辑分类,生产者将消息发送到特定 Topic,消费者从 Topic 订阅消息。

  5. Partition(分区)

    • 每个 Topic 可以分为多个 Partition,分区是 Kafka 并行处理的基本单位,每个分区是一个有序、不可变的消息序列。

  6. Replica(副本)

    • 每个 Partition 可以有多个副本,分布在不同的 Broker 上,确保数据的高可用性和容错性。

  7. Leader 和 Follower

    • 每个 Partition 有一个 Leader 副本和多个 Follower 副本,Leader 负责处理读写请求,Follower 从 Leader 同步数据。

  8. Zookeeper

    • 用于管理 Kafka 集群的元数据、Broker 状态、Leader 选举等。


Kafka 工作原理

  1. 消息发布

    • Producer 将消息发送到指定的 Topic,消息根据分区策略(如轮询、哈希等)分配到某个 Partition。

  2. 消息存储

    • 消息以追加(Append)的方式写入 Partition 的日志文件(Log Segment),Kafka 不会修改或删除已写入的消息。

  3. 消息复制

    • Leader Partition 将消息复制到所有 Follower Partition,确保数据冗余和高可用性。

  4. 消息消费

    • Consumer 从 Partition 拉取消息,每个 Consumer 属于一个 Consumer Group,组内的 Consumer 共同消费一个 Topic 的消息,每个 Partition 只能被组内的一个 Consumer 消费。

  5. Offset 管理

    • Consumer 通过 Offset 记录消费进度,Kafka 将 Offset 存储在内部 Topic(__consumer_offsets)中,确保消费状态可恢复。

  6. 日志清理

    • Kafka 提供两种日志清理策略:

      • 日志删除(Log Retention):根据时间或大小删除旧数据。

      • 日志压缩(Log Compaction):保留每个 Key 的最新值,适用于 Key-Value 场景。

  7. 高可用性

    • 通过副本机制和 Leader 选举实现高可用性。如果 Leader 失效,Zookeeper 会从 ISR(In-Sync Repl

http://www.lryc.cn/news/535809.html

相关文章:

  • 游戏引擎学习第100天
  • 机器学习:朴素贝叶斯分类器
  • 打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?
  • 力扣24题——两两交换链表中节点
  • android launcher拖动图标释放错位
  • window ssh免密码输入
  • 2024年博客之星年度评选—主题文章创作评审文章得分公布
  • vscode插件Remote - SSH使用教程
  • 自学人工智能大模型,满足7B模型的训练和微调以及推理,预算3万,如何选购电脑
  • github不翻墙就可以访问
  • 十大知识领域中涉及到的工具与技术(三)
  • 在nodejs中使用RabbitMQ(三)Routing、Topics、Headers
  • 设计模式全解(含代码实例)
  • springboot019-爬虫基于网页开发和数据抓取技术的在线新闻聚合平台的设计与实现
  • #渗透测试#批量漏洞挖掘#LiveBos UploadFile 任意文件上传漏洞
  • 【分布式架构理论3】分布式调用(1):负载均衡
  • 如何安装和运行Zonos:详细步骤指南
  • docker学习---第3步:docker实操大模型
  • 记录第一次在windows环境编译libuvc库 踩的坑
  • 快速集成DeepSeek到项目
  • 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接
  • [前端] axios网络请求二次封装
  • 本地部署DeepSeek Nodejs版
  • 【PL/SQL】常用操作复习20250212
  • vue3-02基础认识vue3中main.js入口文件,app.vue(不存在唯一根节点),扩展程序vue-devtools安装
  • 如何下载Qt和运行第一个程序。
  • 【MySQL例题】我在广州学Mysql 系列——有关数据备份与还原的示例
  • 硬件学习笔记--40 电磁兼容试验-4 快速瞬变脉冲群试验介绍
  • 国密算法SM1、SM2、SM3和SM4 具体的使用和区别
  • 在Ubuntu中安装Docker并配置国内镜像