消息隊列是最古老的中間件之一,從系統之間有通信需求開始,就自然產生了消息隊列。但是給消息隊列下一個准確的定義卻不太容易。我們知道,消息隊列的主要功能就是收發消息,但是它的作用不僅僅只是解決應用之間的通信問題這么簡單。 我們舉個例子說明一下消息隊列的作用。話說小袁是一家巧克力作坊的老板,生產出美味 ...
聊一下幾個比較常見的開源的消息隊列中間件。如果你正在做消息隊列技術選型,不知道該選擇哪款消息隊列,你一定要先聽一下這節課的內容。 作為一個程序員,相信你一定聽過 沒有銀彈 這個說法,這里面的銀彈是指能輕松殺死狼人 用白銀做的子彈,什么意思呢 我對這句話的理解是說,在軟件工程中,不存在像 銀彈 這樣可以解決一切問題的設計 架構或軟件,每一個軟件系統,它都是獨一無二的,你不可能用一套方法去解決所有的問 ...
2019-08-25 17:11 2 456 推薦指數:
消息隊列是最古老的中間件之一,從系統之間有通信需求開始,就自然產生了消息隊列。但是給消息隊列下一個准確的定義卻不太容易。我們知道,消息隊列的主要功能就是收發消息,但是它的作用不僅僅只是解決應用之間的通信問題這么簡單。 我們舉個例子說明一下消息隊列的作用。話說小袁是一家巧克力作坊的老板,生產出美味 ...
對於剛剛接觸消息隊列的同學,最常遇到的問題,也是最頭痛的問題就是丟消息了。對於大部分業務系統來說,丟消息意味着數據丟失,是完全無法接受的。 其實,現在主流的消息隊列產品都提供了非常完善的消息可靠性保證機制,完全可以做到在消息傳遞過程中,即使發生網絡中斷或者硬件故障,也能確保消息的可靠傳遞,不丟 ...
從系統之間有通信需求開始呢,就產生了消息隊列,它也是最古老的中間件之一。它的應用場景非常廣泛,分布式系統中的很多進程間通信問題,都可以用消息隊列來解決。可以說消息隊列是所有后端程序員的必備技能。但是,想要系統、深入地學習消息隊列,卻並不容易。 要了解消息隊列的完整知識體系,想深度進階為消息隊列 ...
據我了解,在使用消息隊列遇到的問題中,消息積壓這個問題,應該是最常遇到的問題了,並且,這個問題 還不太好解決。 我們都知道,消息積壓的直接原因,一定是系統中的某個部分出現了性能問題,來不及處理上游發送的消 息,才會導致消息積壓 ...
這節課我們來學習消息隊列中像隊列、主題、分區等基礎概念。這些基礎的概念,就像我們學習一門編程語言中的基礎語法一樣,你只有搞清楚它們,才能進行后續的學習。 如果你研究過超過一種消息隊列產品,你可能已經發現,每種消息隊列都有自己的一套消息模型,像隊列(Queue)、主題(Topic)或是分區 ...
在消息傳遞過程中,如果出現傳遞失敗的情況,發送方會執行重試,重試的過程中就有可能會產生重復的消息。對使用消息隊列的業務系統來說,如果沒有對重復消息進行處理,就有可能會導致系統的數據出現錯誤。 比如說,一個消費訂單消息,統計下單金額的微服務,如果沒有正確處理重復消息,那就會出現重復統計,導致統計 ...
一說起事務,你可能自然會聯想到數據庫。的確,我們日常使用事務的場景,絕大部分都是在操作數據庫的時候。像 MySQL、Oracle 這些主流的關系型數據庫,也都提供了完整的事務實現。那消息隊列為什么也需要事務呢? 其實很多場景下,我們“發消息”這個過程,目的往往是通知另外一個系統或者模塊去更新數據 ...
在高並發業務場景下,消息隊列在流量削峰、解耦上有不可替代的作用。當前使用較多的消息隊列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、Pulsar 等。 消息隊列這么多,到底該選擇哪款消息隊列呢? 選擇消息隊列的基本標准 雖然這些消息隊列在功能和特性方面 ...