使用HiveMQ 4構建更具可擴展性和可靠性的IoT應用

HiveMQ是一個基於MQTT的消息傳遞平臺,設計用於支持物聯網應用程序。最近發佈的HiveMQ 4增加了對MQTT 5的支持,改進了其擴展系統,優化了與Docker和Kubernetes以及AWS EC2的集成。HiveMQ 4支持所有的MQTT 5新特性,包括用戶屬性、否定確認和主題別名,併力爭使MQTT 3和MQTT 5客戶端可以透明地通信。此外,HiveMQ 4還引入了一個新的擴展系統,旨在簡化與企業級系統的集成。

InfoQ採訪了HiveMQ開發商dc-square GmbH的首席技術官Dominik Obermaier。

InfoQ:您能簡要說明一下MQTT 5給物聯網應用程序帶來了什麼價值嗎?它在哪些方面對MQTT 3進行了改進?

Dominik Obermaier:MQTT於1999年開始開發,MQTT 3.1規範於2010年發佈。自2010年以來,很多事都變了,特別是在雲計算和大規模系統開發領域。MQTT也變得更加流行,所以規範現在應該更新了。以下是MQTT 5的部分關鍵目標。

  • 更容易以可伸縮且可靠的方式託管大型系統。

  • 改進錯誤報告,使整個應用程序更有彈性。

  • 使向MQTT消息添加用戶屬性成爲可能,並改進性能和對小型客戶端的支持。

如果一定要總結一下,我要說,對於原生雲應用程序,MQTT 5將使MQTT更具可伸縮性和可靠性。雖然一個支持MQTT 3.1的HiveMQ部署已經可以支持多達1000萬個併發MQTT連接,每秒用於數據交換的消息超過100萬條,但是MQTT 5是擴展到更大數量的基礎。

InfoQ:MQTT實現領域的競爭非常激烈。HiveMQ如何從競爭中脫穎而出?

Obermaier:看到MQTT成爲如此受歡迎的物聯網標準真是太棒了。許多物聯網平臺供應商都將MQTT作爲他們支持的協議之一。然而,對於HiveMQ,MQTT是我們平臺的核心;它不是一個附加組件。我們認爲,MQTT是在連接設備和雲平臺之間傳輸數據的最佳協議。

我們在以下這些方面做得更好。

  • HiveMQ可以擴展到1000萬個連接。在運行時,HiveMQ代理可以通過我們的自動彈性集羣進行伸縮,並以Kubernetes、Openshift和DC/OS作爲運營環境,提供對Docker等先進技術的支持。

  • HiveMQ對於集羣節點故障有更強的恢復能力。HiveMQ會創建獨立於集羣節點的設備會話池。這意味着,如果集羣節點失敗,所有MQTT客戶端都可以在不瞭解底層基礎設施的情況下在另一個節點上恢復會話。如果你的物聯網連接設備需要具有非常靈敏的用戶體驗,並且需要給終端用戶提供始終在線的體驗,那麼這一點就非常重要。

  • HiveMQ 4引入了一個新的擴展框架,極大地簡化了將HiveMQ和MQTT消息集成到不同後端系統的過程。例如,我們集成了InfluxDB 和Prometheus,以簡化MQTT消息數據的監控。我們的客戶還使用擴展框架將他們的(通常是專有的)安全系統與HiveMQ集成。

  • 我們已經花費了大量的時間構建企業部署基於MQTT的系統時需要的管理和故障排除工具。例如,使用HiveMQ可以設置實時跟蹤,以記錄MQTT客戶端和代理之間的交互。這使得運營團隊可以識別出已部署系統的瓶頸和問題,並使得支持團隊可以幫助遇到連接問題的終端用戶。

  • 最後,HiveMQ 100%符合MQTT。你可以使用任何符合MQTT協議的客戶端,如Eclipse Paho,來連接HiveMQ代理。其他一些供應商要求客戶使用他們的客戶端SDK,這是因爲他們不是符合MQTT。我們在全球有超過110個客戶,爲了避免供應商鎖定,他們需要完全基於標準的通信。

InfoQ:MQTT是一項ISO標準,但絕不是物聯網領域中存在的唯一協議。與其他廣泛使用的物聯網通信協議相比,您能否解釋下MQTT在哪些場景中提供了最好的價值?

Obermaier:你說得對,有很多協議,實際上,HTTP經常被用於物聯網解決方案。在許多場景中,我們看到開發人員從MQTT中獲益。

  • 如果你正在構建一個無法依賴於穩定的網絡連接的連接產品。例如,汽車共享應用程序需要在網絡連接中斷時繼續工作,然後在汽車通過隧道後重新連接。MQTT允許會話連接在客戶端和代理之間一直保持。

  • 如果你正在構建一個需要非常有效地利用網絡帶寬的物聯網應用程序,例如在GSM/3G上運行。MQTT消息非常小,而發佈/訂閱協議使得MQTT不像HTTP之類的協議或基於XML的冗長協議(如XMPP)那麼繁瑣。MQTT最初設計於1999年,用於石油和天然氣行業的管道監控。他們需要一種可以高效利用網絡和電力的協議,這正是今天物聯網產品面臨的關鍵挑戰。

我認爲,使MQTT在物聯網中流行的關鍵技術差異包括:

  • 它是輕量級的,易於學習和使用(與AMQP等其他一些重量級協議相比);

  • 發佈/訂閱協議非常適合連接設備的大規模部署;

  • 它運行在TCP/IP上,因此,它對防火牆友好,並且很容易在數據中心或雲平臺上設置;

  • 所有連接嘗試都是由客戶端發起的,MQTT客戶端永遠無法通過Internet尋址,這是一個巨大的安全特性。與CoAP等其他協議相比,MQTT不會在客戶端打開拒絕服務攻擊的攻擊媒介,因此,MQTT在設計上是安全的。

InfoQ:物聯網應用程序其中一個最大的問題是安全性。MQTT 5和HiveMQ 4在這方面的表現如何?在您看來,要保證物聯網設備的安全,還需要做哪些改進?

Obermaier:到目前爲止,安全是所有物聯網部署中最重要的挑戰之一。有一個好消息:MQTT 5在設計上是安全的。鑑於其發佈/訂閱架構,所有連接都是由客戶端發起的。MQTT代理自己永遠不會建立到任何客戶端的連接。因此,攻擊者不可能訪問設備,因爲MQTT客戶端不能通過Internet尋址。

對於高級應用層安全,MQTT 5還引入了身份驗證協議包,它允許使用挑戰/響應協議(如Kerberos、SCRAM或其他SASL框架協議)進行身份驗證和授權。當然,MQTT仍然支持基於令牌或憑據的經典身份驗證機制(如OAuth 2.0或古老的username/password身份驗證)。

多年來,IT行業在安全方面學到的一個重要經驗是:不要自己重複發明輪子!這就是MQTT使用TLS(最好是1.2或全新的1.3版本)在客戶端和代理之間進行加密通信的原因。這是我們今天Internet安全的基礎,也是HTTP和其他Internet協議(如SMTP和FTP)用於創建加密通信通道的方法。

HiveMQ 4實現了上面討論的所有安全機制。通過靈活的擴展系統,可以通過預構建的擴展以插件的形式接入OAuth 2.0服務器、LDAP或設備管理數據庫。其代理提供高級權限管理,因此,你可以限制個人客戶端或客戶組發佈或訂閱哪些數據。由於HiveMQ通常部署在部署着企業級系統的企業環境中,因此,它提供了開箱即用的OCSP Stapling或PKI集成等高級安全機制。

InfoQ:您如何看待物聯網通信協議的發展?它們會收斂於一個共同的標準嗎?特別地,您對MQTT的未來有什麼設想?

Obermaier:由於存在不同類型的物聯網用例,所以總會有不同的物聯網通信協議。我沒有看到一個共同的標準出現。不過,如果你查看最近的調查數據,似乎MQTT和HTTP將成爲主導標準。我們在客戶部署中也看到了這一點。

對於MQTT的未來,我認爲,採用MQTT作爲邊緣計算的通信協議將是一個看點。當邊緣節點相互通信,形成網絡網格時,這一點尤爲重要。MQTT-SN是網格網絡的一個潛在解決方案,我認爲它將在未來幾年被採用。

很明顯,MQTT將繼續存在,而且在我看來,將來MQTT的採用率將繼續增加,對於專業的大規模部署而言尤其如此。

消息隊列遙測傳輸(MQTT)是一種用於物聯網應用的ISO標準通信協議。它定義了支持設備之間一對多通信的發佈-訂閱協議。MQTT客戶端可以通過代理服務發佈消息和/或訂閱新消息的通知。

查看英文原文:

https://www.infoq.com/news/2018/12/hivemq-4-mqtt-5-support

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章