定義
kafka是一個分布式的基于發布/訂閱模式的消息隊列(message queue),主要應用于大數據的實時處理領域
消息隊列工作原理

kafka的組成結構
kafka的基礎架構主要有broker、生產者、消費者組構成,還包括zookeeper.
生產者負責發送消息
broker負責緩沖消息,存儲在磁盤的,所以數據不易丟失,broker中可以創建topic,每個topic又有partition和replication的概念
消費者組負責處理消息,同一個消費者組的中消費者不能消費同一個partition中的數據
Kakfa如果要組件集群,則只需要注冊到一個zk中就可以了,zk中還保留消息消費的進度或者說偏移量或者消費位置
工作流程
1)主線程首先將業務數據封裝成ProducerRecord對象
2)調用send方法將消息放入消息收集器RecordAccumlator中暫存
3)Sender線程將消息信息構成請求
4)執行網絡IO的線程從RecordAccumlator中將消息取出并批量發送出去
5)Kafka消費者從屬于消費者組。消費者組內的消費者訂閱的是相同主題,每個消費者接收主題的一部分分區的消息。
常見問題
1:kafka如何保證消息的順序性?
Kafka 保證消息順序性是指在單個分區內消息是有序的,即消費者從一個分區中讀取消息時,這些消息是按照生產者發送的順序來消費的。
為了保證消息的順序性,你需要確保以下幾點:
生產者將消息發送到同一個分區。
不要并發寫入同一個分區,否則可能會導致消息亂序。
消費者從分區中讀取消息是按按順序的并按順序處理,保證了消息的順序性。
2:kafka 生產者發送消息時如何來提高發送速率
要提高Kafka生產者的發送速率,可以調整Kafka生產者客戶端的幾個關鍵配置參數:
batch.size: 控制生產者一起發送數據的大小,默認是16KB。增加這個值可以批量發送更多的消息,從而提高發送速率。
linger.ms: 控制生產者發送數據之前等待更多消息加入到batch中的時間。降低這個值可以更快地發送小批量消息,默認值為0毫秒)。
max.request.size: 控制生產者能發送的最大消息大小。如果消息大小超過這個值,消息將會被截斷。
buffer.memory: 控制生產者可以用來緩存消息的內存大小。增加這個值可以緩存更多的消息。
compression.type: 控制消息被壓縮的方式,可以選擇壓縮類型來減少發送的數據量。