訊息佇列 MQ
訊息佇列(Message Queue,簡稱 MQ)是阿里巴巴集團中介軟體技術部自主研發的專業訊息中介軟體,產品基於高可用分散式叢集技術,提供訊息釋出訂閱、訊息軌跡查詢、定時(延時)訊息、資源統計、監控報警等一系列訊息雲服務,是企業級網際網路架構的核心產品。MQ 歷史超過9年,為分散式應用系統提供非同步解耦、削峰填谷的能力,同時具備海量訊息堆積、高吞吐、可靠重試等網際網路應用所需的特性,是阿里巴巴雙11使用的核心產品。
MQ 目前提供 TCP、HTTP、MQTT 三種協議層面的接入方式,支援Java、C++
以及.NET 不同語言,方便不同程式語言開發的應用快速接入 MQ訊息雲服務。使用者可以將應用部署在阿里雲 ECS
1. MQ 產品功能
特色功能:
1. 事務訊息,實現類似 X/Open XA 的分佈事務功能,以達到事務最終一致性狀態。
2. 定時(延時)訊息允許訊息生產者指定訊息進行定時(延時)投遞,最長支援40天。
3. 大訊息,目前預設支持最大 256KB 訊息,華北2地域支援最大 4MB訊息。
4. 訊息軌跡,通過訊息軌跡,使用者能清晰定位訊息從釋出者發出,經由 MQ 服務端,投遞給訊息訂閱者的完整鏈路,方便定位排查問題。
5. 廣播訊息,允許一個 Consumer ID
6. 順序訊息,允許訊息消費者按照訊息傳送的順序對訊息進行消費。
7. 重置消費進度,根據時間重置消費進度,允許使用者進行訊息回溯或者丟棄堆積訊息。
訊息型別:普通訊息、定時(延時)訊息、事務訊息和順序訊息
三種傳送訊息:可靠同步傳送、可靠非同步傳送、單向傳送
管理多維:訊息查詢、訊息回溯、訊息軌跡、堆積監控報警
效能優越:百億級堆積能力、低延遲、毫秒級投遞、支援高併發、高效能叢集支援
服務健壯:99.9999976%資料可靠性、99.9999.。。%服務可用性、消失失敗定時重試、多機房多份儲存
專有云部署
1. 專家定製,提供技術方案設計;專家現場技術支援與培訓
2. 靈活部署,支援專有云獨立部署,同時支援混合雲架構。
3. 運維管控,專有云支援 mqadmin命令集、Open API運維管理工具,方便管控平臺整合以及統一運維。
MQ 快速接入流程圖:
面向服務端場景的應用使用 MQ,推薦用 SDK方式接入,操作簡單且可用性高。而面向移動端的場景,推薦使用MQTT方式接入。MQTT 是移動端物聯網領域的標準協議,因此MQ不提供 SDK。
2. MQ 產品優勢
專業
1. 阿里內部產品名 MetaQ、Notify;開源社群產品名為RocketMQ;產品多次在國內外獲獎。
2. 阿里內部 1000+ 核心應用使用,每天流轉幾千億條訊息,經過雙11交易、商品等核心鏈路真實場景的驗證,穩定可靠。
高可靠
1. 一份訊息多份落盤儲存,經過嚴格的斷電測試,訊息依然保證不丟失。
2. 允許海量訊息堆積,單個 Topic 可堆積100億+條訊息,系統高流量壓力下依然可靠。
3. 預設訊息持久化儲存 3天,支援重置消費位點消費3天之內任何時間點的訊息。
高效能
1. 同一網路內,訊息傳輸網路時延在 10毫秒之內,效能測試下,網絡卡可被打滿。
2. 預設單 Topic 傳送訊息上限為每秒 5000條,最高可申請擴充套件至 10W以上。
3. 預設單條訊息大小最大支援 256KB,華北2 地域支援 4MB大訊息。
3.MQ 應用場景
· 1. 一對多,多對多非同步解耦,基於釋出訂閱模型,對分散式應用進行非同步解耦,增加應用的水平擴充套件能力。
· 2. 削峰填谷,大促等流量洪流突然來襲時,MQ 可以緩衝突發流量,避免下游訂閱系統因突發流量崩潰。
· 3. 日誌監控,作為重要日誌的監控通訊管道,將應用日誌監控對系統性能影響降到最低。
· 4. 訊息推送,為社交應用和物聯網應用提供點對點推送,一對多廣播式推送的能力。
· 5. 金融報文,傳送金融報文,實現金融準實時的報文傳輸,可靠安全。
· 6. 電信信令,將電信信令封裝成訊息,傳遞到各個控制終端,實現準實時控制和資訊傳遞。
相關推薦
訊息佇列MQ分析
做java開發的面試基本會遇到java基礎知識,設計模式,多執行緒,io,集合等,spring/springMvc/mybatis/springBoot,mysql/oracle/sql優化這些。現在僅僅會這些是不夠的,還會要求快取、訊息佇列、訊息中介軟體。springCloud/Dubbo
訊息佇列MQ選型 - Kafka、RabbitMQ對比
image.png 適應場景 非同步處理,應用解耦,流量削鋒和訊息通訊 對比 feature scenario Kafka RabbitMQ 備註 PUB-SUB 釋出訂閱模型
訊息佇列MQ技術的介紹和原理
訊息佇列技術是分散式應用間交換資訊的一種技術。訊息佇列可駐留在記憶體或磁碟上,佇列儲存訊息直到它們被應用程式讀走。通過訊息佇列,應用程式可獨立地執行--它們不需要知道彼此的位置、或在繼續執行前不需要等待接收程式接收此訊息。 訊息中介軟體概述 訊息佇列技術是分散式
轉載:訊息佇列MQ
本文大概圍繞如下幾點進行闡述: 為什麼使用訊息佇列? 使用訊息佇列有什麼缺點? 訊息佇列如何選型? 如何保證訊息佇列是高可用的? 如何保證訊息不被重複消費? 如何保證消費的可靠性傳輸? 如何保證訊息的順序性? 1、為什麼要使用訊息佇列? 分析:一個用訊息佇列的人,不知道
訊息佇列MQ, rabbitMQ和rocketMQ的實現方式
MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息(針對應用程式的資料)來通訊,而無需專用連線來連結它們。訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是通過直接呼叫彼此來通訊,直接呼叫通常是用
SpringBoot對訊息佇列(MQ)的支援
1.非同步訊息的定義 非同步訊息的主要目的是為了系統與系統之間的通訊,所謂非同步訊息即訊息傳送者無需等待訊息接收者的處理以及返回,甚至無需關心訊息是否傳送成功 在非同步訊息中有兩個很重要的概念,即訊息代理和目的地,當訊息傳送者傳送訊息之後,訊息將由訊
【訊息佇列MQ】各類MQ比較 【轉載】
原文地址:http://blog.csdn.net/sunxinhere/article/details/7968886目前業界有很多MQ產品,我們作如下對比: RabbitMQ 是使用Erlang編寫的一個開源的訊息佇列,本身支援很多的協議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它
【訊息佇列MQ】各類MQ比較
目前業界有很多MQ產品,我們作如下對比: RabbitMQ 是使用Erlang編寫的一個開源的訊息佇列,本身支援很多的協議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合於企業級的開發。同時實現了一個經紀人(Broker)構架,這意味
詳解RPC遠端呼叫和訊息佇列MQ的區別
PC(Remote Procedure Call)遠端過程呼叫,主要解決遠端通訊間的問題,不需要了解底層網路的通訊機制。 RPC框架 知名度較高的有Thrift(FB的)、dubbo(阿里的)。 RPC的一般需要經歷4個步驟: 1、建立通訊 首先要
【訊息佇列MQ】【Kafka&Jafka】design-2
源:http://incubator.apache.org/kafka/design.html Message Persistence and Caching Don't fear the filesystem! Kafka在很大程度上依賴檔案系統來實現儲
Amazon SQS 訊息佇列服務_訊息佇列mq解決方案
Amazon Simple Queue Service (SQS) 是一種完全託管的訊息佇列服務,可讓您分離和擴充套件微服務、分散式系統和無伺服器應用程式。SQS 消除了與管理和運營訊息型中介軟體相關的複雜性和開銷,並使開發人員能夠專注於重要工作。藉助 SQS,您可以在軟體元件之間傳送、儲
訊息佇列 MQ
訊息佇列(Message Queue,簡稱 MQ)是阿里巴巴集團中介軟體技術部自主研發的專業訊息中介軟體,產品基於高可用分散式叢集技術,提供訊息釋出訂閱、訊息軌跡查詢、定時(延時)訊息、資源統計、監
使用jedis實現Redis訊息佇列(MQ)的釋出(publish)和訊息監聽(subscribe)
前言: 本文基於jedis 2.9.0.jar、commons-pool2-2.4.2.jar以及json-20160810.jar 其中jedis連線池需要依賴commons-pool2包,json
訊息佇列mq總結(重點看,比較了主流訊息佇列框架)
RabbitMQ/Kafka/ZeroMQ 都能提供訊息佇列服務,但有很大的區別。在面向服務架構中通過訊息代理(比如 RabbitMQ / Kafka等),使用生產者-消費者模式在服務間進行非同步通訊是一種比較好的思想。因為服務間依賴由強耦合變成了鬆耦合。訊息代理都會提供持久化機制,在消費者負載高或者掉線的情
訊息佇列mq的原理及實現方法
訊息佇列技術是分散式應用間交換資訊的一種技術。訊息佇列可駐留在記憶體或磁碟上,佇列儲存訊息直到它們被應用程式讀走。通過訊息佇列,應用程式可獨立地執行--它們不需要知道彼此的位置、或在繼續執行前不需要等待接收程式接收此訊息。 訊息中介軟體概述 訊息佇列技術是分散式應用間交
訊息佇列MQ的使用場景
mq解決的問題 1 系統間解耦合 2 異構環境跨語言呼叫 3 rpc遠端呼叫阻塞時間 mq缺點: 1 系統更復雜,引入一個mq元件; 2 呼叫路徑變長,增加延遲時間; 3 不能獲得執行結果
訊息佇列MQ的使用流程
一、簡介 在大型平臺的分散式專案中,訊息佇列MQ具有重要的作用,經常用在邊緣業務功能的處理中,比如日誌管理【下面將以Bug日誌儲存為例】,因為像日誌儲存、新使用者註冊傳送郵件等操作都不是主幹業務,可以放在訊息佇列非同步處理,這樣可以減小專案的阻塞和壓力。下面介紹的是比較常用
訊息佇列mq總結
RabbitMQ/Kafka/ZeroMQ 都能提供訊息佇列服務,但有很大的區別。 在面向服務架構中通過訊息代理(比如 RabbitMQ / Kafka等),使用生產者-消費者模式在服務間進行非同步通訊是一種比較好的思想。 因為服務間依賴由強耦合變成了鬆耦合。訊息代理都會提供持久化機制,在消費者負載高或者掉線
阿里雲訊息佇列mq(消費者)如何整合springboot,並能使用services
建立一個訊息佇列的資料庫維護表: CREATE TABLE `consumer_local` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `version` bigint(20) NOT NULL, `
linux程序通訊:使用posix訊息佇列mq進行執行緒或程序間的通訊
POSIX訊息佇列允許程序以訊息的形式交換資料。此API與System V訊息佇列(msgget(2),msgsnd(2),msgrcv(2)等)有明顯不同,但做的事情差不多。 在linux多執行緒程式設計中,如果兩個執行緒沒用共同的資料區,則需要使用訊息佇列從一個執行