CN111131219B - 基于FlatBuffers的物联网高效数据传输方法 - Google Patents

基于FlatBuffers的物联网高效数据传输方法 Download PDF

Info

Publication number
CN111131219B
CN111131219B CN201911317809.6A CN201911317809A CN111131219B CN 111131219 B CN111131219 B CN 111131219B CN 201911317809 A CN201911317809 A CN 201911317809A CN 111131219 B CN111131219 B CN 111131219B
Authority
CN
China
Prior art keywords
flatbuffers
message
serialized
internet
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911317809.6A
Other languages
English (en)
Other versions
CN111131219A (zh
Inventor
李爱雄
黄雷
邵长钰
沈寓实
赵志宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fenomen Array Beijing Technology Co ltd
Original Assignee
Beijing Qingyuan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qingyuan Technology Co ltd filed Critical Beijing Qingyuan Technology Co ltd
Priority to CN201911317809.6A priority Critical patent/CN111131219B/zh
Publication of CN111131219A publication Critical patent/CN111131219A/zh
Application granted granted Critical
Publication of CN111131219B publication Critical patent/CN111131219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

基于FlatBuffers的物联网高效数据传输方法
技术领域
本发明涉及物联网技术领域,尤其涉及基于FlatBuffers的物联网高效数据 传输方法。
背景技术
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议), 是一种基于发布/订阅(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(JavaScript Object Notation)格式来保存消息中的报文有效载荷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)中消息包括固定报头(Fixed header)、可变报头(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的报文有效载 荷放入序列化对象缓存区中;
S16)对所述序列化对象缓存区中的数据进行保存或发送。
S2)对序列化处理的消息进行传输;
S3)MQTT服务器获取序列化处理后的消息,对序列化处理后的消息中的报文 有效载荷使用FlatBuffers进行反序列化处理,包括从序列化对象缓存区中读 取对应的数据,对应的数据包括报文有效载荷。
S4)订阅者Subscriber获取序列化处理后的消息并使用FlatBuffers对序 列化处理后的消息进行反序列化处理,包括从所述序列化对象缓存中读取对应 的数据,对应的数据包括报文有效载荷。
以Java为例,在MQTT的报文有效载荷payload实体中使用FlatBuffers进 行数据序列化和反序列化,按照下面步骤进行:
1)编写schema文件;
2)使用FlatBuffers编译器flatc对schema文件进行编译,生成JavaBean 文件,JavaBean为一种可重用的Java组件,包含属性(Properties)、方法 (Methods)、事件(Events)等特性。
3)使用maven工具编译FlatBuffers的源代码,获得FlatBuffers的jar 包;
4)使用FlatBufferBuilder构造一个序列化对象(ByteBuffer),将MQTT 的报文有效载荷放入序列化对象缓存区中;
5)对序列化对象缓存区中的数据进行保存或发送;
6)读取存有序列化对象的缓冲区,通过代码getRootAsXXX进行反序列化。 XXX代表对象名。
如图3所示,纵坐标表示不同类型的数据,横坐标表示处理速度。Jackson是 一个Java的用来处理JSON格式数据的类库,对于各种不同类型的数据序列 化处理速度方面,FlatBuffers在序列化和反序列化处理过程均快于json,表 明FlatBuffers在序列化和反序列化性能上有很大的提高。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明使用FlatBuffers数据协议进行序列化处理以及反序列化,能够降 低报文中挟带数据的长度,同时降低数据的序列化以及反序列化成本。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术 人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些 改进和润饰也应视本发明的保护范围。

Claims (5)

1.基于FlatBuffers的物联网高效数据传输方法,其特征在于,包括以下步骤:
S1)发布者publisher获取消息,对消息使用FlatBuffers进行序列化处理,包括以下步骤:
S11)定义数据结构,编写schema文件;
S12)使用FlatBuffers编译器flatc对schema文件进行编译,获得编译后的文件;
S13)使用工具编译FlatBuffers的源代码,获得FlatBuffers的jar包,所述工具包括maven工具;
S14)在MQTT工程中增加FlatBuffers的jar包及编译后的文件;
S15)使用FlatBufferBuilder构造一个序列化对象,将MQTT的报文有效载荷放入序列化对象缓存区中;
S16)对所述序列化对象缓存区中的数据进行保存或发送;
S2)对序列化处理的消息进行传输;
S3)MQTT服务器获取序列化处理后的消息,对序列化处理后的消息使用FlatBuffers进行反序列化处理;
S4)订阅者Subscriber获取序列化处理后的消息并使用FlatBuffers对序列化处理后的消息进行反序列化处理。
2.根据权利要求1所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,步骤S1)中所述消息包括固定报头、可变报头和报文有效载荷。
3.根据权利要求1或2所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,对消息中的报文有效载荷使用FlatBuffers进行序列化处理。
4.根据权利要求3所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,对消息中的报文有效载荷使用FlatBuffers进行反序列化处理。
5.根据权利要求1所述的基于FlatBuffers的物联网高效数据传输方法,其特征在于,反序列化处理,包括从所述序列化对象缓存区中读取对应的数据,所述对应的数据包括报文有效载荷。
CN201911317809.6A 2019-12-19 2019-12-19 基于FlatBuffers的物联网高效数据传输方法 Active CN111131219B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911317809.6A CN111131219B (zh) 2019-12-19 2019-12-19 基于FlatBuffers的物联网高效数据传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911317809.6A CN111131219B (zh) 2019-12-19 2019-12-19 基于FlatBuffers的物联网高效数据传输方法

Publications (2)

Publication Number Publication Date
CN111131219A CN111131219A (zh) 2020-05-08
CN111131219B true CN111131219B (zh) 2022-04-05

Family

ID=70500107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911317809.6A Active CN111131219B (zh) 2019-12-19 2019-12-19 基于FlatBuffers的物联网高效数据传输方法

Country Status (1)

Country Link
CN (1) CN111131219B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984679B (zh) * 2020-07-02 2021-06-04 中科驭数(北京)科技有限公司 硬件加速数据库的访问方法、装置、主机、系统及介质
CN111787122A (zh) * 2020-07-22 2020-10-16 浙江理工大学 一种用于农业物联网无线组网的通信系统及方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970737A (zh) * 2013-01-24 2014-08-06 腾讯科技(深圳)有限公司 一种数据构造方法和装置
CN106713423A (zh) * 2016-12-06 2017-05-24 上海斐讯数据通信技术有限公司 一种云接入点控制器中分布式数据的处理方法及装置
CN107294778A (zh) * 2017-06-23 2017-10-24 济南浪潮高新科技投资发展有限公司 一种基于云物联平台实现工业设备采集的方法
CN108243259A (zh) * 2018-02-08 2018-07-03 北京车和家信息技术有限公司 车联网数据的传输方法、装置及系统
CN108809972A (zh) * 2018-06-01 2018-11-13 南京邮电大学 一种基于开源生态系统的物联网综合实验及应用开发平台及架构
CN109032699A (zh) * 2018-07-23 2018-12-18 北京轻元科技有限公司 一种修改应用程序环境变量的方法和终端
CN109257337A (zh) * 2018-08-28 2019-01-22 科大国创软件股份有限公司 物联网设备协议转换方法及基于该方法的灯杆运营平台
CN105407024B (zh) * 2015-09-23 2019-04-09 中国电子科技集团公司第二十九研究所 一种基于发布订阅通信机制的异构数据互通方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040076166A1 (en) * 2002-10-21 2004-04-22 Patenaude Jean-Marc Guy Multi-service packet network interface
US9930103B2 (en) * 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10812582B2 (en) * 2016-03-10 2020-10-20 Vmware, Inc. Management of applications across nodes using exo-clones

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970737A (zh) * 2013-01-24 2014-08-06 腾讯科技(深圳)有限公司 一种数据构造方法和装置
CN105407024B (zh) * 2015-09-23 2019-04-09 中国电子科技集团公司第二十九研究所 一种基于发布订阅通信机制的异构数据互通方法及装置
CN106713423A (zh) * 2016-12-06 2017-05-24 上海斐讯数据通信技术有限公司 一种云接入点控制器中分布式数据的处理方法及装置
CN107294778A (zh) * 2017-06-23 2017-10-24 济南浪潮高新科技投资发展有限公司 一种基于云物联平台实现工业设备采集的方法
CN108243259A (zh) * 2018-02-08 2018-07-03 北京车和家信息技术有限公司 车联网数据的传输方法、装置及系统
CN108809972A (zh) * 2018-06-01 2018-11-13 南京邮电大学 一种基于开源生态系统的物联网综合实验及应用开发平台及架构
CN109032699A (zh) * 2018-07-23 2018-12-18 北京轻元科技有限公司 一种修改应用程序环境变量的方法和终端
CN109257337A (zh) * 2018-08-28 2019-01-22 科大国创软件股份有限公司 物联网设备协议转换方法及基于该方法的灯杆运营平台

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Design and Implementation of Push Notification System Based on the MQTT Protocol;Konglong Tang;《International Conference on Information Science and Computer Applications (ISCA 2013)》;20130930;全文 *
FlatBuffers入门简介;泽_渊;《简书https://www.jianshu.com/p/8df23cd182ec》;20170420;正文第1页第2段-第5页倒数第1段 *
基于MQTT的安全通信服务器的研究与实现;钱玉磊;《CNKI硕士论文全文数据库》;20151231;摘要、正文第10-14页 *
钱玉磊.基于MQTT的安全通信服务器的研究与实现.《CNKI硕士论文全文数据库》.2015,摘要、正文第10-14页. *

Also Published As

Publication number Publication date
CN111131219A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
CN110943911B (zh) 基于protobuf的物联网高效数据传输方法
CN110022289B (zh) 数据传输方法、装置及系统
CN110401592B (zh) 一种消息通道中数据流转的方法及设备
US7519713B2 (en) Mapping between object oriented and service oriented representations of a distributed application
KR101213873B1 (ko) 유형화 애플리케이션 데이터를 송신하는 방법, 유형화 애플리케이션 데이터를 수신하는 방법, 및 이들 방법을 구현하는 컴퓨터 실행가능 명령어가 저장되어 있는 컴퓨터 판독가능 기록 매체
FI125393B (en) Procedure, device and system for use in a web service
CN111131219B (zh) 基于FlatBuffers的物联网高效数据传输方法
US11108890B2 (en) Management client and device monitoring
KR20190057818A (ko) 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법
CN108769017B (zh) 一种数据通信方法及装置
US20090276451A1 (en) Method and apparatus for processing messages
CN102810069A (zh) 一种java对象的请求和响应方法、装置、系统和终端
CN110086759B (zh) 一种用于在异构系统之间实现消息传递的方法和装置
CN104468704B (zh) 支持内容中心网络的Web服务器系统及处理方法
US20120066291A1 (en) Remote method invocation tunneling over hypertext transfer protocol
CN112817539A (zh) 一种工业数据存储方法、系统、电子设备及存储介质
CN110247926A (zh) 一种交互方法和系统
EP2139193A1 (en) A method of performing data mediation, and an associated computer program product, data mediation device and information system
Pradana et al. Flatbuffers implementation on mqtt publish/subscribe communication as data delivery format
CN1929463A (zh) 对象请求代理、用于提供资源高效传送的方法和装置
WO2023246309A1 (zh) 数据处理方法、装置及系统
CN108614820B (zh) 实现流式源数据解析的方法和装置
CN102438048B (zh) 一种互联网中远程服务调用的方法和系统
CN112769741B (zh) 一种消息通信方法及电子设备
CN113992644A (zh) 一种基于无服务技术的物联网关系统及其数据处理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20231121

Address after: 5089, 5th Floor, Building 2, China Agricultural University International Entrepreneurship Park, No. 10 Tianxiu Road, Haidian District, Beijing, 100193

Patentee after: Fenomen array (Beijing) Technology Co.,Ltd.

Address before: 100000 a5-036, maker Plaza, 338 East Street, Huilongguan town, Changping District, Beijing

Patentee before: BEIJING QINGYUAN TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right