首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Kafka 入門核心概念全景圖:架構、存儲、消費模型與生產消費機制

     編輯:Java 綜合教學

Kafka 核心概念全景解析

Apache Kafka 是一個分布式、分區、多副本的提交日志服務,常用作高吞吐消息隊列、日志聚合、流式處理骨幹。本文系統梳理其核心架構、存儲設計、消費模型、傳輸語義及 Zookeeper 協作機制。

1. 基本術語

術語含義
Topic消息類別/主題
PartitionTopic 的物理分區,有序、不可變日志段
Offset分區內消息唯一位移(Long)
BrokerKafka 服務器實例
Producer消息發送者
Consumer消息接收者
Consumer Group消費者組,實現負載均衡或廣播
Leader / Follower分區副本的主從角色
ISRIn-Sync Replicas,與 Leader 同步的副本集合
Zookeeper元數據存儲、協調服務

2. Topic & Partition 存儲設計

  • 一個 Topic 含多個 Partition,分散多 Broker,突破單機磁盤限制
  • Partition 內消息按 Offset 有序追加寫(Sequential Write),極高吞吐
  • 消息不隨消費刪除,按 log.retention.hours 或大小策略過期清理
  • Segment 分段存儲,便於過期刪除與索引查找

3. 分布式協調:Zookeeper 角色

  • Broker 註冊:/brokers/ids/[id] 存 host:port
  • Topic 註冊:/brokers/topics/[topic]/[partition]
  • Consumer 註冊與 Rebalance:/consumers/[group]/ids、/consumers/[group]/owners、/consumers/[group]/offsets
  • Controller 選舉:監聽 Broker 變更,選主管理 Partition Leader

4. Producer 核心機制

  • 直連 Leader 發送,無路由層,客戶端決定 Partition(Key Hash / Round-Robin / 自定義)
  • 批次緩衝 batch.size、linger.ms 提升網絡效率
  • 壓縮 compression.type=snappy/gzip 降低網絡 IO
  • acks=0/1/all 控制可靠性等級

5. Consumer 核心機制

  • Pull 模式:Consumer 主動 Fetch,自主控制速率與 Offset
  • Group 語義:同 Group 內 Partition 僅被一 Consumer 消費;不同 Group 則廣播
  • Offset 管理:定期提交至 Zookeeper(舊版)或 __consumer_offsets Topic(新版)
  • Rebalance:Consumer 增減、Broker 變更觸發 Partition 重新分配

6. 消息傳輸語義

7. 副本同步與故障轉移

  • Leader 處理所有讀寫,Follower 拉取同步
  • replica.lag.time.max.ms 判斷落後,剔除 ISR
  • Leader 故障 → Controller 從 ISR 選新 Leader(優先 Up-to-date、負載均衡)
  • 只要 ISR 非空且 ZK 存活,服務可用(不同於 Quorum 多數派)

8. 關鍵配置速查

# Broker
broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
num.partitions=3
default.replication.factor=2
log.retention.hours=168
log.segment.bytes=1073741824

# Producer
bootstrap.servers=...
acks=all
retries=3
batch.size=16384
linger.ms=5
compression.type=snappy

# Consumer
group.id=my-group
enable.auto.commit=false
auto.offset.reset=earliest
max.poll.records=500

理解上述核心概念,是進行 Kafka 集群運維、性能調優、業務集成的基石。建議搭建單機/偽集群環境,配合 kafka-console-producer/consumer 實戰驗證各項機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
語義特點實現要點
At Most Once可能丟失先提交 Offset 再處理
At Least Once可能重複(默認推薦)先處理再提交 Offset,冪等處理
Exactly Once嚴格一次(Kafka 0.11+ 事務 API)Producer 事務 + Consumer 隔離級別