阿里雲ACE共創空間——MQ訊息佇列產品測試
阿新 • • 發佈:2018-12-05
一、產品背景
訊息佇列是阿里巴巴集團自主研發的專業訊息中介軟體。 產品基於高可用分散式叢集技術,提供訊息訂閱和釋出、訊息軌跡查詢、定時(延時)訊息、資源統計、監控報警等一系列訊息雲服務,是企業級網際網路架構的核心產品。 MQ 目前提供 TCP 、MQTT 兩種協議層面的接入方式,支援 Java、C++ 以及 .NET 不同語言,方便不同程式語言開發的應用快速接入 MQ 訊息雲服務。 使用者可以將應用部署在阿里雲 ECS、企業自建雲,或者嵌入到移動端、物聯網裝置中與 MQ 建立連線進行訊息收發,同時本地開發者也可以通過公網接入 MQ 服務進行訊息收發。
從官方文件中看到MQ訊息佇列的產品為一個提供訊息服務的中介軟體,可以提供端到雲的訊息服務,這個端的覆蓋面包括了移動端和IOT物聯網裝置,並且為了支援IOT的需要除TCP協議外提供了MQTT來支援物聯網裝置的訊息服務,在雲上的支援不止包括阿里雲,可以支援使用者將服務部署在企業自建雲上。作為PAAS層的服務支援使用者通過API的方式將訊息佇列服務整合在自己的平臺上,目前在產品的結構上分成兩部分,移動端和物聯網的訊息佇列服務單獨作為一個子產品MQ FOR IOT提供服務,這項服務和MQ主服務比主要的區別就是增加了對MQTT通訊協議的支援。
從程式語言來看,因為MQ FOR IOT是面向移動端和物聯網,所以需要支援的程式語言更多,包括ANDROID、IOS和PYTHON環境在訊息佇列服務中都已經支援。
二、訊息佇列MQ產品測試
開通服務進入控制檯後看到選單將訊息佇列服務清晰的分成兩部分,支援MQTT的微訊息服務單獨列出子選單,選單選項按照功能分成三大部分,生產管理類子選單,訊息查詢追蹤類子選單和監控報警類子選單。
TOPIC是訊息佇列服務中一個重要概念,用於區分訊息的不同型別,比如在一次交易中,使用者對於商品所下的訂單和支付的訂單雖然針對的是同一件事情,但是對於訊息佇列來說,這兩種訊息的功能和型別有明顯的不同,可以用不同的TOPIC來區分,在TOPIC下還有個標籤TAG用於二級分類,如一個使用者對不同商品的購買訂單可以作為不同的TAG。針對訊息的配置來講,需要定義訊息的名字和訊息的型別。在型別上普通訊息、事務訊息、定時訊息、分割槽訊息等都可以將不同型別的TOPIC根據型別區分。將TOPIC按什麼型別進行分類及歸入哪個分類需要使用者根據實際情況進行確定。
除了TOPIC外,對於一條訊息,還有三個獨特的屬性可以為查詢提供方便,生產者的編號(PRODUCT ID)、消費者的編號(CONSUMER ID)和訊息編號(MESSAGE ID),加上TOPIC的配置,可以準確定義海量訊息中的每一條,方便查詢和監控等功能的支援。
訊息路由是指的在不同地域間的訊息同步,需要配置源地域和TOPIC、目標地域和TOPIC,從最新寫入源的訊息開始進行同步。
資源報表分成兩個子項,生產者和消費者,可以對於訊息的兩個源頭的情況進行檢視,如果需要對於訊息服務的可以在監控報警設定中進行配置,對於訊息的報警項,有兩個重要指標堆積量和訊息延遲,分別從數量和時間對於訊息服務的異常情況進行報警,通過簡訊方式通知使用者。
三、微訊息佇列MQ FOR IOT產品測試
從微訊息佇列的按量付費的計費專案就可以看出物聯網在訊息通訊上的幾個主要特徵,即時連線數、訂閱訊息數和訊息收發量。萬物互聯後物聯網裝置的訊息數在這三個維度都會到達海量的程度,特別是即時連線這個特點和一般的MQ服務有很大不同,可以代表物聯網中訊息傳遞的特徵。
此外,微訊息佇列服務對於訊息的分類同一般MQ服務不同的是,將TOPIC分成父TOPIC和子TOPIC的方式而不是TOPIC和TAG的分類方式,子TOPIC從屬於父TOPIC,這個特點我想也是因為需要支援物聯網的關係,因為傳統下的訊息都是針對應用比較多,但是物聯網情況下,訊息的型別如裝置的狀態、工業監測資料等會比一般情況多的多,並且訊息服務的實時性要求更高,所以將TOPIC設定成父子從屬關係更有利於對海量不同型別的訊息進行區分。