eclipse paho
Eclipse基金会在EclipseCon 2012上启动了“ 机器到机器”工作组 , 旨在围绕不断发展的物联网(硬件设备和传感器正在大规模联网)建立一个社区。 最近,工作组重命名为IoT,因为物联网比机器对机器更笼统。
这种环境的关键部分是一种通信和共享数据的方法,而不是要求高功率的以太网和WiFi连接,增长的趋势是使用MQTT作为实际的通信协议。
为了了解有关它的来源和人们使用方式的更多信息,InfoQ与Eclipse Paho项目的项目负责人Andy Piper进行了接洽 ,该项目为多种语言的MQTT(消息队列遥测传输)协议提供了客户端。
InfoQ : Paho项目专门针对MQTT协议的客户。 您能否告诉我们有关MQTT的含义以及它的来源?
Piper :MQTT起源于1990年代后期,确切地说是第一次实施是在1999年。 想要监视工业和机械系统(例如管道,油压,水位等)的公司需要一种非常轻巧的技术,适合在受限的系统和设备上运行。
当时,用于处理这些环境的主要协议是SCADA (监控和数据采集),而该协议的早期版本是单片或紧密绑定的专有和封闭系统。 IBM与一些合作伙伴(主要是一家名为Arcom的公司)合作,设计了一种基于轻量级消息传递的协议作为替代协议,从而实现了更好的可伸缩性和易于集成的目的。
因此,从本质上讲,MQTT是一种非常轻便的发布/订阅异步消息传递协议,非常适合物联网,移动和传感器网络。 它始于IBM,但在过去的几年中,它已成为开源软件,并在OASIS中达成了一致的标准–因此,如今 ,它已不仅仅只是IBM的产品而已。
InfoQ :MQTT是专有协议吗?
Piper :很久以前,MQTT仅由IBM及其少量合作伙伴实施。 但是,该协议规范多年来以“免版税”的形式发布,因此,出现了一些免费的实现方式-最著名的是Roger Light最受欢迎的蚊子经纪人。 自2011年以来,MQTT作为Paho项目的一部分进入Eclipse,并在2013年期间将规范提交给OASIS进行标准化 。 标准化过程中的供应商和感兴趣的各方的名单令人印象深刻! MQTT OASIS技术委员会正在组建中 ,欢迎与会代表。
因此,不,MQTT不是专有的,它是绝对开放的,具有许多免费和开源的实现,以及许多商业许可和支持的经纪人和客户。 IBM有一个高性能的设备,可用于支持一些项目,例如一些制造商生产的联网汽车中的物联网。 我最兴奋的新兴商业经纪人之一是HiveMQ ,它来自德国的DC-square 。
InfoQ : 是什么使MQTT成为嵌入式系统或高延迟网络的理想选择?
Piper :正如我提到的,MQTT诞生于一个时代-在特定的环境中-计算能力和带宽非常宝贵。 它是为CPU周期和内存有限的系统设计的,也为带宽最小或延迟较高的网络(拨号网络或卫星链路)设计的,在这些网络中,用户可能需要为传输的每个字节收费。
结果,即使在当今的宽带连接和智能手机具有比使我们登月的计算机更多的功能的今天,MQTT仍可以非常有效地在小型设备或网络覆盖不完整的区域中运行。 分析表明,MQTT在移动设备的网络和电池消耗方面非常有效。
最轻便的实现在mbed和Arduino等设备上运行。 最小的数据包大小为2个字节,并且有许多内置功能可用于处理设备与网络失去联系的情况(称为“最后的意愿和遗嘱”功能,设备或客户端可以指定最终的如果失去联系,则以其名义发送的消息)。
实际上,发布/订阅也是在这类系统中分发数据的一种非常好的机制-您不会对网络上的每个节点进行单独的点对点HTTP样式的调用,因此可以非常有效地扩展。 任何对数据感兴趣的系统都可以订阅相关主题并加以利用; 其他设备可以继续执行对他们来说很重要的任务,而忽略它。
我们应该提到的另一件事是,MQTT系统的核心是代理-代理通常可以被桥接和聚集以共享主题和出版物(取决于实现),以避免单点故障-设备与代理通信。代理,并且代理将消息分发给订户。
InfoQ : MQTT提供什么样的服务质量?
Piper :简单的答案–其中三个:
- QoS 0本质上是“一劳永逸”的–消息可能会到达,也可能不会,但数据无论如何可能都不重要(当然,大多数情况下,消息会传递到某个地方,但是无需进行双重检查即可确定会发生)。
- QoS 1为确保消息到达付出了更多的努力:如果未从代理接收到确认收据,我们将再次发送消息,但要设置重复的报头字节,以防万一。
- QoS 2更接近两阶段提交世界,并尝试为您想要确保代理确实收到了继续传递消息的数据提供一次和仅一次传递。
InfoQ : MQTT与其他消息代理技术(如JMS)相比如何?
Piper :JMS实际上是一个有趣的示例,实际上,JMS是API,而不是协议或传输。 当Sun指定JMS时,他们实际上允许任何供应商或开放源代码项目在通用API下插入合适的传输(因此,您最终获得了IBM MQ,Tibco等,尽管程序广泛,但它们在网络层无法互操作。它们之间的可移植性)。
更好的模拟方法是将MQTT与AMQP , STOMP或ØMQ进行比较 。 答案是,它与所有这些并存。 它不是具有细粒度控件,超可靠队列(例如AMQP)的全功能企业消息协议。 但是它也不是像ØMQ这样的TCP套接字之上嫁接的队列(对ØMQ伙计们表示歉意,为了比较起见,我在这里简化了!)。 它试图提供一个简单的API –本质上有5种方法; 适用于受限网络的紧凑有效载荷; 以及对传感器和移动方案有用的发布/订阅“推送”机制。
InfoQ :目前谁在使用MQTT?
Piper :确实有大量用例和示例,我将选择一些更引人注目的和知名的用例:
- 名单上最容易辨认的名字是Facebook –由于博客的轻量级特性(他们不想浪费手机电池或使用所有数据),他们在博客中写道如何在Messenger和移动应用中使用MQTT 。
- 美国的St Jude Medical正在使用MQTT进行患者的远程监控。
- Consert Energy正在将MQTT用于其智能家居电表。
- 怀特岛(Isle of Wight)渡轮在MQTT系统的驱动下,在进出港口时鸣叫其位置 。
- MQTT的共同发明者Andy Stanford-Clark已将他的房子变成了使用MQTT 进行家庭自动化的生活实验室 ,并监视从打开灯到花园门是否打开的所有内容–哦,是否他需要重新武装他的捕鼠器!
InfoQ : Paho项目是如何创建的,为什么在Eclipse中创建?
Piper :Eclipse最初是从IDE开始的,但事实是Eclipse Foundation一直支持广泛的开源项目,这些项目围绕开发人员工具,并且越来越多地支持运行时和框架。
Paho是在IBM寻求开源其MQTT客户端代码时诞生的-IBM一直与Eclipse社区有着密切的联系。 同时,另外两个项目Eclipse Koneki (用于IDE的Lua工具扩展)和Eclipse Mihini (用于IoT的嵌入式运行时)正在展开,这三个项目构成了Eclipse IoT生态系统的开始。 由于物联网和物联网的重要性已得到公认,因此现在这一点已大大扩展。
现在,在Eclipse Mosquitto项目中,基金会中的mosquitto代理与新开源的IBM代理(“ Really Small Message Broker”)结合在一起; 还有许多其他项目,例如Eclipse SmartHome , Kura , Krittit , SCADA , OM2M , Wakaama(以前称为liblwm2m) , Californium ,以及(重要的是,它在协议之间架起了桥梁)Eclipse Ponte 。 实际上,我们最近决定将Eclipse M2M行业工作组重命名为 Eclipse IoT ,以反映有关该领域的术语和理解的行业方向。
Eclipse基金会的Ian Skerrett最近写道:“ Eclipse即将成为IoT标准的开源实现社区 ”,而Paho项目很高兴成为该社区的核心部分!
InfoQ : Paho项目有哪些语言的库?
Piper :Java,C和Javascript当前是我们的“核心”或实现,最初来自商业IBM库。 Python客户端是由mosquitto项目贡献的,并且质量很高且经过了良好的测试。 我们还有正在开发的Go,Lua和C ++ 客户 ,一个正在开发的Objective-C客户 ,我们总是很高兴看到新的成果。
这里的目标是培育高质量,符合规范的客户端,这些客户端可以作为参考实现。 mqtt.org网站还列出了许多其他多种语言以及针对不同设备的其他实现-Arduino 客户端特别受欢迎,但不属于Paho项目的一部分。
InfoQ : 是否有可供开发人员使用的MQTT代理?
派珀 :是的,这些日子很多! 作为社区的负责人,我可以很高兴地说一遍,因为我们以前只有几个示例,其中一些并非完全免费使用。 我提到RSMB和mosquitto在Eclipse Mosquitto项目下共同发展,实际上,您已经可以将MQTT客户端指向iot.eclipse.org:1883并使用免费的托管mosquitto代理。
周围也有其他一些不太知名的免费示例,例如moquette(基于Java的代理)。 在“成熟的OSS项目”空间中,RabbitMQ和ActiveMQ都支持MQTT及其其他已建立的消息传递协议。 开发人员还可以获取商业HiveMQ代理的副本以进行试用,甚至下载完整的IBM MessageSight设备的虚拟机映像(对于大多数独立开发人员来说,实际硬件可能无法使用... IBM赢得了甚至都不把其中一个寄给我!)。
值得注意的是,尽管MQTT的语言实现范围很广-并非所有语言实现都托管在Paho内部-以及许多代理,但是互操作性仍然是重要的考虑因素。 并非所有的经纪人都支持相同的功能。 在今年三月于加利福尼亚州的EclipseCon上,将有一个互操作性测试日,开发人员和硬件供应商可以聚在一起,看看他们的实现与规范的融合程度以及如何协同工作。
InfoQ :网络上是否有很好的文档或教程来查找有关MQTT的更多信息以及如何将其与Paho和Mosquitto一起使用?
派珀 :是的,但是我们总是可以做得更好! 我最近最喜欢的几篇文章是DJ Walker-Morgan撰写的,他写了一些不错的教程。 看看使用Paho的 实用MQTT和在BeagleBone Black和Raspberry Pi上使用Eclipse Paho的MQTT 。 HiveMQ的人在他们的网站上也有一些很棒的教程 。 关于MQTT社区的真正好处是它非常活跃,并且有很多地方可以聚在一起分享想法和提出问题。 http://mqtt.org/get-involved列出了一些社区空间和邮件列表。 如果您有想法或问题,论坛上的某人可能会为您提供帮助!
需要注意的一件事是,目前,我们正在将mqtt.org社区网站和Wiki 移交给Github进行托管-有关新组织,请参见http://github.org/mqtt 。 这是一个参与并帮助改建网站和重新组织Wiki的好时机,它对于新手,经验丰富的开发人员和用户都是重要的信息来源!
如Facebook所示,MQTT适用于低功率或电池设备,以及较小的设备或嵌入式计算机。 2014年3月19日,在EclipseCon上有一条关于物联网的专题报道。您可以使用MQTT进行什么联网?
安迪·派珀 ( Andy Piper)是Pivotal开发人员关系和社区工程团队的成员,并且是Cloud Foundry(开源平台即服务)的开发倡导者。 在网上,他可能是最知名的“社会桥梁建设者”,横跨许多技术和兴趣领域。 Andy对小型和移动设备,云,物联网以及Arduino和相关技术有着浓厚的兴趣。 他之前在IBM Software Group工作了10年以上,担任顾问,战略家和WebSphere Messaging社区负责人。
翻译自: https://www.infoq.com/articles/interview-andy-piper/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1
eclipse paho