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

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模式,通过内置元数据控制器提升集群稳定性

http://www.xdnf.cn/news/4348.html

相关文章:

  • java多线程------synchronized
  • CVE体系若消亡将如何影响网络安全防御格局
  • git合并分支后回滚,再次合并导致更改没有合并的问题
  • CentOS 7 基础环境安装脚本
  • Milvus(16):索引解释
  • 【前端基础】6、CSS的文本属性(text相关)
  • 嵌入式通信协议总览篇:万物互联的基石
  • 记一次SSE数据被缓存导致实时性失效问题
  • 链表——C语言
  • 常见的卷积神经网络列举
  • 用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本1(Client端)
  • Umi+React+Xrender+Hsf项目开发总结
  • 基于Django汽车数据分析大屏可视化系统项目
  • SSHv2 密钥交换(Key Exchange)详解
  • 体育培训的实验室管理痛点 质检LIMS如何重构体育检测价值链
  • TikTok 矩阵运营新手实操保姆级教程 2.0 版本
  • 从一次被抄袭经历谈起:iOS App 安全保护实战
  • 【AWS+Wordpress-准备阶段】AWS注册+创建EC2实例
  • Scrapy框架之Scrapyd部署及Gerapy分布式爬虫管理框架的使用
  • 记录学习《手动学习深度学习》这本书的笔记(十)
  • 协方差与皮尔逊相关系数:从定义到应用的全面解析
  • isNotBlank和isNotEmpty有什么区别?
  • Python学习笔记--FastAPI入门常规操作
  • penEuler操作系统结合豆包测试github仓库8086-Emulator项目
  • react中的用法——setDisabled dva dispatch effects
  • leetcode 160. 相交链表
  • os梳理5——第五章:存储器管理
  • 汽车免拆诊断案例|车辆行驶中急加速车身抖动故障排除 2 例
  • C# NX二次开发:投影曲线和偏置曲线UFUN函数详解
  • Redis--哈希类型