訊息佇列(message queue,簡稱mq),指儲存訊息的乙個容器,本質是個佇列。
訊息(message)是指在應用之間傳送的資料,訊息可以非常簡單,比如只包含文字字串,也可以更複雜,可能包含嵌入物件。
訊息佇列(message queue)是一種應用間的通訊方式,訊息傳送後可以立即返回,有訊息系統來確保資訊的可靠專遞,雙發進行訪問操作,發布者和使用者都不用感知對方的存在。
遮蔽異構平台的細節:傳送方、接收方系統之間不需要了解雙方,只需認識訊息。
解耦:防止引入過多的api給系統的穩定性帶來風險;呼叫方使用不當會給被呼叫方系統造成壓力,被呼叫方處理不當會降低呼叫方系統的響應能力。
復用:一次傳送多次消費。(乙個微服務改變某個物件,需要同步到多個微服務,只需一次性將更新後的資訊放到訊息佇列,其餘微服務自行訂閱就好)
可靠:一次保證訊息的傳遞。如果傳送訊息時接收者不可用,訊息佇列會保留訊息,直到成功地傳遞它。
提供路由:傳送者無需與接收者建立連線,雙方通過訊息佇列保證訊息能夠從傳送者路由到接收者,甚至對於本來網路不易互通的兩個服務,也可以提供訊息路由。
1、非同步性
將耗時的同步操作,通過以傳送訊息的方式,進行了非同步化處理。減少了同步等待的時間。
2、松耦合
訊息佇列減少了服務之間的耦合性,不同的服務可以通過訊息佇列進行通訊,而不用關心彼此的實現細節,只要定義好訊息的格式就行。
3、分布式
通過對消費者的橫向擴充套件,降低了訊息佇列阻塞的風險,以及單個消費者產生單點故障的可能性(當然訊息佇列本身也可以做成分布式集群)。
4、可靠性
訊息佇列介紹
1.簡介 一 rabbitmq 訊息佇列介紹 rabbitmq也是訊息佇列,那rabbitmq和之前python的queue有什麼區別麼?如果是兩個完全獨立的python程式,也是不能用上面兩個queue進行互動的,或者和其他語言互動有哪些實現方式呢。disk socket 其他中介軟體 這裡中介軟...
Beanstalkd訊息佇列介紹
beanstalkd是乙個高效能,輕量級的分布式記憶體佇列 1 支援優先順序 支援任務插隊 2 延遲 實現定時任務 3 持久化 定時把記憶體中的資料刷到binlog日誌 4 預留 把任務設定成預留,消費者無法取出任務,等某個合適時機再拿出來處理 5 任務超時重發 消費者必須在指定時間內處理任務,如果...
訊息佇列屬性及常見訊息佇列介紹
訊息佇列是在訊息的傳輸過程中儲存訊息的容器,用於接收訊息並以檔案的方式儲存,乙個佇列的訊息可以同時被多個訊息消費者消費。分布式訊息服務dms則是分布式的佇列系統,訊息佇列中的訊息分布儲存,且每條訊息儲存多個副本,以實現高可用性,如下圖所示。一般來說,訊息佇列具有如下屬性 訊息順序 普通佇列支援 分割...