KafKa簡介

1. 消息隊列

1.1消息隊列的兩種模式

(1)點對點模式一對一,消費者主動拉取數據,消息收到後消息清除
消息生產者生產消息發送到Queue中, 然後消息消費者從Queue中取出並且消費消息。
消息被消費以後, queue 中不再有存儲,所以消息消費者不可能消費到已經被消費的消息。
Queue 支持存在多個消費者,但是對一個消息而言,只會有一個消費者可以消費。

1使用完,從隊列中清除
在這裏插入圖片描述

(2)發佈/訂閱模式一對多,消費者消費數據之後不會清除消息
消息生產者(發佈)將消息發佈到 topic 中,同時有多個消息消費者(訂閱)消費該消
息。和點對點方式不同,發佈到 topic 的消息會被所有訂閱者消費。

消息使用完不會清除,所以就會有很多消費者消費該消息。
在這裏插入圖片描述
這個模式存在2個獲取消息方式
第一種:消費者主動從隊列中拉取消息,需要什麼消息就拉取什麼消息,但是這個缺點就是在消息隊列和消費者之間設置一箇中介,這個中介就是不斷詢問消息隊列中有沒有消息,還有多少。Kafka就是使用這種主動拉取。
第二種:消息隊列向消費者推消息,只要消息隊列有新消息就會給消費者推消息,但是這種就是會引起消費者崩潰(一個消費者以10M速率讀取,但是生產者以50M速率生產)或者資源浪費(一個消費者以100M速率讀取,但是生產者以50M速率生產)。

1.2 使用消息隊列的好處

1) 解耦
允許你獨立的擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。白話:生產者和消費者約定一個時間,消費者不需要等着生產者生產消息,生產者生產過消息放入消息隊列,消費者只需要某個時間從消息隊列中取消息
2) 可恢復性
系統的一部分組件失效時,不會影響到整個系統。消息隊列降低了進程間的耦合度,所以即使一個處理消息的進程掛掉,加入隊列中的消息仍然可以在系統恢復後被處理。白話:消費者準備從消息隊列中拿消息,但是因爲斷電消費者掛掉,下一次系統恢復時,消費者還可以拿那個消息
3) 緩衝
有助於控制和優化數據流經過系統的速度, 解決生產消息和消費消息的處理速度不一致的情況。白話:生產者和消費者中間有個消息隊列存放生產的消息,所以消費者不需要等生產者,藉助消息隊列作爲緩衝。
4) 靈活性 & 峯值處理能力
在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量並不常見。如果爲以能處理這類峯值訪問爲標準來投入資源隨時待命無疑是巨大的浪費。使用消息隊列能夠使關鍵組件頂住突發的訪問壓力,而不會因爲突發的超負荷的請求而完全崩潰。白話:某一天消費者訪問消息很多,比如雙十一,爲了處理這種突發的狀況,消息隊列會靈活處理
5) 異步通信
很多時候,用戶不想也不需要立即處理消息。消息隊列提供了異步處理機制,允許用戶把一個消息放入隊列,但並不立即處理它。想向隊列中放入多少消息就放多少,然後在需要的時候再去處理它們。

2. Kafka(消息默認在磁盤內存7天)

定義:Kafka 是一個分佈式的基於發佈/訂閱模式消息隊列(Message Queue) , 主要應用於大數據實時處理領域。
在這裏插入圖片描述
1) Producer : 消息生產者,就是向 kafka broker 發消息的客戶端;
2) Consumer : 消息消費者,向 kafka broker 取消息的客戶端;
3) Consumer Group (CG): 消費者組,由多個 consumer 組成。 消費者組內每個消費者負責消費不同分區的數據,一個分區只能由一個組內消費者消費;消費者組之間互不影響。 所有的消費者都屬於某個消費者組,即消費者組是邏輯上的一個訂閱者。
4) Broker (分區): 一臺 kafka 服務器就是一個 broker。一個集羣由多個 broker 組成。一個 broker可以容納多個 topic。
5) Topic : 可以理解爲一個隊列, 生產者和消費者面向的都是一個 topic;
6) Partition: 爲了實現擴展性,一個非常大的 topic 可以分佈到多個 broker(即服務器)上,一個 topic 可以分爲多個 partition,每個 partition 是一個有序的隊列;
7) Replica: 副本,爲保證集羣中的某個節點發生故障時, 該節點上的 partition 數據不丟失,且 kafka 仍然能夠繼續工作, kafka 提供了副本機制,一個 topic 的每個分區都有若干個副本,一個 leader 和若干個 follower。
8) leader: 每個分區多個副本的“主副本” leader Replica,生產者發送數據的對象,以及消費者消費數據的對象都是 leader。
9) follower: 每個分區多個副本中的“從副本”follower Replica,實時從 leader 中同步數據(備份leader數據),保持和 leader 數據的同步。 leader 發生故障時,某個 follower 會成爲新的 leader。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章