更新時間:2022-03-29 11:51:14 來源:動力節點 瀏覽2907次
消息隊列是一種異步服務到服務通信的形式,用于無服務器和微服務架構。在消息隊列中,消息的發送者和接收者不需要同時交互,消息被保留在Java隊列中,直到接收者檢索它們。
消息隊列可用于解耦重量級處理、緩沖或批處理工作以及平滑尖峰工作負載。
更好的性能
消息隊列支持異步通信,這意味著產生和使用消息的端點與隊列交互,而不是彼此交互。生產者可以將請求添加到隊列中,而無需等待它們被處理。消費者僅在消息可用時才處理它們。系統中的任何組件都不會停止等待另一個優化數據流。
提高可靠性
隊列使您的數據持久化,并減少系統不同部分脫機時發生的錯誤。通過使用消息隊列分隔不同的組件,您可以創建更多的容錯性。如果系統的一部分永遠無法訪問,另一部分仍然可以繼續與隊列交互。隊列本身也可以鏡像以獲得更高的可用性。
粒度可擴展性
消息隊列可以在您需要的地方精確擴展。當工作負載達到峰值時,應用程序的多個實例都可以將請求添加到隊列中,而不會發生沖突。隨著這些傳入請求的隊列變長,您可以將工作負載分配給一組消費者。生產者、消費者和隊列本身都可以按需增長和收縮。
簡化解耦
消息隊列消除了組件之間的依賴關系,并顯著簡化了解耦應用程序的編碼。軟件組件不受通信代碼的影響,而是可以設計為執行離散的業務功能。
消息隊列是一種非常簡單的解耦Java分布式系統的方法,無論您使用的是單體應用程序、微服務還是無服務器架構。
點對點
點對點意味著消息通過隊列從一個應用程序(生產者/發送者)發送到另一個應用程序(消費者/接收者)。可以有多個消費者在一個隊列上監聽,但只有其中一個可以接收消息。因此,它是點對點或一對一。
發布/訂閱
消息隊列服務器有多種語言版本。例如 Erlang (RabbitMQ)、C (beanstalkd)、Ruby (Starling 或 Sparrow)、Scala (Kestrel、Kafka) 和 Java (ActiveMQ)。選擇特定的消息隊列服務器完全取決于用例。
另一方面,發布/訂閱是一種消息傳遞模型,其中消息通過主題發送給多個消費者(或訂閱者)。主題是發布者和訂閱者之間的鏈接。訂閱者可能會或可能不會確認發布的消息。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習