主要功能就是收發訊息,但不僅僅是解決應用之間的通訊問題
eg.秒殺系統
流程:風險控制——庫存鎖定——生成訂單——簡訊通知——更新統計資料
使用訊息佇列伺服器只需要先實現風控和庫存鎖定
好處
更快返回結果;減少等待,提公升系統功能
健壯框架設計思路: 使用訊息佇列隔離閘道器和後端服務,以達到流量控制和保護後端服務的目的。
設計優點.: 能根據下游的處理能力自動調節流量,達到「削峰填谷」的作用
令牌桶控制流量:
訊息佇列的本質是將同步處理轉成非同步處理,非同步會帶來相應的好處,但也有弊端。
pros:
1.可在模組、服務、介面等不同粒度上實現解耦
2.訂閱/消費模式也可在資料粒度上解耦
3.可提高系統的併發能力,集中力量辦大事(同步部分),碎片時間做小事(非同步部分)
4.可提高系統可用性,因為緩衝了系統負載
cons:
1.降低了資料一致性,如要保持強一致性,需要高代價的補償(如分布式事務、對賬)
2.有資料丟失風險,如宕機重啟,如要保證佇列資料可用,需要額外機制保證(如雙活容災)
總體來說,訊息佇列的適用場景還是很多的,如秒殺、發郵件、發簡訊、高併發訂單等,不適合的場景如銀行轉賬、電信開戶、第三方支付等。關鍵還是要意識到訊息佇列的優劣點,然後分析場景是否適用則會水到渠成。
01 為什麼需要訊息佇列?
對於對於這 5 個步驟來說,能否決定秒殺成功,實際上只有風險控制和庫存鎖定這 2 個步驟。只要使用者的秒殺請求通過風險控制,並在服務端完成庫存鎖定,就可以給使用者返回秒殺結果了,對於後續的生成訂單 簡訊通知和更新統計資料等步驟,並不一定要在秒殺請求中處理完成。令牌發生器按照預估的處理能力,勻速生產令...
為什麼需要訊息佇列,及使用訊息佇列的好處?
一 訊息佇列的特性 業務無關,乙個具有普適性質的訊息佇列元件不需要考慮上層的業務模型,只做好訊息的分發就可以了,上層業務的不同模組反而需要依賴訊息佇列所定義的規範進行通訊。fifo,先投遞先到達的保證是乙個訊息佇列和乙個buffer的本質區別。容災,對於普適的訊息佇列元件來說,節點的動態增刪和訊息的...
為什麼需要訊息佇列,及使用訊息佇列的好處?
業務無關,乙個具有普適性質的訊息佇列元件不需要考慮上層的業務模型,只做好訊息的分發就可以了,上層業務的不同模組反而需要依賴訊息佇列所定義的規範進行通訊。fifo,先投遞先到達的保證是乙個訊息佇列和乙個buffer的本質區別。容災,對於普適的訊息佇列元件來說,節點的動態增刪和訊息的持久化,都是支援其容...