mq全稱 message queue(訊息佇列),是在訊息的傳輸過程中儲存訊息的容器。多用於分布式系統之間進優勢:行通訊。
應用解耦
系統的耦合性越高,容錯性就越低,可維護性就越低。使用 mq 使得應用間解耦,提公升容錯性和可維護性。
非同步提速
提公升使用者體驗和系統吞吐量(單位時間內處理請求的數目)。
削峰填谷
使用了 mq 之後,限制消費訊息的速度為1000,這樣一來,高峰期產生的資料勢必會被積壓在 mq 中,高峰
就被「削」掉了,但是因為訊息積壓,在高峰期過後的一段時間內,消費訊息的速度還是會維持在1000,直
到消費完積壓的訊息,這就叫做「填谷」。
使用mq後,可以提高系統穩定性。
劣勢:系統可用性降低
系統引入的外部依賴越多,系統穩定性越差。一旦 mq 宕機,就會對業務造成影響。如何保證mq的高可用?
系統複雜度提高
mq 的加入大大增加了系統的複雜度,以前系統間是同步的遠端呼叫,現在是通過 mq 進行非同步呼叫。如何
保證訊息沒有被重複消費?怎麼處理訊息丟失情況?那麼保證訊息傳遞的順序性?
一致性問題
a 系統處理完業務,通過 mq 給b、c、d三個系統發訊息資料,如果 b 系統、c 系統處理成功,d 系統處理
失敗。如何保證訊息資料處理的一致性?
① 生產者不需要從消費者處獲得反饋。引入訊息佇列之前的直接呼叫,其介面的返回值應該為空,這才讓明
明下層的動作還沒做,上層卻當成動作做完了繼續往後走,即所謂非同步成為了可能。
② 容許短暫的不一致性。
③ 確實是用了有效果。即解耦、提速、削峰這些方面的收益,超過加入mq,管理mq這些成本。
MQ基本概念
背景 之前做日誌收集模組時,用到flume。另外也有的方案,整合kafaka來提公升系統可擴充套件性,其中涉及到訊息佇列當時自己並不清楚為什麼要使用訊息佇列。而在我自己提出的原始日誌採集方案中不適用訊息佇列時,有幾個基本問題 1.日誌檔案上傳過程,有個基本的生產者 消費者問題 2.另外系統崩潰時,資...
基本概念 C 基本概念
由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...
基本概念 數控系統基本概念
第一章 基本概念 數控工具機cnc是一種按事先編制好的加工零件程式進行加工的高效 自動化加工裝置。是 computer numerical control machine tools 的簡稱。數控工具機較好地解決了複雜 精密 小批量 多品種的零件加工問題,是一種柔性的 高效能的自動化工具機。西門子系...