最近,当我在Youtube上找到一段精彩的视频时,这引起了我的注意:


Micheal E. Anderson:比较IoT的消息传递技术,OpenIoTSummit,Linux Foundation。


他的演讲幻灯片可在此处

在幻灯片26和41分钟的视频中,他正在讨论如何(让我解释一下):


蜂窝运营商更喜欢其IoT消费者使用HTML,XML或JSON类型的消息,因为它们消耗更多的数据。更多数据意味着他们可以向消费者收取更多服务费用。


我了解许多专有协议,也就是。 SigFox,Wireless HART或Z Wave具有较低的数据速率,而在此类载波上发送大量数据可能是一项昂贵的事情。

问题


在专有协议中是否还有其他轻量级消息格式正在使用,这使它们成为当前和未来的经济高效的解决方案物联网消费者? (在黑暗中射击:某种叫做轻量级XML或HTML或JSON的格式位于某处?)
也许是CBOR或已被使用?


评论

我怀疑数据带宽可能是二阶成本,而不是由应用程序开发人员实际支付的。因此,尽管值得担心,但该领域可能还会有更多的发展。

您有没有特别感兴趣的情况?如果您要发送可预测的数据类型(例如,仅仅是整数或其他形式),则可以完全放弃标记语言,但这确实限制了您可以表达的信息量。如果您只对通常使用JSON / HTML / XML的任何情况感兴趣,也可以。

@ Aurora0001我实际上没有特别的情况,但是值得考虑。我认为,为了兼容可能连接到蜂窝网络的基于Web的网络(以IP为主),标记语言是数据格式的最佳形式。但是由于物联网领域通常正在起飞,因此可能值得尝试使用不同的格式。

抱歉,图片有点混乱:任何网络上的消息传递都有几层,其中数据层仅位于顶层。所有这些都在优化中,或者至少可以。例如5G增强了所使用的信令,因此可以容纳更多数据.5G甚至增强了空中信号的频谱效率,因此效率从许多方面受到关注。

#1 楼

您是在询问协议还是消息格式?当我们指的是数据格式时,我们经常错误地使用术语协议。我自己做这件事,通常是因为每个人都不清楚区别。 (会话,流量控制,可靠性等)。消息格式是所发送消息中数据的格式。我假设这就是您要问的。

最紧凑的消息格式是经过仔细考虑的手动滚动二进制格式。在低带宽情况下,当您要发送几个字节并确切知道这些字节是什么样时,通常使用它。对于较大的消息,缺点很明显,通常应不惜一切代价避免。

我对许多不同的数据序列化选项进行了详细的评估。我希望protobuf,messagepack相当紧凑。但是,我的第二个问题是找到可以在许多不同平台上维护并可用的库,包括设备上的C。

我确定的格式令人惊讶地是gzip压缩的JSON。它很容易实现和理解,可以在任何地方运行,并且与我使用的数据相比,其他方法几乎相同或更小。

还请注意,如果您拥有安全的渠道例如TLS,无论如何,您都将在TLS握手中消耗大量数据(> 6KB)。发生了可能是因为可以轻松写出和解析(和压缩)json。我喜欢Flatbuffers的外观,但优点是解析速度比紧凑更重要。

由于您正处于调查阶段,因此建议您使用每种情况的典型数据在每个代码上编写一些代码,并进行一些比较。开始时拥有硬数据有助于确认您的选择。

#2 楼

基于标记的格式的最大优势在于,您可以灵活选择要传输的数据。这在不断发展的生态系统中非常重要,在该生态系统中,您预计服务将在几年的发展中不断发展。最小的结构外观。后来,当您意识到甚至一个领域都需要扩展时,您就会陷入困境。甚至很难对协议进行更新,因为在每个端点都更新之前,您不能淘汰旧的编码。这表明最佳方法是将极简数据包和基于标记的编码混合在一起(使用后者作为后备广告)。其值取决于最高带宽有效负载。如果您已经在传输频繁的视频大小的块,那么优化不频繁的控制数据就不那么值得了。如果您经常进行小额转帐(可能是温度),则将传输的开销降至最低是有道理的-但也许只分批进行转帐就可以了。