生產者(producer): 構造需要處理的信息, 併發給broker
消費者(consumer): 處理生產者構造的信息, 從broker中拉取需要處理的信息
經紀人(broker):kafka實例, 消息數據存放在broker中, 解耦生產者和消費者
主題(topic): 邏輯上的一個概念, 消息通過主題來分類
分區(partition): 主題可以細分爲分區, 一個主題可以有多個分區, 但一個分區只屬於一個主題. 同一主題的不同分區數據不一樣(單指同一主題下的所有leader分支)
副本因子(replice-factor): 分區的總數量, 包括一個leader副本和若干個follower副本, 副本因子數量不要超過集羣中broker的數量, 同一分區的副本不能存在於同一broker上.
高水位(HW): 標識分區內可拉取(消費)消息偏移量的最大值(不包含), HW的具體值取的是該分區所有副本HW的最小值, 消息同步時, 所有副本同步消息的進度可能不同.
偏移量(offset): 消息在分區內的唯一標識
LEO(log end offset):當前日誌文件中,下一條待寫入消息的offset
AR(assigned replicas): 分區中的所有副本 , AR=ISR+OSR
ISR(in-sync replicas): 與leader副本保持一定程度同步的副本(基本和leader副本的數據一致), 副本可能從ISR轉換爲OSR. leader副本掛掉後, 默認情況下只會從ISR中選舉新的leader副本.
OSR(out-of-sync replicas): 與leader副本同步滯後過多的副本(和leader副本的數據差的比較多), 副本可能從OSR轉換爲ISR.
數據在broker, 主題, 分區,副本因子之間的流轉關係. 配置信息:一個主題(T), 3個分區(P), 3個副本因子(R), 集羣中共有3個broker(B)
假設:一個主題有三個分區, 每個分區又有3個副本(一個leader, 兩個follower), 共9個副本會分配到這3個broker上, 且每個broker上的每個分區副本不重複. 當一條數據發往broker時,其流轉順序爲: 找到數據所屬的topic, 根據分配策略選出所屬分區的leader副本並將該消息發給選中的leader副本, 該分區的其他follower副本同步消息leader副本中的消息.