Kafka基礎概念
1. Kafka強依賴zookeeper,kafka伺服器一定與zookeeper並存。zookeeper的數量是奇數。
2. Broker:kafka伺服器的進程
3. topic:一個topic就是一個隊列。
4.生產者:發送消息的一方。kafka可以批量發送消息,所以吞吐量很大。
5. 消費者:接受消息的一方。消費者每隔100ms進行一次fetch消息,而其他消息伺服器中間件採用消費者監聽模式。
6. 消費者組:一個或者多個消費者組成一個消費者組,但只有一個消費者拿到的消息。一個topic下面可以有多個消費者組。如果消費者組內有多個消費者,那麼消息隊列是生產-消費模式。假如所有的消費者都不在同一個組內,那麼則變成發布-訂閱模式。
7. kafka消息分成兩部分:分別是Messagekey和MessageContent。Messagekey可以說是消息的標題,也可以當作路由鍵,MessageKey可以被設置為null,即便是null也具有路由鍵的功能;MessageContent就是消息的內容。
8. partition(分區):一個topic可以分成n個partition,每個partition是這個topic的持久化單元,消息根據messagekey的hash值,進入partition當中存儲。在kafka集群中,一個topic的多個partition可以落在同一個broker,也可以分布在多個broker上。
7. replication(副本):每個partition都可以有n個副本。副本數量由kafka的broker節點的數量決定。副本數量<=kafka的broker數量。同一個partition的副本會分布在不同的broker上,並且不會重複。副本會被選出一個作為主副本,其他都是從副本,主副本會使用非同步方式對生產者生產在主副本的消息向從副本進行同步。
推薦閱讀:
※螞蟻消息中間件 (MsgBroker) 在 YGC 優化上的探索
※Spring 整合JMS 基於ActiveMQ 實現消息的發送接收