Kafka特點
- 分布式
- 多分區(qū)
- 多副本
- 多訂閱者
- 基于ZooKeepler調(diào)度
- 高性能
- 高吞吐量,每秒幾十萬
- 低延遲
- 高并發(fā)
- 時間復(fù)雜度o(1)
- 持久性與擴展性
- 數(shù)據(jù)可持久化
- 容錯性
- 支持在線水平擴展
- 消息自動平衡
應(yīng)用場景
- 消息隊列
- 行為跟蹤
- 元信息監(jiān)控
- 日志收集
- 流處理
- 事件源
- 持久性日志
基本概念
- Producer:消息和數(shù)據(jù)的生產(chǎn)者,向Kafka的一個topic發(fā)布消息的進程/代碼/服務(wù)
- Consumer:消息和數(shù)據(jù)的消費者,訂閱數(shù)據(jù)(Topic)并且處理其發(fā)布的消息的進程/代碼/服務(wù)
- Consumer Group:邏輯概念,對于同一個topic,會廣播給不同的 group,一個group中,只有一個consumer可以消費該消息
- Broker:物理概念,Kafka集群中的每個Kafka節(jié)點
- Topic:邏輯概念,Kafka消息的類別,對數(shù)據(jù)進行區(qū)分、隔離
- Partition:物理概念,Kafka下數(shù)據(jù)存儲的基本單元。一個Topic數(shù)據(jù),會被分散存儲到多個Partition,每個Parition是有序的
- 每一個Topic被切分為多個Partitions
- 消費者數(shù)目少于或等于Partition的數(shù)目
- Broker Group中的每一個Broker保存Topic的一個或多個Partitions
- Consumer Group中僅有一個Consumer讀取Topic的一個或多個Partition,并且是唯一的Consumer
- Replication:同一個Partition可能會有多個Replica,多個Replica之間數(shù)據(jù)是一樣的
- 當集群中有Broker掛掉的情況,系統(tǒng)可以主動地使用Replicas提供服務(wù)
- 系統(tǒng)默認設(shè)置每一個Topic的replication系數(shù)為1,可以在創(chuàng)建Topic時單獨設(shè)置
- Replication的基本單位是Topic的Partition
- 所有的讀和寫都從Leader進,F(xiàn)ollowers只是作為備份
- Follower必須能夠及時復(fù)制Leader的數(shù)據(jù)
- 增加容錯性和可擴展性
- Replication Leader:一個Partition的多個Replica上,需要一個Leader負責該Partition上與Producer和Consumer交互
基礎(chǔ)結(jié)構(gòu)

kafka1.png
- Producer Api
- Cnosumer Api
- Streams Api
-
Connectors Api
Kafka基礎(chǔ)結(jié)構(gòu)2.png
消息結(jié)構(gòu)

消息結(jié)構(gòu).png
