为您的物联网名目选用正确的通讯形式
在您着手一个新的物联网名目之前,您应该思考哪些通讯形式最适宜它。理想上,在选择经常使用协定、通讯框架和两边件之前,您应该思考这些形式。要素很便捷:这个选择防止您将自己拖入一个在不破坏处置打算的代码、架构、安保性或互操作性的状况下很难解脱的困境。
经过遵守规范和放开规范,您可以提高互操作性。雷同,经过经常使用现有的放开、规范化、可调换的组件,您还可以防止构建低廉的两边件。一些形式或者会在名目早期引入额外的复杂性,但与名目生命周期前期无法预感但可防止的疑问(包括与集成关系的疑问)的老本相比,这种老本或者微无余道。
恳求/回应
恳求/照应或者是最经常出现的通讯形式。它由一个向主机或照应方恳求服务的客户端或调用者组成(图1)。这是HTTP经常使用的形式,也是面向服务的体系结构、web服务和代表性形态传输的基础。这是一个有用的形式,特意是假设您有一个客户端-主机或主-从架构。支持这种形式的其余协定包括受限运行协定(CoAP)和可扩展信息和存在协定(XMPP)。
图一恳求/照应通讯形式
但是,这种形式的一个缺陷是介入者的不对等,这在互联网拓扑中也很显著。双方相互恳求信息的双向通讯或者很艰难,尤其是在有防火墙的状况下。你必需选择谁是客户,谁是主机。假设您将传感器设置为客户端,将两边件设置为主机,则传感器可以在须要时报告数据,但两边件在须要时将很难失掉信息。假设传感器是主机,两边件是客户端,两边件可以在须要时搜集数据,但传感器或者不受防火墙包全,任何人都可以衔接到传感器。因此,假设在网络中经常使用防火墙,事情和事情订阅或安保性很难治理,有时须要额外的服务或少量资源。
事情订阅
事情订阅形式准许客户端从主机订阅给定类型的事情。而后,主机在每次触发事情时通知客户端,而不用始终轮询主机(图2)。初级事情订阅机制可以包括何时以及在什么条件下须要事情的客户特定要求。经常使用这种形式的好处是,随着期间的推移,有一半的信息是不须要的,并且降级的提前坚持在最低限制。支持这种形式的协定包括CoAP;XMPP以及通用事情通知体系结构,它是通用即插即用体系结构的一局部,是HTTP的扩展版本。
图二事情订阅通讯形式
异步信息传递
异步信息传递是在网络中的对等点之间发送信息的才干。该形式假定信息可以双向传输,介入者之间没有隐含的层级差异(图3)。假设一个协定支持异步信息传递通讯形式,那么一切其余通讯形式都可以建设在它的基础上。支持这种形式的协定包括XMPP初级信息队列协定(AMQP);在IP层上,是用户数据报协定(UDP),虽而后者或者与防火墙有疑问。
图3异步信息传递通讯形式
牢靠的信息传递
关于关键运行程序来说,知道信息曾经被准确地传递到目标地一次性是很关键的,异步信息传递通讯形式正是这样做的。信息或者在途中失落,但是经常使用恳求/照应形式,您可以重试发送信息,直到从目标地前往确认(或照应)为止。由于信息及其照应都或者失落,所以该方法确保信息至少被传递到其目标地一次性,但是关于某些运行程序(如须要事务或启动计数的运行程序)来说,最多传递一次性(或至少传递一次性)是不够的。牢靠的信息传递是一种确保信息只被传递到目标地一次性的方法。支持牢靠信息传递的协定包括信息队列遥测传输(MQTT)、AMQP以及经过已颁布的放开扩展的HTTP和XMPP。
用两台调频发射机广播一个平面声节目
前面的形式关注的是两个实体之间的通讯。但是,有时假设相反的信息要同时发送给多个实体,则须要更有效的形式。最便捷的这种形式是多播通讯形式。在这里,发送方经过中介(代理或路由器)发送一条信息,而后中介将信息散发给多个恳求介入通讯的接纳方(图4)。这种形式节俭了带宽,由于发送方不用独自向各方发送独自的信息。理想上,发送者甚至不须要知道接纳者是谁。这种形式在很多方面都很有用——例如,在同步多个实体或向多个接纳者散发信息时。支持多播的协定包括XMPP、AMQP和UDP。
图4多播通讯形式
但是,有一点须要留意:虽然您可以经常使用这种形式来节俭带宽,但它也经常被用作克制所选协定及其对事情订阅形式支持的限制的一种方法。此外,多播原本就很难保障安保,只要当接纳方实践经常使用大局部传输的值时,多播在带宽方面才更有效。假设在须要事情订阅但无法订阅的网络中经常使用频繁的多播来缩小提前,多播形式或者会大大参与而不是缩小所需的带宽。
颁布/订阅
颁布/订阅通讯形式是多播形式的扩展,关键区别在于传输的信息也存储在两边节点上。依据协定,信息或对信息的援用随后被散发给相应的订户。依据选用的协定和中介上的设置,仅存储最新信息、存储给定数量的信息或存储一切信息。散发整个信息和只散发对信息的援用之间的区别很关键,它会影响处置打算在消耗带宽方面的性能。
假设订阅者经常使用了大局部信息,那么转发信息自身会更有效,就像多播的状况一样。但是,假设消费仅在须要时出现,则发送较短的援用会更有效,由于这些信息较小,订阅者将仅经常使用其中的一小局部来失掉实践信息。要在后一种状况下失掉信息,须要口头独自的恳求/照应操作。支持颁布/订阅形式的协定包括MQTT、AMQP和XMPP。
行列
队列(或先入先出队列)是一种通讯形式,它准许一个或多个实体向队列发送信息或上班名目,而后让一个或多个接纳者以有序的方式接纳这些信息(图5)。队列通常位于一切介入者都衔接到的两边节点或网络上。
队列是一个很好的负载平衡工具,从多个起源搜集的上班项须要在现有的上班人员之间启动调配,这些上班人员或者具备不同的性能。经过经常使用队列,您可以防止数据提供者和上班者之间的任何硬链接,从而可以依据实践上班负载轻松扩展或收缩数据提供者集和上班者集。在本文探讨的协定中,只要AMQP自身支持队列。
图5队列通讯形式
信息代理
信息代理实质上是规范化的两边件组件,它为防火墙强加于网络中对等体之间双向通讯的疑问提供了一个优雅的处置打算。它们经过准许实体衔接到它们来上班,而后在衔接的客户端之间代理信息。由于一切衔接都是从设备到代理建设的,所以只要代理须要可以从互联网访问。防火墙不须要接受或转发设备的传入衔接,假设您经常使用严厉的对等协定,则须要这样做。
除了代理信息之外,代理还可以为衔接的实体提供关键的服务,例如在多播、颁布/订阅和队列形式中充任中介。信息代理通常还提供客户端认证服务,这关于散布式网络中的衔接设备来说是一件辣手的事情。
因此,假设代理转发通讯中已经过身份验证的各方的身份,实体可以经常使用此信息做出安保决策,而无需在每个设备中实施定制的身份验证。虽然对等通讯或者是许多人的选用,但这种处置打算必需自己处置客户端身份验证以防止变得不安保。假设您经常使用蕴含信息代理的协定,您或者不须要开发自己的两边件来使您的处置打算上班。以某种方式经常使用代理的协定包括XMPP、AMQP和MQTT。
联盟
联盟是一种关键的形式,在这种形式中,环球网络被划分为多个逻辑局部,以成功环球可扩展性和无机增长(图6)。这里的关键是经常使用分而治之的方法在不限制现有网络性能的状况下成功增长。在无代理通讯中,例如经常使用HTTP或CoAP启动的通讯,联盟出当初域级别。每个域都指向自己的一组托管自己的web主机的IP地址。您可以在新域上参与新的web主机,而不限制对现有web主机的访问。这是万维网成功和可扩展性的一个关键特色。
图6联盟
当经常使用支持联结的代理协定时,代理之间相互衔接以路由或中继信息。每个代理在其自己的域上处置身份验证,并识别如何衔接到其余域以向它们转发信息。最驰名的支持联结的代理协定是便捷邮件传输协定。在本文探讨的代理协定中,只要XMPP支持联邦。联结代理网络提供了一种优雅的方式来为每个实体调配一个全局身份。
发现
在大规模散发场景中会出现几个疑问。首先,事物在消费时既不知道网络身份也不知道一切者的身份:它们只知道它们的概念身份。在装置和性能后(最好经常使用一些零性能技术来成功),它们会学习新的网络身份,但不会学习一切者的身份。
在合同中,一切者或者经过扫描盒子上的贴纸来了解自己的网络身份和东西的概念身份。发现通讯形式创立了一种机制,经过这种机制,经常使用事物概念身份的公共常识将事物的网络身份与一切者的网络身份相婚配(图7)。
这经过经常使用网络上对东西和一切者都可用的东西注册表来成功。事物向注册核心注册它们的概念身份,一切者仅经常使用它们的概念身份来申明这些事物。假设成功,每团体的网络身份将被发送给另一团体,而后双方都知道如何相互通讯。XMPP的扩展支持这种形式。
图7发现
信赖委托
在互联网上,能够做出良好的安保决策十分关键。信赖委托是一种通讯形式,在这种形式下,一个事物将请务实时转发给一个更弱小、更受信赖的实体,而后在依据照应的内容前往照应时口头操作(图8)。
而后,这个受信赖的实体可以经常使用机器学习或与东西的一切者间接通讯来学习如何照应网络上与属于他或她的东西关系的新恳求。为了使这种形式成为或者,须要实时的异步双向信息传递。XMPP的扩展支持这种形式。
信赖委托沟通形式