日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MQ知识点汇总

發布時間:2023/12/10 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MQ知识点汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. MQ是什么

2.?MQ能做什么

3.?消息模式

4.?使用MQ的時候需要注意什么

5.?常用MQ

6.?MQ的不足

7.?什么時候不適用MQ

8.?MQ的組成

9.?MQ的關注點

?

1. MQ是什么

? ? MQ 是message queue ,消息隊列,也叫消息中間件、消息總線,是一種跨進程的通信機制,用于上下游傳遞消息。遵守JMS(java message service)規范的一種軟件。數據庫因為歷史原因,橫向擴展是一件非常復雜的工程,所有我們一般會盡量把流量都擋在數據庫之前。不管是無限的橫向擴展服務器,還是縱向阻隔到達數據庫的流量,都是這個思路。阻隔直達數據庫的流量,緩存組件和消息組件是兩大殺器。

?

2. MQ能做什么

? ? 1)數據驅動的任務依賴:

? ? ? ? ?例如:task2在task1執行完成后才能執行,存在依賴關系

? ? 2)解耦:上游不關心執行結果

? ? ? ? ?例如:注冊成功后發郵件

? ? 3)上游關注執行結果,但執行時間很長

? ? ? ? ? 例如:微信支付成功的回調

? ? 4)限流(削峰)

? ? 5)通知

? ? 6)數據分發

? ? ? ? ?a. 注冊后我們可能需要做很多初始化的操作,如:調用郵件服務器發送郵件、調用促銷服務贈送優惠劵、下發用戶數據到客戶關系系統等。

? ? ? ? ? ? 那么這時候我們將這些操作去監聽MQ,當用戶注冊成功過后,通過MQ通知其他業務進行操作。確保注冊用戶的性能。

? ? ? ? ?b. 后臺發布商品的時候,商品數據需要從數據庫中轉換成搜索引擎數據(基于elasticsearch),那么我們應該將商品寫入數據庫后,

? ? ? ? ? ? 再寫入到MQ,然后通過監聽MQ來生成elasticsearch對應的數據。

? ? ? ? ?c. 用戶下單后,24小時未支付,需要取消訂單。以前我們可能是定時任務循環查詢,然后取消訂單。實際上,我更推薦類似延遲MQ的方式,

? ? ? ? ? ? 避免了很多無效的數據庫查詢,將一個MQ設置為24小時后才讓消費者消費掉,這樣很大程度上能減輕服務器壓力。

? ? ? ? ?d. 支付完成后,需要及時的通知子系統(進銷存系統發貨,用戶服務積分,發送短信)進行下一步操作,但是,支付回調我們都是需要保證

? ? ? ? ? ? ?高性能的,所以,我應該直接修改數據庫狀態,存入MQ,讓MQ通知子系統做其他非實時的業務操作。這樣能保證核心業務的高效及時。

? ? 7)分布式事務

? ? 8)日志處理:

? ? ? ? ?kafka日志處理

?

3.?消息模式

? ? 1)點對點模式和發布訂閱模式:是否可以重復消費

? ? ? ? a.?P2P模式:

? ? ? ? ? ? P2P模式包含三個角色:消息隊列(Queue),發送者(Sender),接收者(Receiver)。每個消息都被發送到一個特定的隊列,接收者

? ? ? ? ? ? 從隊列中獲取消息。隊列保留著消息,直到他們被消費或超時。

? ? ? ? b.?Pub/sub模式:

? ? ? ? ? ?包含三個角色:主題(Topic),發布者(Publisher),訂閱者(Subscriber) 。多個發布者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者。

? ? 2)推模式和拉模式:消息的更新者

? ? ? ? ?a. 推(push)模式是一種基于C/S機制、由服務器主動將信息送到客戶器的技術。

? ? ? ? ?b.?拉(pull)模式與推模式相反,是由客戶器主動發起的事務。

? ??

4. 使用MQ的時候需要注意什么

? ? 1)消息必達:

? ? ? ? a.?消息收到先落地

? ? ? ? b.?消息超時、重傳、確認保證消息必達

? ?2)冪等性:

? ? ? ? a.?上半場:MQ-client生成inner-msg-id,保證上半場冪等。這個ID全局唯一,業務無關,由MQ保證。

? ? ? ? b.?下半場:業務發送方帶入biz-id,業務接收方去重保證冪等。這個ID對單業務唯一,業務相關,對MQ透明。

? ? ? ??結論:冪等性,不僅對MQ有要求,對業務上下游也有要求。

? ?3)高效延時消息,包含兩個重要的數據結構:

? ? ? ? a. 環形隊列,例如可以創建一個包含3600個slot的環形隊列(本質是個數組)

? ? ? ? b. 任務集合,環上每一個slot是一個Set<Task>

? ? ? ? 環形隊列是一個實現“延時消息”的好方法,開源的MQ好像都不支持延遲消息,不妨自己實現一個簡易的“延時消息隊列”,

? ? ? ? 能解決很多業務問題,并減少很多低效掃庫的cron任務。

? ?4)削峰填谷

? ? ? ??a. MQ-client提供拉模式,定時或者批量拉取,可以起到削平流量,下游自我保護的作用(MQ需要做的)

? ? ? ? b. 要想提升整體吞吐量,需要下游優化,例如批量處理等方式(消息接收方需要做的)

?

5. 常用MQ

?

6. MQ的不足:

? ? 1)系統更復雜,多了一個MQ組件

? ? 2)消息傳遞路徑更長,延時會增加

? ? 3)消息可靠性和重復性互為矛盾,消息不丟不重難以同時保證

? ? 4)上游無法知道下游的執行結果,這一點是很致命的

?

7. 什么時候不適用MQ

? ? 1)上游實時關注執行結果

?

8. MQ的組成:

? ? 1)生產者

? ? 2)消費者

? ? 3)隊列

? ? 4)路由

?

9. MQ的關注點:

? ? 1)發布訂閱

? ? 2)消息優先級

? ? 3)消息有序

? ? 4)持久化

? ? 5)消息過濾

? ? 6)消息可靠性:主從,同步雙寫,異步雙寫

? ? 7)消息低延遲(RocketMQ 使用長輪詢 Pull 方式,可保證消息非常實時,消息實時性丌低亍 Push)

? ? 8)At least Once(是指每個消息必須投遞一次)

? ? 9)Exactly Only Once:發送消息階段,不允許収送重復的消息;消費消息階段,不允許消費重復的消息。

? ? 10)Broker的Buffer滿了怎么辦?

? ? 11)回溯消費

? ? 12)消息堆積

? ? 13)分布式事務

? ? 14)定時消息

? ? 15)消息重試

?

?

?

消息通道對并發的支持以及在性能上的表現;消息通道是否充分地考慮了錯誤處理;對消息安全的支持;以及關于消息持久化、災備(fail over)與集群等方面的支持。

?

?

參見:https://www.cnblogs.com/xuyatao/p/6864109.html

? ? ? ? ?https://www.cnblogs.com/joylee/p/8916460.html

? ? ? ? ?https://blog.csdn.net/KingCat666/article/details/78660535

? ? ? ? ?消息必達

轉載于:https://www.cnblogs.com/Jtianlin/p/10262555.html

總結

以上是生活随笔為你收集整理的MQ知识点汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。