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

Kafka的核心组件有哪些?简要说明其作用。 (Producer、Consumer、Broker、Topic、Partition、ZooKeeper)

Kafka 核心组件解析

1. 基础架构图解
┌─────────┐       ┌─────────┐       ┌─────────┐
│Producer │───▶   │ Broker  │ ◀───  │Consumer │
└─────────┘       └─────────┘       └─────────┘│                ▲                │▼                │                ▼
┌───────────────────┐  │  ┌───────────────────┐
│     Topic         │  │  │    Partition      │
│  (逻辑消息分类)     │  │  │ (物理存储分片)     │
└───────────────────┘  │  └───────────────────┘│┌──────────┐│ZooKeeper ││ (协调服务)│└──────────┘
2. 组件功能详解
组件名称核心作用技术特性
Producer消息生产者,负责发布消息到指定Topic支持异步批量发送、消息压缩(snappy/gzip)
Consumer消息消费者,通过订阅Topic获取数据支持消费者组负载均衡、位移(offset)管理
BrokerKafka服务节点,处理读写请求并持久化数据通过副本机制(Replica)保障高可用,单个Broker可处理数十万并发连接
Topic逻辑消息分类单元,类似数据库表的概念支持多分区分布式存储,每个Topic可配置独立的消息保留策略
PartitionTopic的物理分片,每个Partition是顺序不可变的消息队列通过分区键(Key)控制消息路由,单个Partition的写入顺序严格保障
ZooKeeper集群元数据管理与协调服务(注:新版Kafka正逐步移除ZK依赖)维护Broker注册信息、Topic配置、Consumer位移等元数据,实现Leader选举等协调功能
3. 代码级交互示例
// Producer发送消息到指定Partition
ProducerRecord<String, String> record = new ProducerRecord<>("order_topic", 0, // 显式指定Partition 0"order_123", "{\"amount\":99.9}"
);
producer.send(record);// Consumer指定消费Partition
TopicPartition partition0 = new TopicPartition("order_topic", 0);
consumer.assign(Collections.singletonList(partition0));
consumer.seekToBeginning(Collections.singletonList(partition0));
4. 关键配置参数
# Broker配置示例
num.partitions=3         # 默认分区数
default.replication.factor=2  # 默认副本数
log.retention.hours=168       # 消息保留时间# Producer配置优化
compression.type=snappy       # 消息压缩
linger.ms=5                   # 批量发送等待时间
max.in.flight.requests=5      # 最大在途请求数# Consumer配置优化
max.poll.records=500          # 单次拉取最大记录数
fetch.min.bytes=1024          # 最小抓取字节数
5. 新版架构演进(KRaft模式)
传统架构                          KRaft模式
┌──────────┐                    ┌──────────┐
│ZooKeeper │                    │ Controller │
└──────────┘                    │  (内置元数据)││                          └──────────┘▼                                │
┌──────────┐                    ┌──────────┐
│ Broker   │                    │ Broker   │
└──────────┘                    └──────────┘

注:Kafka 3.0+ 开始支持去ZooKeeper的KRaft模式,通过内置元数据控制器提升集群稳定性

相关文章:

  • STM32开发printf函数支持
  • LabVIEW 与 NI 硬件(PXI, CompactRIO, DAQ, RF, Vision)的深度研究与未来发展趋势-分析报告
  • 【AI】模型与权重的基本概念
  • LeetCode热题100--73.矩阵置零--中等
  • JC/T 2187-2013 铝波纹芯复合铝板检测
  • 如何保证Kafka生产者的消息顺序性? (单分区内有序,需确保同一Key的消息发送到同一分区)
  • IBM BAW(原BPM升级版)使用教程Toolkit介绍
  • C语言--字符函数
  • 前端面试每日三题 - Day 27
  • 【“星睿O6”评测】Armv9.2a、KLEIDIAI及vulkan加速llamacpp部署本地AI
  • 数据清洗-电商双11美妆数据分析(二)
  • Java UUID生成如何保证唯一性?深入解析与最佳实践
  • C语言| 递归求两个数的最大公约数
  • Consumer Group的作用是什么?Rebalance的触发条件有哪些? (实现消费者负载均衡;消费者加入/离开、订阅Topic变化等)
  • 【Java ee 初阶】多线程(8)
  • Ubuntu日志文件清空的三种方式
  • 嵌入式通信协议总览篇:万物互联的基石
  • 滚动条样式
  • Ubuntu 配置网络接口端点(静态 IP 地址)详细教程
  • 紫光同创FPGA实现HSSTHP光口视频传输+图像缩放,基于Aurora 8b/10b编解码架构,提供3套PDS工程源码和技术支持
  • “科创板八条”后百单产业并购发布,披露交易金额超247亿
  • 习近平会见古巴国家主席迪亚斯-卡内尔
  • 竞彩湃|霍芬海姆看到保级曙光,AC米兰专注于意大利杯
  • 85后清华博士黄佐财任湖北咸宁市咸安区委副书记、代区长
  • OpenAI任命了一位新CEO
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%