在kafka中,咱們能建立多種類型的集羣,通常以下:node
- 單節點——單個broker集羣
- 單節點——多broker集羣
- 多結點——多broker集羣
kafka集羣中主要有五個組件:數組
- Topic:主題主要用於用一個名字標識生產者往kafka發送了什麼類型的消息,做爲消息歸類的標識惟一鍵。在kafka中,主題被分區,消息按照順序被切成幾個分區存放,分區是以log文件的形式保存在集羣中的。每一條消息在分區中被分配惟一標識符,這個叫offset(偏移量),能夠類比於數組,kafka的消息在集羣中保存相似於分段的數組,數組下標對應於offset。
- Broker:衆所周知,kafka集羣是由一個或者多個服務器組成的,每一個服務器上可能有一個或者多個服務進程,那麼這種服務進程,就叫作broker。Topic被建立在這樣的broker裏面。
- Zookeeper:zk服務是做爲一個協調者出現的,主要用於協調broker和消費者。zk官網給出這樣的描述:ZooKeeper allows distributed processes to coordinate with each other through
a shared hierarchical name space of data registers (we call these registers
znodes), much like a file system.然而,zk和標準的文件系統區別在於,zk是受限的文件系統,每一個zk結點可以單獨分配數據,而且數量受限,zk只能用於存儲協調數據:狀態信息、配置、本地信息等等。
- 生產者:生產者用於發佈數據,選擇某個topic合適的分區進行發送。爲了負載均衡,消息分配給分區的策略可能採用輪詢或者自定義函數(hash)。
- 消費者:用於消費數據。