1、什么樣的物可以入網?
- 要有數據傳輸通路
- 要有一點的存儲功能
- 要有CPU
- 要有操作系統
- 要有專門的應用程序
- 遵循物聯網的通信協議
- 在網絡世界中有可被識別的唯一編號
2、MQTT協議
不是在說物聯網嗎?為啥扯到協議啥的?
其實互聯網的本質也是通過網絡、協議將海量主機進行連接的,物聯網也不例外。但是物聯網不太需要電腦主機那樣強大的、多元的計算能力,物聯網的“物”一般功能都是比較單一的,比如傳感器只需要采集指標、攝像頭拍視頻等。
所以最簡單的物聯網只需要在聯網的“物”上加上一個可入網、可收發消息或者更厲害一點:能進行計算的芯片,就可以達到入網的效果了。簡單理解,物聯網協議就是“物”與網之間的橋梁,MQTT協議就是其中比較具有代表性的一種。
- MQTT協議是IBM針對物聯網提出的一種輕量級協議,建立於TCP/IP層協議之上。是物聯網的重要組成成分,可能會成為物聯網的事實標准。
- MQTT協議具有QoS(Quality of Service,服務質量),能夠緩沖消息,並通過重傳機制保證終端設備收到消息。其消息格式極其簡化,最短是兩個字節,提供訂閱式和發布模式,高效推送消息。
- 三角色:服務器代理、訂閱者、發布者
- QoS:
- 零級(至多交付一次信息),如傳感器
- 一級(至少交付一次信息),確保消息到達
- 二級(准確一次交付信息),如計費系統
3、Apache Apollo服務器
看名字可以知道,Apache Apollo是一個開源的東西,它就是早期的代理服務器,是在ActiveMQ基礎上發展而來的,可以支持STOMP、AMQP、MQTT、Openwire、SSL、WebSocket等多種協議。
不過,Apache Apollo服務器已經停止維護了。而且網上研究這個的也不多。
4、Apache Artemis服務器
替代Apollo的就是Artemis了。操作指令與Apollo類似,網上文檔也比較齊全,按照教程也可以很快就搭建一個服務器出來。Linux和Windows都可以搭建的服務器。
單機版搭建流程如下:
- 下載,解壓
- 創建broker代理:artemis create xxx
- 啟動代理:xxx/bin/artemis run
- 外網訪問配置
修改bootstrap.xml
<web bind="xxx.xxx.xxx.xxx:61610" path="web"> <app url="activemq-branding" war="activemq-branding.war"/> <app url="artemis-plugin" war="artemis-plugin.war"/> <app url="console" war="console.war"/> </web>修改jolokia-access.xml
<allow-origin>*</allow-origin>
5.遠程JMX訪問
出於安全原因,默認情況下,禁用對Artemis的遠程JMX訪問。Artemis有一個JMX代理,該代理允許遠程訪問JMX mBean。通過配置文件中的
connector
元素進行management.xml
配置<connector connector-port="1099" connector-host="xxx.xxx.xxx.xxx" rmi-registry-port="(如果不設則任意生成)" />注意:rmi注冊表將選擇一個要綁定的IP地址。如果系統上存在多個IP地址/ NIC,則可以通過在artemis.profile中添加以下內容來選擇要使用的IP地址:
-Djava.rmi.server.hostname=localhost
5、阿里雲MQTT消息隊列服務
這個很好用,也不是很貴,因為開源的服務器雖然不要錢,但研究起來總是要費一番功夫的,而且還需要自己運維。如果在資金充足的情況下,直接使用現成的服務也是很好的。