基于FlatBuffers的物联网高效数据传输方法技术

技术编号:24103455 阅读:41 留言:0更新日期:2020-05-09 14:19
本发明专利技术涉及物联网技术领域,公开了基于FlatBuffers的物联网高效数据传输方法,包括以下步骤:S1)发布者publisher获取消息,对消息使用FlatBuffers进行序列化处理;S2)对序列化处理的消息进行传输;S3)MQTT服务器获取序列化处理后的消息,对序列化处理后的消息使用FlatBuffers进行反序列化处理;S4)订阅者Subscriber获取序列化处理后的消息并使用FlatBuffers对序列化处理后的消息进行反序列化处理。本发明专利技术利用FlatBuffers数据协议进行序列化处理以及反序列化,能够降低报文中挟带数据的长度,同时降低数据的序列化以及反序列化成本。

Efficient data transmission method of Internet of things based on flatbuffers

【技术实现步骤摘要】
基于FlatBuffers的物联网高效数据传输方法
本专利技术涉及物联网
,尤其涉及基于FlatBuffers的物联网高效数据传输方法。
技术介绍
MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布,MQTT协议中有三种身份:发布者(Pushlish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT通讯协议是为大量计算能力有限,且工作在低宽带、不可靠的网络的远程传感器或者控制通讯设计的协议,它具有如下特性:1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合:2)对负载内容屏蔽的消息传输;3)使用TCP/IP提供网络连接;4)有三种消息发布服务质量(Qos):最多一次:消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。至少一次:确保消息到达,但消息重复可能会发生。只有一次:确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。除了第一种消息发布服务质量外,消息内容均需要被临时保存。同时,在实际项目中,Broker侧会收集发布的信息,保存到各类数据库中用来进行数据分析,AI学习,以及策略判断等。目前主流技术基本采用json(JavaScriptObjectNotation)格式来保存消息中的报文有效载荷Payload数据。虽然使用简单易懂,但是本身在数据保存的尺寸,以及数据处理的速度上存在问题。尤其对于最高100万级别的设备连接,每秒超过1万次的数据发布场合,Broker服务器的数据转存压力会非常大。在面向大规模MQTT连接,事件发布吞吐量高的物联网等环境中,基于json的Payload数据保存方案,存在着数据尺寸大并且数据处理速度慢的问题。
技术实现思路
本专利技术的目的在于提供基于FlatBuffers的物联网高效数据传输方法,从而解决现有技术中基于json的Payload数据保存方法存在着数据尺寸大并且数据处理速度慢的问题。为了实现上述目的,本专利技术采用的技术方案如下:基于FlatBuffers的物联网高效数据传输方法,包括以下步骤:S1)发布者publisher获取消息,对消息使用FlatBuffers进行序列化处理;S2)对序列化处理的消息进行传输;S3)MQTT服务器获取序列化处理后的消息,对序列化处理后的消息使用FlatBuffers进行反序列化处理;S4)订阅者Subscriber获取序列化处理后的消息并使用FlatBuffers对序列化处理后的消息进行反序列化处理。FlatBuffers是一个开源的跨平台数据序列化库,可以应用到几乎任何语言(C++,C#,Go,Java,JavaScript,PHP,Python),FlatBuffers把结构化的对象用一个扁平化(Flat)的缓冲区保存,即把内存对象数据保存在一个一维的数组中。这样的设计使得FlatBuffers具有以下的优点:对序列化数据的访问不需要打包和拆包,FlatBuffers将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输,而没有任何解析开销;访问数据时唯一内存需求是缓冲区,不需要额外的内存分配,内存效率高,速度快;仅仅需要自动生成的少量代码和一个单一的头文件依赖,易于集成到现有系统中;能够跨平台使用,而且具有强类型设计,扩展性好。我们在MQTT的协议Payload中使用FlatBuffers的数据协议,可以大大的降低报文中挟带数据的长度,同时大大降低数据的序列化以及反序列化成本。进一步的,步骤S1)中消息包括固定报头(Fixedheader)、可变报头(Variableheader)和报文有效载荷(Payload)。进一步的,对消息中的报文有效载荷使用FlatBuffers进行序列化处理。进一步的,对消息中的报文有效载荷使用FlatBuffers进行反序列化处理。进一步的,序列化处理,包括步骤:S11)定义数据结构,编写schema文件;S12)使用FlatBuffers编译器flatc对schema文件进行编译,获得编译后的文件;S13)使用工具编译FlatBuffers的源代码,获得FlatBuffers的jar包,工具包括maven工具;S14)在MQTT工程中增加FlatBuffers的jar包及编译后的文件;S15)使用FlatBufferBuilder构造一个序列化对象,将MQTT的报文有效载荷放入序列化对象中;S16)对所述序列化对象缓存区中的数据进行保存或发送。进一步的,反序列化处理,包括从所述序列化对象缓存区中读取对应的数据,所述对应的数据包括报文有效载荷。本专利技术的有益效果是:本专利技术利用FlatBuffers数据协议进行序列化处理以及反序列化,能够降低数据报文中挟带数据的长度,同时降低数据的序列化以及反序列化成本。附图说明图1是本专利技术实施例一整体流程图。图2是本专利技术实施例一MQTT通讯协议数据传输示意图。图3是本专利技术实施例一FlatBuffers与json的性能对比图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不用于限定本专利技术。实施例一,如图1和图2所示,基于FlatBuffers的物联网高效数据传输方法,其特征在于,包括以下步骤:S1)发布者publisher获取消息,消息包括固定报头、可变报头和报文有效载荷,对报文有效载荷使用FlatBuffers进行序列化处理,如图2所示,包括步骤:S11)定义数据结构,编写schema文件;S12)使用FlatBuffers编译器flatc对schema文件进行编译,获得编译后的文件;S13)使用工具编译FlatBuffers的源代码,获得FlatBuffers的jar包;S14)在MQTT工程中增加FlatBuffers的jar包及编译后的文件;S15)使用FlatBufferBuilder构造一个序列化对象,将MQTT的报文有本文档来自技高网
...

【技术保护点】
1.基于FlatBuffers的物联网高效数据传输方法,其特征在于,包括以下步骤:/nS1)发布者publisher获取消息,对消息使用FlatBuffers进行序列化处理;/nS2)对序列化处理的消息进行传输;/nS3)MQTT服务器获取序列化处理后的消息,对序列化处理后的消息使用FlatBuffers进行反序列化处理;/nS4)订阅者Subscriber获取序列化处理后的消息并使用FlatBuffers对序列化处理后的消息进行反序列化处理。/n

【技术特征摘要】
1.基于FlatBuffers的物联网高效数据传输方法,其特征在于,包括以下步骤:
S1)发布者publisher获取消息,对消息使用FlatBuffers进行序列化处理;
S2)对序列化处理的消息进行传输;
S3)MQTT服务器获取序列化处理后的消息,对序列化处理后的消息使用FlatBuffers进行反序列化处理;
S4)订阅者Subscriber获取序列化处理后的消息并使用FlatBuffers对序列化处理后的消息进行反序列化处理。


2.根据权利要求1所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,步骤S1)中所述消息包括固定报头、可变报头和报文有效载荷。


3.根据权利要求1或2所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,对消息中的报文有效载荷使用FlatBuffers进行序列化处理。


4.根据权利要求3所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,对消息中的报...

【专利技术属性】
技术研发人员:李爱雄黄雷邵长钰沈寓实赵志宏
申请(专利权)人:北京轻元科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1