当前位置: 首页 > 科技观察

OpenHarmony啃论文成长计划---Flatbuffers应用于MQTT协议

时间:2023-03-14 08:22:26 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com大家好!我是深圳科技大学FSR实验室的同学。我在OpenHarmonyGrowthProgramThesisClub学习和研究JSON相关技术,属于二组成员。场景总结Flatbuffers:Flatbuffers作为MQTT协议的数据传输格式的性能分析。JSON作为一种MQTT协议数据交换格式有很多缺点,比如处理时间长等,而谷歌最近推出了一种名为Flatbuffers的新数据格式,它比其他数据格式具有更好的数据网格传输性能。本文将引用文献来讨论通过MQTT发布/订阅通信模型测试Flatbuffers和其他数据格式之间的性能差异。技术发展时间及应用https://github.com/google/flatbuffers。今天要说的开源技术Flatbuffers,是谷歌员工WoutervanOortmerssen在2014年为了解决游戏中的性能问题,开发了这个序列化库。Flatbuffers概述FlatBuffers是一个开源、跨平台、高效的序列化类库,提供多语言接口。目前库提供C++、C#、C、Go、Java、JavaScript、PHP、Python语言接口。特点:无需解码,FlatBuffers的不同之处在于它在平面二进制缓冲区中表示分层数据,因此无需解码即可直接访问。可扩展性和灵活性高,类库支持的可选字段具有良好的前向/后向兼容性。跨平台,支持C++11、Java,无任何依赖库;在最新的gcc、clang、vs2010和其他编译器上运行良好。MQTT协议MQTT协议是一个基于客户端-服务器的消息发布/订阅传输协议,工作在TCP/IP协议之上。它是一种轻量级、简单、开放且易于实现的协议,常用于机器对机器(M2M)通信和物联网(IoT)设备。而且它不需要很大的带宽,而且是开源的,所以很多库都支持使用这个协议。MQTT比HTTP1.1协议更轻量级,用于实时发送数据时是一个不错的选择。在发布/订阅通信中,MQTT模型充当代理,如图所示。MQTT具有以下特点:简单高效,MQTT一般用于处理资源较少的设备通信。不需要管理员,它可以自动响应一些数据,或者本身不需要的数据。数据传输最小化,带宽频率保持较小。它更灵活,可以处理所有类型的数据。场景介绍在一个有很多传感器数据的物联网设备中,使用MQTT协议向其他终端发送传感器数据。在使用MQTT发送数据之前,需要进行预处理和数据转换,即将JSON数据的物联网传感器数据转换成其他几种数据格式,通过Flatbuffer类库处理,存入缓冲区,再保存到缓冲区包含BIN的数据文件中,除了BIN格式的数据外,还有其他数据格式,如Json、CSV、XML等。处理后的文件大小如下:性能比较PayloadCSV数据格式的有效载荷最小,值为0.9955个字符/字节。而XML负载具有最高值,值为0.9985。负载越大,文件越大,因此负载值会影响文件大小。计算公式:Latency首先是发送数据的等待时间(DeliveryLatency)。可以看出,Json是发送时间最快的,其次是XML,而CSV和Flatbuffer比其他数据格式花费的时间要长。它还表明,与其他格式相比,用于交付的Flatbuffer序列化过程的性能较差。如上图:然后就是接收数据的等待时间(ProcessingLatency)。从上图可以看出,在接收数据时出现了相反的结果,Flatbuffer表现出了最好的性能。原因也是Flatbuffer的一个很重要的特性,就是订阅者在接收信息时不需要反序列化(也就是不需要解码)。吞吐量(Throughput)发送数据的吞吐量(DeliveryThroughput)对比如下图:接收数据的吞吐量(ProcessingThroughput)对比如下图:可以看到XML对于发送和接收数据。原因就是他的文件体积小,延迟低。Flatbuffer处于中间位置。总结通过以上衡量指标的对比,我们可以发现Flatbuffers的负载值(Payload)非常小,所以效率非常高。在测量延迟(Latency)时,接收数据时等待解析的时间很短,但序列化发送数据的等待时间更长。在衡量吞吐量(Throughput)`时,它的表现也是中规中矩。综上所述,Flatbuffers序列化类库对于MQTT协议中的数据存储会非常好,但是当用于数据传输时,相对于其他数据格式,其性能仍然不是很好。参考文献①。MQTT发布/订阅通信上的Flatbuffers实现作为数据传输格式。②.JSON兼容的二进制序列化规范概览。更多信息请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com