為什麼要使用訊息佇列?訊息佇列的好處?用途?
訊息佇列用來解決系統之間的通訊問題,主要功能就是收發訊息,使用訊息佇列有幾個好處:
解耦:減少了系統之間的依賴關係,如果在乙個系統a中直接呼叫另乙個系統b的介面,如果b執行失敗,a也會執行失敗,兩個系統高度耦合,不利於**的擴充套件和維護。
非同步:提高系統響應速度,減少使用者的等待時間。舉例:假設我現在有乙個下單功能,它包含了鎖定庫存,訂單入庫,給使用者發簡訊3個操作,需要等這3個操作完成後才能給使用者返回結果,使用者需要等待較長的時間。我可以這樣優化,在我這個下單功能中決定下單是否成功的操作是鎖定庫存,等鎖定庫存操作完成後就立刻返回結果給使用者,然後將請求的資料放到訊息佇列中,由訊息佇列非同步進行後續2步操作。好處是減少了使用者等待的時間,充分利用了伺服器的資源在短時間內處理了更多的請求。
削峰限流:比如說秒殺系統秒殺時一秒鐘有5000併發量,但是伺服器每秒鐘只能請求1000併發量,那多出來的4000個請求,可能會使系統崩潰,解決辦法是把多出來的請求到訊息佇列裡中,秒殺系統根據自己能夠處理的請求數去訊息對佇列裡拿資料。這樣系統就不會崩潰。缺點是增加了系統呼叫鏈環節,導致總體響應時延變長。另外上下游系統需要將同步呼叫改為非同步訊息,增加了系統的複雜度。
使用訊息佇列有什麼缺點?
訊息佇列時延問題
降低系統的可用性:系統引入的外部依賴越多,越容易掛掉。
系統複雜度提高:使用 mq 後可能需要保證訊息沒有被重複消費、訊息沒有丟失、保證訊息傳遞的順序性 等問題;
一致性問題:a 系統處理完直接返回成功了,通過訊息佇列通知bcd執行,而且 b 和 d 兩個系統也寫庫成功了,但 c 系統寫庫失敗了,就造成資料不一致了。
你還了解哪些訊息佇列?
為什麼你這兩個專案分別使用了rocketmq和kafka?
MQ訊息佇列的作用與好處
在系統中使用訊息佇列mq,主要可以有 解耦合 非同步 削峰 解耦合如果乙個系統要給多個系統發資料。那麼接受者可能會變化,如減去a系統,加上b系統,這樣傳送端就要不時更改 這時候如果把傳送資料的請求發到訊息佇列裡,需要接收的系統自行訂閱訊息佇列,那麼這幾個系統之間的耦合就解開了。非同步如果乙個 的請求...
引入MQ訊息佇列的作用及其優缺點
一 系統中為什麼需要用到訊息佇列,使用訊息佇列有什麼優點?使用訊息佇列的優點很多,這裡就說比較重要的三個優點 解耦 非同步 削峰填谷。解耦 首先引入乙個場景 系統a作位乙個介面請求方,現在需要向b c d三個系統傳送請求,這個時候呢a系統不需要傳送請求給d系統了,而需要傳送請求給e系統,那麼在a系統...
01 埠對映作用
插曲 1.ip位址不夠用怎麼辦?於是出現了內網和外網的說法,通過某種技術 nat或是napt伺服器 使區域網中的多個電腦公用乙個公網的ip位址。所以,同個區域網中的資料都是從同個公網ip傳送出去的。2.問題來了,區域網中的資料是傳送出去給了特定的伺服器,但是回來的資料要何去何從呢?於是,就出現了埠的...