1. 程式人生 > 其它 >一、kafka概述

一、kafka概述

1、定義

kafka是一個分散式的基於釋出/訂閱模式的訊息佇列(Message Queue),主要用於大資料實時處理領域

2、訊息佇列

1)傳統訊息佇列的應用場景

2)使用訊息佇列的好處

①、解耦

②、可恢復性

系統的一部分元件失效時,不會影響到整個系統。訊息佇列降低了程序間的耦合度,所 以即使一個處理訊息的程序掛掉,加入佇列中的訊息仍然可以在系統恢復後被處理。

③、緩衝

有助於控制和優化資料流經過系統的速度,解決生產訊息和消費訊息的處理速度不一致 的情況

④、增加峰值處理能力(削峰)

在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量並不常見。 如果為以能處理這類峰值訪問為標準來投入資源隨時待命無疑是巨大的浪費。使用訊息佇列 能夠使關鍵元件頂住突發的訪問壓力,而不會因為突發的超負荷的請求而完全崩潰。

3)訊息佇列的兩種方式

①、點對點模式

一對一,消費者主動拉取資料,訊息收到後清除訊息

訊息生產者生產訊息傳送到Queue中,然後訊息消費者從Queue中取出並且消費訊息。 訊息被消費以後,queue 中不再有儲存,所以訊息消費者不可能消費到已經被消費的訊息。 Queue 支援存在多個消費者,但是對一個訊息而言,只會有一個消費者可以消費。

②、釋出訂閱模式

一對多,消費者消費資料之後,不會清除訊息

訊息生產者(釋出)將訊息釋出到 topic 中,同時有多個訊息消費者(訂閱)消費該消 息。和點對點方式不同,釋出到 topic 的訊息會被所有訂閱者消費

釋出訂閱模式分為兩種

一種是消費者主動拉取資料

一種是佇列側主動推送資料

kafka是消費者這邊主動的去拉取資料

缺點:消費者維持一個常輪詢,去檢視kafka中是否有新訊息,比較浪費資源

3、kafka的架構

1)Producer:訊息生產者,向kafka broker傳送訊息的客戶端

2)Consumer:訊息消費者,向kafka取訊息的客戶端

3)Consumer Group:消費者組,提高消費的併發,消費者最好的數量等於topic分割槽的數量

4)Broker :一臺 kafka 伺服器就是一個 broker。一個叢集由多個 broker 組成。一個 broker 可以容納多個 topic。

5)Topic :可以理解為一個佇列,生產者和消費者面向的都是一個 topic

6)Partition:為了實現擴充套件性,一個非常大的 topic 可以分佈到多個 broker(即伺服器)上, 一個 topic 可以分為多個 partition,每個 partition 是一個有序的佇列;

目的是為了提高kafka叢集的負載能力和併發,可以向多個分割槽寫入訊息

7)Replica:副本,為保證叢集中的某個節點發生故障時,該節點上的 partition 資料不丟失,kafka 提供了副本機制,一個 topic 的每個分割槽都有若干個副本, 一個 leader 和若干個 follower。

8)leader:每個分割槽多個副本的“主”,生產者傳送資料的物件,以及消費者消費資料的物件都是 leader

9)follower:每個分割槽多個副本中的“從”,實時從 leader 中同步資料,保持和 leader 資料 的同步。leader 發生故障時,某個 follower 會成為新的 follower。

10)Zookeeper:

①、所有的kafka broker會註冊到Zookeeper,組成叢集

②、記錄kafka中訊息的offset (0.9版本之前offset存在zk , 0.9版本之後存在本地)