何時使用MQ

2022-06-17 05:18:10 字數 620 閱讀 5284

何時使用mq

mq作為一種基礎中介軟體在網際網路專案中有著大量的使用。

一種技術的產生自然是為了解決某種需求,通常來說是以下場景:

需要跨程序通訊:b系統需要a系統的輸出作為輸入引數。

當a系統的輸出能力遠遠大於b系統的處理能力。

針對於第一種情況有兩種方案:

使用rpc遠端呼叫,a直接呼叫b。

使用mq,a發布訊息到mq,b訂閱該訊息。

當我們的需求是:a呼叫b實時響應,並且實時關心響應結果則使用rpc,這種情況就得使用同步呼叫。

反之當我們並不關心呼叫之後的執行結果,並且有可能被呼叫方的執行非常耗時,這種情況就非常適合用mq來達到非同步呼叫目的。

比如常見的登入場景就只能用同步呼叫的方式,因為這個過程需要實時的響應結果,總不能在使用者點了登入之後排除網路原因之外再額外的等幾秒吧。

但類似於使用者登入需要獎勵積分的情況則使用mq會更好,因為登入並不關係積分的情況,只需要發個訊息到mq,處理積分的服務訂閱處理即可,這樣還可以解決積分系統故障帶來的雪崩效應。

mq還有乙個基礎功能則是限流削峰,這對於大流量的場景如果將請求直接呼叫到b系統則非常有可能使b系統出現不可用的情況。這種場景就非常適合將請求放入mq,不但可以利用mq削峰還盡可能的保證系統的高可用。

NoSQL與RDBMS 何時使用,何時不使用

naresh kumar是位軟體工程師與熱情的博主,對於程式設計與新事物擁有極大的興趣,非常樂於與其他開發者和程式設計師分享技術上的研究成果。近日,naresh撰文比較了nosql與rdbms,並詳細介紹了他們各自的特點與適用的場景。nosql並不是關係型資料庫管理系統,本文將會介紹nosql資料庫...

何時使用或何時不使用malloc函式

在初學資料結構時,我們往往不太清楚在定義乙個結構體指標時要不要使用malloc函式。例如以下的 linklist init linklist retrun h linklist s s data x 以上這兩句 是不行的,因為s沒有指向確切的位址,所以不能通過s來向它要指向的位址賦值 但是linkl...

MySQL何時使用索引 何時不使用索引

mysql何時使用索引 對乙個鍵碼使用 if null和between select from table name where key part1 1 and key part2 5 select from table name where key part1 is null 當使用不以萬用字元開...