物联网通信Protobuf与JSON / BSON比较中使用协议缓冲区的性能评估,重点是IO运输外文翻译资料

 2023-01-15 04:01

物联网通信Protobuf与JSON / BSON比较中使用协议缓冲区的性能评估,重点是IO运输

摘要:连接到Internet的事物可能不会仅连接到云上的服务器。只有将它们相互连接,才能发挥其作用。这种互连被认为是物联网服务之间的通信。由于网络上事物的性质,任何交换数据的空间开销都必须保持在最低水平。JSON被认为是在分布式嵌入式系统领域中传输各种数据的最有效方法。JSON的二进制表示形式BSON更为可取。本文探讨了各种可能性,并严格审查和评估了将Google的协议缓冲区用作物联网运输领域中的处理协议和通信标准的有效性。

关键字:物联网;Google协议缓冲区;性能;编码;智能交通

  1. 介绍

越来越多的设备连接到全球网络,嵌入式系统的范围也在扩大。需要一种简单但可行的数据交换格式[1]。这些设备不仅用于提供数据,还用于服务。这意味着Web服务已经与嵌入式设备合并。 更准确地说,在运输领域,计算节点的增长速度超过任何其他行业。在现代汽车中,惊人的总成本的30%是电子部件[2]。当汽车变得能够通信并能够自动收集环境信息时,这种趋势将进一步放大。例如,当有队列时,如果发生事故或只是交通过载,前排的汽车可能会通知后排的汽车,这最终将使智能导航系统重新计划编程为下降的汽车的路线已经饱和的道路。这些汽车可以帮助驾驶员与前方汽车保持安全距离,并且可以拒绝危险的动作,例如在天气条件不安全的情况下超速行驶,或者在迎面驶来的汽车过快时超车。可以在高速公路上使用自动驾驶仪驾驶汽车,以减少疲劳相关事故的风险[2]。

车辆也将能够自我维护,根据问题的自我诊断要求适当的服务,并确保有正确的备用零件库存。该汽车将根据普通驾驶员的日记和喜好来计划服务时间,以最大程度地减少他们的生活负担,并确保在需要时有替代汽车可用[2]。此外,一些汽车行业的领导者与Google一起建立了开放汽车联盟(OAA)。有计划将新功能引入Android平台, 以加速采用车联网(IoV)范式[3]。由于交通和天气相关信息将在车辆上更新,因此通信渠道为“双向道路” [4]。

考虑到所有这些因素,车辆互联网在交通运输中的计算节点之间具有巨大的通信领域,并且它必须具有轻量级的序列化结构化数据的方式。这种“轻量级方式”必须在异构设备中有用,易于解析/读取,并且在通信中没有任何不必要的开销。这种通信不仅可以在感知层和网络层之间实现,而且还可以在感知层本身的“事物”之间实现。

在此通信领域中交换的每个数据都必须满足“正确的信息条件”。如果可以以最小的努力使用正确的信息条件, 则可以满足。这包括用于人类交互的人类可读信息,以及在语义和句法上丰富的信息机器可读信息,这可能又需要将低级原始数据(可能来自多个来源)转换为有意义的信息,甚至可能需要某种模式识别和进一步分析,以识别生成的数据中的相关性和趋势。

在[1] 中, JSON 是解决通信问题的一种方法。JavaScript Object Notation(JSON)是一种人类可读的数据交换格式。它基于JavaScript编程语言的子集,旨在由JavaScript编译器正确解析[6]。还有其他格式可以作为协议的候选格式,例如XML [7,8],更确切地说是有效XML交换(EXI)[9]。EXI将XML消息转换为二进制消息, 以减少所需的带宽并最小化所需的存储大小。在[10]中, 它评估了受限设备中EXI的性能。

大多数现代控制器都配备了脚本解释引擎。因此,脚本语言可用于轻松定义所需行为并将其应用于可用设备的生态系统[11]。除了XML之外,还使用Lua和SMIL脚本语言。

JSON [1]仍然被视为一种轻量级的数据载体,具有占用空间小和传输速度快的特点[12]。

最近,已引入协议缓冲区[13]作为一种以有效且可扩展的格式编码结构化数据的有效方法。由于可以轻松将其转换为XML和JSON格式,因此Protobuf中的数据既可以机器读取,也可以人工读取。这满足了“正确的信息条件”。

在本文中,Protobuf被评估为在专用车辆跟踪设备上的车联网中JSON消息的一种可能替代方法。由于Protobuf 是二进制格式,因此也可以使用BSON进行比较。BSON代表二进制JSON。它是JSONlike文档的二进制编码序列化。像JSON一样,BSON支持将文档和数组嵌入其他文档和数组中[14]。

正如调查[15]所示,物联网中有一些标准化领域。只有或多或少相关的协议和应用程序。因此,协议缓冲区可能是标准化通信协议的正确候选者。

  1. 协议缓冲区

最初,谷歌开发了协议缓冲区(Protobuf),以解决对索引服务器的大量请求和响应的问题。

在协议缓冲区之前,存在一种用于请求和响应的格式, 该格式的使用请求和响应的手动编组/解组,并支持多种协议版本。这导致了相当不便的代码[13]。由于它已被Google利用,因此假定它是稳定的并且经过了良好的测试。同样,它与语言和平台无关。它支持了Java,C ,Python 以及其他编程语言(通过第三方实现)。 Protobuf允许开发人员构建原型文件,以描述将要发送的消息的结构。原始文件被编译成本地语言代码,提供用于读取和写入消息内容的包装器类。语言可以通过将新字段视为可选来处理消息框架(原型文件)的多个版本。协议缓冲区中不要求真正的深度知识,这使它非常流行。

图一 人员的简单定义

图二 嵌套PB消息以序列化Household的消息

图1 [16]显示了一个简单的Person消息的消息定义。每个人消息均具有姓名,性别(可以是女性或男性),标题(可以是先生,夫人,女士,小姐,博士),年龄,收入和就业情况。可以使用类似C的定义来定义字段顺序和类型,还可以为每个字段分配默认值。对于标题,在消息定义中使用性别和受雇的ENUM允许对字段值进行初步限制。

图2 [16]使用重复的关键字显示了更复杂的消息类型, 例如Person消息和HouseHold消息之间的一对多关系。

  1. 专有跟踪系统

专有的车辆跟踪系统协议受版权法保护,在本文中不予披露。消息的名称和协议的详细信息都已公开。但是, 消息的类型与任何其他跟踪系统类似:

请求–从“事物”中查询数据

命令–将数据更新/插入设备

响应和状态消息–从设备返回请求的数据

确认,否定确认和保持活动信号

在常规工作模式下,响应和状态消息占总流量的90%。

图3 原始二进制消息的示例。

每隔10秒从设备请求请求状态信息的消息。带有状态信息的响应消息。确认消息。有关服务器的命令消息更新信息。

图4.收集信息过程。

Process侦听现实世界中的消息,将其转换为三种不同的格式,并在即席数据库中序列化。之后,将测量邮件大小并将其表示在一个表中。图3.显示了原始消息的示例。一方面,响应和命令之间的大小差异很大,另一方面,响应和请求之间的大小差异也很明显。尽管命令消息不是这种情况,一般。注意命令中的0x00字节数 。

  1. 方法

主要目标是将现实世界中的消息转换为其JSON,BSON 和Protobuf表示形式。系统设置为听来自真实跟踪设备的消息,并将其记录在一个日志文件中。

记录了50,000多条消息。然后,该过程将它们转换为三种不同的表示形式,而不会丢失任何信息。转换后的消息与真实消息一起放置在临时数据库中。测量并汇总其大小后,将给出结果表。图4显示了该过程。

  1. 结果与讨论

收集并转换51690条消息后,该过程将对其进行测量。表1概述了该过程的结果。它以所有四种格式显示消息的总数和大小:原始消息格式,协议缓冲区,BSON和JSON。

不同格式的邮件总数和大小,按邮件类型分组

图5.显示了共享消息总数中的消息类型。由于通信如此,几乎每条消息都会得到确认,因此Acks消息的数量非常高。响应的份额最高,因为有可能基于一个请求触发许多响应消息。例如:由一条请求消息触发后,gps状态数据每10秒发送一次作为响应消息。这是跟踪设备的常规过程。

图5.按消息类型分组的消息总数

尽管Acks消息在消息总数中占有很大份额,但考虑到消息大小时,情况并非如此。图6.显示46%的Acks消息仅共享11%的流量。另一方面,48%的响应消息最多共享总流量的86%。这是由于明显的事实,即与Acks消息相比, 响应消息的大小明显更大。根据表2的结果,很明显,当前的专有二进制协议创建的流量较少。但是也很明显,如果使用Protobuf进行流量传输,它将比BSON流量少5倍以上。

重要的是,在某些情况下,专有消息的大小不会显着小于protobuf消息的大小,如表2中带有Commands消息的CMD行所示。Protobuf消息通常是

比原始消息大2.5倍,但在命令消息中,此比率为1.36。这是因为原始消息在需要写入/更新设备时会使用恒定长度的字符串。这些恒定长度的字符串通常填充0x00字节。由于Protobuf消息不是这种情况,因此会导致较小的大小比率。如图3所示。当涉及到命令消息时,从地址0x000C 到0x002B放置有关服务器名称tim.br的信息。此信息花费了32个字节。此消息中的大多数字节都是纯填充符。对于“命令”消息,Protobuf和BSON消息之间的大小比例也是特定的。该比率通常约为5,但对于Commands消息, 则几乎为8。其原因是在命令类型的情况下使用Protobuf 枚举。所有命令类型都用一个占用一字节的枚举值表示。另一方面,JSON使用字符串表示命令类型。

  1. 结论

本文表明,协议缓冲区是物联网领域标准化通信方式的重要候选者,特别是因为网络负载较小。还表明,专有协议应避免使用恒定长度的字符串,因为这很明显开销很大。此外,本文还展示了Protobuf枚举类型的强大功能。

另一方面,很明显,protobuf消息的大小几乎是原始消息的两倍,但是在互操作性的情况下,protobuf消息将是最佳选择。同样,如果将标准化此级别的通信,那么protobuf当前是最佳的选择。

可以从多个方向进行进一步的研究。这可能是研究其他车辆跟踪设备协议的起点。此外,可以研究IoT的其他领域,以便找到标准化通信的最佳候选协议。流量不是唯一需要关注的参数,处理时间也很重要。这意味着进一步的研究之一也必须考虑处理时间。

控制教育中基于Python的互联网工具

摘要:通用语言和开放源代码Python及其科学库为开发科学应用程序提供了Matlab,Java和C 的有趣替代方案。在这种情况下,作者介绍了该语言的主要特征,相关工具,体系结构及其科学环境的多样性。提出了与控制培训有关的三个应用。

1 介绍

在科学计算中,尤其是在控制理论中,一个问题是促进算法的开发(低级)和在软件级别(高级)集成异构功能。在低级别上,算法代码对于考虑到便于重用的信号的性质而言是通用的:就维度(例如1D信号,矩阵,nD数组)和类型(例如浮点数,整数)而言。在高级(软件级别)上,功能可以多种多样:GUI 2D,3D可视化,输入/输出外围设备(例如Leapmotion,Kinect,摄像机),处理系统(例如Raspberry Pi,GPU),特定的软件体系结构(繁重) -客户端,Web应用程序,分布式应用程序)。在这种情况下,目标是轻松地重用现有程序,并按照良好的软件工程实践(例如,“设计模式”,“建筑模式”参考Gamma等人(2015))组装成模块化模块。在这种情况下,Python及其科学图书馆环境在Langtangen(2012),Perkel(2015),Akeret等人的科学界中越来越多地使用语言。(2015)。

Python语言提供的主要优点是该仿真工具是免费的。实际上,可以考虑使用用于通过Web浏览器进行测试和编程的客户端-服务器模型,在教室中实施这种开源语言。例如,可以使用Peacute;rez和Granger(2007)描述的IPython解决方案来实现此配置。学生还可以在家中进行测试和练习,而无需安装和付费专用于物理系统的数值计算和动态模拟的软件。Python的另一个优点是该语言可以在许多其他教育领域中使用。例如,可以使用Python语言和图形库(例如OpenGl)执行基于3D可视化的人机交互。

这里的目的是从功能和结构方面介绍此语言及其环境的主要特征。

第一部分着眼于该语言及其环境(应用程序和开发工具)在非科学环境中的主要功能。第二部分着重于科学环境。我们首先介绍一些主要的库,以及它们之间相互关系的结构化(架构)方式。为了说明可能的应用的多样性,简要介绍了控制教育中通常遇到的几种情况。第一个与系统识别有关(考虑单位步长输入引起的动态演化)。对于第二个示例,考虑了微不足道的热过程(与传感器相关联)来考虑PID调节。在本函件结尾处提出了一些总结性意见。

2 关于Python的一般注意事项

2.1 Python语言

Python是在强大的动态类型和丰富的标准库(数据结构,多线程,文件,网络...)中解释的一种语言开源多平台。语言被解释的事实使得例如可以将自身从编译中解放出来,这对于诸如C或C 的语言来说是必需的,但具有相关的缺点(例如,速度慢,嵌入式系统上的交叉编译)。

动态类型化为引言中提到的数据类型(例如,有问题的类型和维数(即1D,2Dhellip;))提供了很好的通用性,可以适应执行。这与具有(编译多态性)模板机制的诸如C或Java之类的语言的唯一静态通用性进行了比较。

Python是Mart

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[239777],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。