使用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

你可能感兴趣的:(使用HiveMQ 4构建更具可扩展性和可靠性的IoT应用)