什麼是Kafka
由LinkedIn在11年開源,還有例如:分佈式數據同步系統Databus、高性能計算引擎Cubert、Java異步處理框架ParSeq。web


Kafka基本概念
- Producer:消息和數據的生產者,向Kafka的一個topic發佈消息的進程/代碼/服務
- Consumer:消息和數據的消費者,訂閱數據(Topic)而且處理其發佈的消息的進程/代碼/服務。
- Consumer Group:邏輯概念,對於同一個topic,會廣播給不一樣的group,一個group中,只有一個consumer能夠消費該消息。
- Broker:物理概念,Kafka集羣中的每一個Kafka節點。
- Topic:邏輯概念,Kafka消息的類別,對數據進行區分、隔離。
- Partition:物理概念,Kafka下數據存儲的基本單元。一個Topic數據會被分散存儲到多個Partition,每一個Partition是有序的。
- Replication:同一個Partition可能會有多個Replica,多個Replica之間數據是同樣的。
- Replication Leader:一個Partition的多個Replica上,須要個Leader負責該Partition上與Producer和Consumer交互,Leader有且只有一個。
- ReplicaManager:負責管理當前broker全部分區和副本的信息,處理KafkaController發起的一些請求,副本狀態的切換、添加/讀取消息等。
Kafka基本結構


Kafka消息結構

Kafka的特色
分佈式併發
- 多分區
- 多副本
- 多訂閱者
- 基於Zookeeper消息調度
高性能框架
持久性與擴展性異步
- 數據可持久化
- 容錯性
- 支持在線水平擴展
- 消息自動平衡
Kafka應用場景
- 消息隊列
- 行爲跟蹤
- 元信息監控
- 日誌收集
- 流處理
- 事件源
- 持久性日誌(commit log)
Kafka應用案例
Kafka代碼案例
Kafka高級特性之消息事務
Kafka高級特性之零拷貝