消息隊列簡單總結

1.優勢,使用場景

(1)異步處理

(2)解耦

(3)抗壓

2.使用代價

(1)維護成本,掛掉怎麼辦,消息丟失怎麼辦

(2)數據一致性

3.選擇消息隊列

如何分析?

1.分析是否符合業務的基本要求,市面常見基本標準是否滿足,接下來是性能,穩定性,安全性,最後一點是否有業界參考案例。

2.缺點,不滿足什麼要求,相互對比的劣勢,要求成本

 

 

RabbitMq:

優點:簡單,易用,具備點對點,訂閱模式,消息確認等常見消息隊列特點,快速上手

缺點:erlang編寫,出現問題很難定位,二次開源麻煩;消息堆積能力差;與同款產品相比性能相對低點,每秒幾萬

參考場景:小項目,同步改異步,用來解決一部分問題,開箱即用

 

RocketMq:

優點:具備常見消息隊列的功能,包括事務消息;性能高,毫秒級消費,每秒十幾萬消費能力;穩定,有很多項目參考案例。

缺點:與很多框架生態集成不太容易

參考場景:實時性要求高的金融業務項目

 

kafka:

優點:具備基本功能,包括事務消息;性能高,表現在處理量大不是速度快;穩定,有很多項目參考案例;大數據領域生態發展好

缺點:消息延時處理稍差,

參考場景:數據埋點,日誌記錄,大數據相關處理

 

4.消息模型

RabbitMq:

image.png

主要思路:

生產者通過exchange 投放到隊列,然後消費者從隊列拉取消息進行消費

發佈-訂閱模式怎麼實現? 通過exchange 投放到多個隊列,多個消費者消費

rabbitmq 各大模式也主要是在exchange上動手腳

 

 

RocketMq:

image.png

主要思路:

生產者生產消息根據nameserver 獲取broker信息,再投遞到具體的broker下的topic 的隊列裏面,消費者是一個組也可以是一臺機器,消費一個或多個topic下隊列的消息

 

發佈訂閱核心概念和rabbitMq 不一樣的點在於:

rocketMq 是多個消費者組訂閱同一個topic,只有一個隊列有值,每個組各自消費

rabbitMq 是多個隊列裏面都有值,每個隊列的消費者消費就是發佈訂閱 

 

5.使用

基於不同的設計思路,使用方式也不一樣,各自功能也不一樣

RabbitMq相關模式:

1基於隊列

生產者與消費者一對一;

生產者與消費者一對多(work),只有一個能消費,不是每個都消費;

2.基於交換器exchange,發佈訂閱

(1)direct交換器,一對一key關聯一致的隊列

(2)fanout 交換器綁定的所有隊列

(3)topic key通配符模糊匹配  

可以看出RabbitMq的設計以及思路還是相對簡單的

 

RocketMq 相關模式

 

 

 

 

 

 

 

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