Kafka 介紹
Apache Kafka 是一個開源的 分布式流處理平臺,最初由 LinkedIn 開發,后捐贈給 Apache 軟件基金會。它被設計用于高吞吐量、低延遲、可水平擴展地處理實時數據流。官網地址是:https://kafka.apache.org/
以下是 Kafka 的核心介紹:
核心概念
消息系統 (Messaging System)
Kafka 充當生產者和消費者之間的消息中間件,解耦系統,確保可靠的數據傳遞。
流處理平臺 (Stream Processing)
支持實時處理數據流(如過濾、轉換、聚合)。
存儲系統 (Storage System)
數據可持久化存儲(默認保留7天,可配置),支持故障恢復。
核心組件
組件 | 作用 |
---|---|
Producer 生產者 | 向 Kafka 推送數據(如日志、事件) |
Consumer 消費者 | 從 Kafka 拉取數據并進行處理 |
Broker Kafka 服務器節點 | 組成集群,負責存儲和傳遞消息 |
Topic 邏輯消息分類(如 user_activity) | 生產者按 Topic 發送消息 |
Partition Topic 的分區(物理分片) | 實現并行處理和水平擴展。每個分區內消息有序 |
Replica 分區的副本(Leader 處理讀寫,Follower 同步數據) | 保障高可用 |
ZooKeeper | 管理集群元數據、Broker 狀態和選舉(Kafka 3.0+ 逐步移除依賴) |
核心特性
- 吞吐量:單機每秒可處理 數十萬條消息(輕松達百萬級/秒),集群可擴展至 PB/天 級別。
- 延遲:消息從生產到消費可控制在 毫秒級(通常 2~10ms)。
- 技術支撐:
? 順序磁盤 I/O(避免隨機尋址)
? 零拷貝(Zero-Copy)技術減少內核態數據復制
? 批量壓縮(Snappy、LZ4)
- 持久化:所有消息直接寫入磁盤(非內存緩存),支持 TB 級數據保留(可配置保留策略)。
- 高可靠:
? 副本機制(Replication):每個分區多副本存儲(默認 3 副本)
? ISR(In-Sync Replicas) 機制保障數據一致性
? 生產者可配置 acks=all 確保數據寫入所有副本后才確認
- 無縫擴容:
? 通過增加 Broker 節點擴展集群容量
? 通過增加 Topic 分區數提升并行度 - 負載均衡:分區自動均衡到集群所有節點,無需人工干預。
- 去中心化:無單點瓶頸,Broker 節點對等。
- 故障自愈:
? Leader 分區故障時,Follower 自動選舉為新 Leader
? 消費者組自動重平衡(Rebalance)
? 數據副本保障節點宕機時 零數據丟失
- 多租戶支持:通過認證(SASL/SSL)和配額(Quotas)實現資源隔離。
- 豐富生態:
? Kafka Connect:快速集成數據庫、ES、S3 等外部系統
? Kafka Streams:輕量級流處理庫(無需額外集群)
? Schema Registry:統一管理 Avro/Protobuf 消息格式
- 發布/訂閱 & 隊列模式:
? 廣播模式:多個消費者組獨立消費全量數據
? 隊列模式:同組內消費者分區負載均衡(每條消息僅被組內一個消費者處理) - 位移管理:消費者可手動/自動提交消費進度(Offset),支持重播歷史數據。
- 跨系統一致性:通過 Kafka Streams API 或 事務型生產者(idempotence=true + 事務)實現:
? 生產端:避免消息重復寫入
? 消費端:確保“處理 + 提交 Offset”原子性
典型應用場景
-
實時數據管道
將數據從源系統(數據庫、日志)同步到數據倉庫(如 Hadoop、Snowflake)。 -
事件驅動架構
微服務間通過事件通信(如訂單支付觸發庫存更新)。 -
日志聚合
集中收集分布式系統的日志(替代 ELK 中的 Logstash)。 -
實時流處理
結合 Kafka Streams 或 Flink 實時分析用戶行為、監控指標。 -
消息隊列
替代傳統 MQ(如 RabbitMQ),尤其適用于大數據量場景。
版本與生態
主流版本:Kafka 3.x(已移除 ZooKeeper 依賴,使用 KRaft 共識協議)。
與其他消息隊列的對比優勢
特性 | Kafka | RabbitMQ / RocketMQ |
---|---|---|
吞吐量 | ????? (百萬級/秒) | ?? (萬級/秒) |
數據持久化 | ????? (磁盤存儲 + 多副本) | ?? (內存為主,持久化性能低) |
水平擴展 | ????? (分區 + Broker 動態擴展) | ?? (集群擴展復雜) |
消息回溯 | ????? (支持任意時間點重消費) | ? (需手動備份) |
流處理能力 | ???? (原生 Kafka Streams 支持) | ? (需額外工具) |
參考:
deepseek
B站項樺瑾Kafka介紹