天天看點

Kafka第一節

一、定義

kafka是一個分布式的基于釋出/訂閱的消息隊列,主要用于大資料實時處理領域。

mq的幾種模式:簡單模式、工作模式、消息釋出和訂閱、路由模式及主題模式,具體可參考如下文章

二、消息隊列的優點

1)解耦

允許你獨立的擴充或修改兩邊的處理過程,隻要確定它們遵守同樣的接口限制。

2)可恢複性

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

3)緩沖

有助于控制和優化資料流經過系統的速度,解決生産消息和消費消息的處理速度不一緻的情況。

4)靈活性 & 峰值處理能力

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

5)異步通信

很多時候,使用者不想也不需要立即處理消息。消息隊列提供了異步處理機制,允許使用者把一個消息放入隊列,但并不立即處理它。想向隊列中放入多少消息就放多少,然後在需要的時候再去處理它們。

三、消息隊列的兩種模式

(1)點對點模式(一對一,消費者主動拉取資料,消息收到後消息清除)

  消息生産者生産消息發送到queue中,然後消息消費者從queue中取出并且消費消息。

  消息被消費以後,queue 中不再有存儲,是以消息消費者不可能消費到已經被消費的消息。

  queue 支援存在多個消費者,但是對一個消息而言,隻會有一個消費者可以消費。

Kafka第一節

(2)釋出/訂閱模式(一對多,消費者消費資料之後不會清除消息)

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

Kafka第一節