使用 WebSphere MQ Telemetry 和 Pachube 连接远程传感器和设备

Pachube 和附带 Broker 实现的 MQTT 协议都提供了聚合数据的一流设备,将数据从远程设备和传感器网络聚合到公共 API 中。但是,它们没有提供集成这两项技术之间的数据的方法。本文将展示如何使用新的 WebSphere MQ 遥测功能连接两个网络并共享数据,还提供了一个促进集成的可下载工具。

Nick Maynard, 高级软件工程师, IBM

http://www.ibm.com/developerworks/i/p-nmaynard.jpgNick Maynard 在英国 Hursley 的 IBM Software Solutions Transformation 团队工作。他的专长是 Web 编程、Linux、Web 服务和业务集成技术。



2011 年 9 月 13 日

简介

免费下载:IBM® WebSphere® MQ V7.0.1 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

IBM® WebSphere® MQ Telemetry 将 WebSphere MQ 提供的通用信息主干扩展到了大范围的远程遥感器、传动器和遥测设备。它使用 MQ 遥测传输 (MQTT) 协议支持您使用 IBM MQ 技术来监测企业传感器。 MQTT 是由 IBM 开发的信息传递协议,以前可用于 WebSphere Message Broker 并由 IBM 捐献给开源社区。WebSphere MQ Telemetry 包含一个客户端 Java 库,可用来开发支持 MQTT 的代码。

物联网

据 Juniper 网络的社会商业战略家 Adam Christensen 声称,“如其他人之前所说,如果 Web 1.0 的特点是将用户连接到内容,那么 Web 2.0 的特点就是将用户连接到用户,而 Web 3.0 的特点则是在对象之间互连以及将对象连接到用户: 物联网”。

为了用一种先进而又智能的方式监控和管理实际对象的复杂网络,物联网将重点放在了用细粒度的方式互连和检测对象上。

另一种日益流行的用来监测传感器和设备的技术是 Pachube。Pachube 和 MQTT 是物联网的支持技术,预计会成为 IBM 智慧地球计划设想的互联化、仪器化世界中的重要角色。

Pachube 现在拥有约 120,000 名用户(据 statshow.com 统计),越来越多的供应商(如 CurrentCost)用它来提供传感器互联。在许多不同的环境中,IBM MQTT 协议被用来连接各种传感器系统。

本文讨论了集成两个系统的难题,并提出了可能的解决方案,包括一个用来集成网络的工具。本文对使用这两个系统或仅仅比较它们的用户非常有用,所提及的工具对于集成两个系统的用户应该非常有用。

订阅并发布到 MQTT 主题

Pachube-MQTT 桥的系统设计包括将信息从 Pachube Feed 发布到 MQTT 主题,并侦听 MQTT 主题,以获得发布到 Pachube Feed 的信息。如下所示:

Pachube-MQTT 桥的系统设计,将 Pachube Feed 映射到 MQTT 主题,反之亦然
Pachube-MQTT 桥的系统设计

MQTT 的设计是从小组开始,用一种易于理解的方式用基于 “主题” 提供发布/订阅信息模型。由于协议是通过免版税许可证公开发布的,所以很多客户端和 Broker 实现因为它而存在。通常,会将个人数据来源映射到 MQTT 主题,这意味着每个传感器的信息来源都有自己的主题。

支持技术

新的 WebSphere MQ Telemetry 版本包含一个简单的 Java 客户端,您可以用这个库来监听更新,并将这些更新提交给主题。

订阅并发布到 Pachube Feed

连接 MQTT 和 Pachube 时,需要监听 Pachube Feed,以获得发布到 MQTT 主题上的信息,并将来自 MQTT 主题的信息发布到 Pachube Feed 上。

Pachube API 利用 HTTP 协议提供用来向系统发布 Feed 更新以及从系统检索 Feed 更新的接口。自动发布 Feed 更新只需使用 PUT 通过 HTTP 将数据推入即可。尽管可以通过 “轮询” 获得 Feed 更新,但 Pachube API 仍然提供了注册显式监听器的功能,支持 Pachube 将更新 “推入” 应用程序。监听器必需实现一个基本的 HTTP 协议子集,然后才能实现 Pachube API 这一部分。

支持技术

使用 Apache HttpClient 库将更新发布到 Pachube 系统,并使用 Jetty lightweight web 服务器实现监听组件。此外,Pachube 将 Feed 更新推入 JSON 封套中的监听器,因此您可以使用 Jackson JSON 库来实现该结构的反序列化。

集成网络

任何连接两个网络的尝试都必须考虑两个系统之间的差异,将此作为设计的一部分。

调节流量

作为协议,MQTT 没有节流功能。然而,Pachube 实现了对客户端的多级调节,从而减少了客户端系统的流量,并为他们的优质用户提供了区分器。节流在将更新发布到 Pachube 方面变现尤为明显,基本网站成员每分钟只允许更新三次。因此,任何集成都必须以智能的方式来处理发布节流;简单的实现可能会丢失更新,或无法更新接收更新的频率较低的 Feed。下面的算法提供了一个公平的解决方案,平衡了提供及时更新的需求与尽量减少信息丢失的需求:

  1. 在收到来自 MQTT 主题的更新时,要确定目标 Feed 并将更新添加到内部队列结构。如果目标 Feed 的队列中已经存在更新,则用新值替换它,但要保留原来的时间戳。
  2. 每次允许使用 Pachube 节流解决方案时(如果每分钟更新三次,则每 20 秒更新一次),都要从内部队列结构中获得带有 oldest 时间戳的更新,将它发布到 Pachube,并从内部队列结构中移除它。

这个算法并不是很完美,并存在某些边缘情况。然而对于中低吞吐量的大多数情况,这个算法应该足够用了。下面介绍的基本集成工具使用了类似的算法。

身份验证与授权

两种技术都提供了身份验证功能,但授权的级别不同。

MQTT 协议允许 Broker 使用用户名和密码有选择地控制访问,但在通过身份验证之后,所有操作均被授权。

Pachube 允许使用 Web 界面的任何用户读取当前的所有数据。对于自动实现,身份验证是使用 API 密钥来控制的。所有的 API 密钥都被授权,以注册用于任何 Feed 的监听器,其中一些 API 密钥都被授权是为了让 Feed 的所有者发布 Feed 更新。

因此,连接工具至少必须能够使您在每个 Feed 的基础上配置 Pachube API 密钥。

使用基本的集成工具

本文提供了一个基本工具,该工具使用上面描述的原则在 Pachube 网络和 MQTT 协议之间提供了一个简单的集成桥梁。您可以在下面下载它,并将它从压缩文件中提取出来,然后按照以下说明来安装和配置它:

  1. 安装:下载 lib/README.txt 文件中列出的 JAR 文件来运行程序。
  2. 配置:将 config.xml.dist 复制到 config.xml,并编辑它,使其满足您的需求。
  3. 执行:根据您的系统类型运行 bridge.bat 或 bridge.sh。
  4. 调试:编辑 log4j.properties 文件来设置每包的调试级别。

结束语

本文展示了如何使用新的 WebSphere MQ Telemetry 功能来连接 Pachube 和 MQTT 网络并共享它们之间的数据。本文还介绍了一个用来连接两个网络的基本工具。


下载

描述名字大小
Code samplemqttPachubeBridge.zip30KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=757236
ArticleTitle=使用 WebSphere MQ Telemetry 和 Pachube 连接远程传感器和设备
publish-date=09132011