物聯(lián)網(wǎng)環(huán)境下的大吞吐量下消息服務(wù)集群設(shè)計(jì)
1、基于IBM MQ產(chǎn)品來實(shí)施JMS技術(shù)的消息服務(wù)應(yīng)用服務(wù)器。
2、物聯(lián)網(wǎng)消息采用MQTT協(xié)議,WebSphere MQ Telemetry Transport (MQTT) 是一項(xiàng)專為受限設(shè)備和受限網(wǎng)絡(luò)設(shè)計(jì)的異步消息通信協(xié)議,以輕量、精簡(jiǎn)、開放和易于實(shí)現(xiàn)為主要特點(diǎn)。
3、MQTT 規(guī)范是開放并且免版稅使用的,這有助于更好地推廣。提供開源的實(shí)現(xiàn),在 http://eclipse.org/paho/上有各種客戶端的開源實(shí)現(xiàn)
4、發(fā)布 - 訂閱的消息通信協(xié)議,允許一條消息只發(fā)布一次,便可被多個(gè)消費(fèi)端(應(yīng)用程序 / 設(shè)備)所接收
5、提供多種消息服務(wù)質(zhì)量,包括 MQ 的黃金準(zhǔn)則 -- 保證傳遞且僅有一次傳遞
0 :消息最多被傳遞一次
1 :消息會(huì)被傳遞但可能會(huì)重復(fù)傳遞
2 :消息保證傳遞且僅有一次傳遞
6、為受限的設(shè)備所設(shè)計(jì) :
預(yù)期客戶端應(yīng)用程序 / 設(shè)備有可能僅具備非常有限的處理能力和資源
占用空間極小的 MQTT 客戶端 ( 和服務(wù)器 ) 類庫
7、易于使用(和實(shí)現(xiàn))
簡(jiǎn)單的動(dòng)詞集合,包括 connect, publish, subscribe 和 disconnect
內(nèi)建結(jié)構(gòu)支持處理客戶端和服務(wù)器之間的連接丟失
如果客戶端意外掉線,使用“遺愿和遺囑”發(fā)布一條消息
8、WebSphere MQ Telemetry 由 Telemetry 服務(wù)和 Telemetry 客戶端組成。其中 Telemetry 服務(wù)作為 Queue Manager 的一部分,可作為 MQTT 連接的服務(wù)器,Telemetry 客戶端可用來測(cè)試 MQTT 連接的可用性。
9、在傳統(tǒng)的開放平臺(tái) WebSphere MQ 應(yīng)用架構(gòu)中,每個(gè)隊(duì)列管理器都是獨(dú)立的。當(dāng)一個(gè) QM 給另一個(gè) QM 發(fā)送消息時(shí),需要定義一個(gè)傳輸隊(duì)列(transmission queue), 一個(gè)連接到目的端 QM 的通道,并且需要在發(fā)送消息的客戶端上定義遠(yuǎn)程隊(duì)列定義(remote queue definition)。為了簡(jiǎn)化 MQ 系統(tǒng)配置,可以通過 MQ 集群的使用,減少隊(duì)列管理器上的對(duì)象數(shù)量,使得不同的 QM 可以互相通信而不需要定義眾多的傳輸隊(duì)列、通道以及遠(yuǎn)程隊(duì)列定義。當(dāng)集群中含有一個(gè)以上的同一隊(duì)列實(shí)例時(shí),WebSphere® MQ 會(huì)根據(jù)負(fù)載均衡算法選擇***的隊(duì)列進(jìn)行消息路由。
10、MQ 集群中的完全存儲(chǔ)倉庫存儲(chǔ)集群中隊(duì)列管理器的元數(shù)據(jù)信息,一個(gè)集群不建議使用超過兩個(gè)完全存儲(chǔ)倉庫
11、完全存儲(chǔ)倉庫建議不做業(yè)務(wù)應(yīng)用,具體業(yè)務(wù)應(yīng)用使用不完全存儲(chǔ)倉庫
12、在 MQ 集群中使用 MQTT Telemetry 服務(wù)時(shí),只需要在集群中建立集群主題(Cluster Topic),并且只需要在集群中的一個(gè)隊(duì)列管理器創(chuàng)建,不需要?jiǎng)?chuàng)建共享隊(duì)列,默認(rèn)使用 SYSTEM.MQTT.TRANSMIT.QUEUE
13、使用 MQ Telemetry 不需要手動(dòng)創(chuàng)建訂閱對(duì)象(Subscriptions),MQXR 服務(wù)默認(rèn)使用 client ID :topic string 為名字自動(dòng)創(chuàng)建訂閱對(duì)象
14、完整的MQTT協(xié)議規(guī)范pdf下載:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/MQTT_V3.1_Protocol_Specific.pdf
15、 java -Xms50M -Xmx50M -Djava.ext.dirs=/root/mq/lib -cp mqttperf.jar SingleTopicSub -b 9.119.154.235 -c 1000 -m 50000 -t TestTopic -s 1 即一共創(chuàng)建了 1000 個(gè)訂閱者,無差錯(cuò)情況下會(huì)接收到 50000 條消息。命令中參數(shù) -Xms 指程序的初始化內(nèi)存大小,-Xmx 指程序占用的***內(nèi)存,-Djava.ext.dirs 指引用包路徑,該路徑文件夾中應(yīng)該包含有 org.eclipse.paho.client.mqttv3.jar。注意:其中 -m 參數(shù)主要用來標(biāo)記所有客戶端應(yīng)該收到的消息總數(shù),其值為所有客戶端數(shù)與發(fā)布程序發(fā)布的消息數(shù)之乘積,用來和實(shí)際接收到的消息總數(shù)做比較,判斷所有消息是否被可靠傳輸。






























