天天看點

消息隊列介紹 | 學習筆記

開發者學堂課程【分布式消息系統 Kafka 快速入門:消息隊列介紹】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/98/detail/1600

消息隊列介紹

内容簡介:

1.消息隊列

2.消息隊列的兩種模式

3.為什麼需要消息隊列

 1.消息隊列

首先,用戶端A跟用戶端B要進行發送資料,A要給B發送資料,正常的是他們倆直接互動,就是A發送B接收,要同步,就是A發送的時候B挂了,發送不了資料,是不行的。

第二個,A發送是10兆每秒,B隻能按5兆每秒接收,如果能正常工作的話,是會丢資料的,要是不丢資料,則B這邊有可能就崩了。

中間要有一個消息隊列做一個緩存,Kafka 也是這樣,就是A産生資料不直接發送給B,而是發送給消息隊列,然後 B來接收消息。

消息隊列介紹 | 學習筆記

2.兩種模式

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

點對點模式通常是一個基于拉取或者輪詢的消息傳送模型,這種模型從隊列中請求資訊,而不是将消息推送到用戶端。這個模型的特點是發送到隊列的消息被一個且隻有一個接收者接收處理,即使有多個消息監聽者也是如此。

2)釋出/訂閱模式(一對多,資料産生後,推送給所有訂閱者)

釋出訂閱模式則是一個基于推送的消息傳送模型。釋出訂閱模型可以有多種不同的訂閱者,臨時訂閱者隻在主動監聽主題時才接收消息,而持久訂閱者則監聽主題的所有消息,即使目前訂閱者不可用,處于離線狀态。

消息隊列介紹 | 學習筆記

無論是點對點模式還是釋出訂閱模式,都有優點,它共同的優點就是消息隊列的優點。

1)解耦:允許你獨立的擴充或修改兩邊的處理過程,隻要確定它們遵守同樣的接口限制,即A與B不用直接直連,通過一個中間隊列連接配接。

2)備援:消息隊列把資料進行持久化直到它們已經被完全處理,通過這一方式規避了資料丢失風險。許多消息隊列所采用的“插入-擷取-刪除"範式中,在把一個消息從隊列中删除之前需,要你的處理系統明确的指出該消息已經被處理完畢,進而確定你的資料被安全的儲存,直到你使用完畢。即備份資料,它本身消息隊列的也是緩存資料的。

3)擴充性:叢集能力,因為消息隊列解耦了你的處理過程,是以增大消息入隊和處理的頻率是很容易的,隻要另外增加處理過程即可。

4)靈活性&峰值處理能力:靈活性就是擴充性帶來的一個優勢,峰值處理能力是你擴充把機器擴充多了,你所有的處理能力是不是提升了。

5)可恢複性:資料丢了可以找回。

6)順序保證:資料的順序保證。

7)緩沖:均衡兩邊的一個速度,相對來說均衡兩年的速度做很重要的。

8)異步通信:A的發送資料的時候, B掉了也無所謂。

以上是消息隊列的優點,無論是點對點模式還是釋出訂閱模式都具有。

繼續閱讀