CN109005240A - 基于http协议的实时数据订阅方法 - Google Patents
基于http协议的实时数据订阅方法 Download PDFInfo
- Publication number
- CN109005240A CN109005240A CN201810957330.8A CN201810957330A CN109005240A CN 109005240 A CN109005240 A CN 109005240A CN 201810957330 A CN201810957330 A CN 201810957330A CN 109005240 A CN109005240 A CN 109005240A
- Authority
- CN
- China
- Prior art keywords
- data
- service module
- field
- http
- real time
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于HTTP协议的实时数据订阅方法,本发明通过将外部客户端需要访问的设备的ID以链接后缀的形式,通过HTTP协议的GET方法,向物联网平台的反向代理服务模块发起请求,反向代理服务模块通过预先配置的路由策略将所需设备的请求路由至正确的数据服务,数据服务返回一个Response的Transfer‑Encoding类型为chunked的流式数据,第一个数据包为设备当前最新的JSON数据,此后的数据为变化数据,每次设备的数据发生变化,则向Response流中推送变化的JSON数据。本发明具有增强了平台横向扩容能力,支持变化上送,提高了数据响应时效的特点。
Description
技术领域
本发明涉及数据订阅技术领域,尤其是涉及一种基于HTTP协议的实时数据订阅方法。
背景技术
传统的工业实时数据库系统中,虽然提供了高精度及快速响应的数据订阅方式,但多基于原始TCP流式协议,无法直接操作,需要封装较为复杂的接口,并以SDK的形式分发给用户端使用,用户使用时,受SDK使用的语言(例如C语言的SDK,只能以C的形式访问)限制,学习成本和开发成本较高。
传统的工业实时数据库系统中,全部的设备数据通常都存放在单节点中,无法通过扩展主机节点进行横向扩展容量,只能不断增加单机性能以提高容量。
而最近在互联网企业里兴起的物联网解决方案,提供了完备的后端大数据存储分析,且提供了HTTP等更便捷通用的访问接口,但也只提供了HTTP的单次查询形式,如果客户端需要实时展示数据,只能使用定时轮询的方式不断查询设备的当前数据,数据延时较大,而且轮询周期内的多次变化数据无法获得。
发明内容
本发明的发明目的是为了克服现有技术中的客户端需要实时展示数据时,数据延时较大,变化数据无法获得的不足,提供了一种基于HTTP协议的实时数据订阅方法。
为了实现上述目的,本发明采用以下技术方案:
一种基于HTTP协议的实时数据订阅方法,包括网关服务器,若干个数据服务器和若干个客户端,各个客户端均与网关服务器数据连接,各个数据服务器均与网关服务器数据连接;网关服务器包括反向代理服务模块和KV缓存服务模块,反向代理服务模块和KV缓存服务模块用于实现路由策略;每个数据服务器均包括数据服务模块,数据服务模块依附于实时数据库服务,可接受HTTP订阅、查询请求,并上送数据;包括如下步骤:
(1-1)任一客户端向网关服务器的反向代理服务模块发起HTTP 订阅请求帧;
(1-2)反向代理服务模块收到HTTP订阅请求帧后,根据HTTP 订阅请求帧中的设备ID查询KV缓存服务模块,获得设备所在的数据服务器A的地址,并将请求路由转至数据服务器A;
(1-3)数据服务器A的数据服务模块获取与设备ID对应的设备数据并将设备数据传给反向代理服务模块,反向代理服务模块将设备数据打包后,将数据包传给客户端;
数据服务模块监测实时数据库中的所述设备是否发生数据变化,如有变化,则不断上送变化数据,直至客户端关闭HTTP订阅请求。
本发明通过将外部客户端需要访问的设备的ID以链接后缀的形式,通过HTTP协议的GET方法,向物联网平台的反向代理服务模块发起请求,反向代理服务模块通过预先配置的路由策略将所需设备的请求路由至正确的数据服务,数据服务返回一个Response的Transfer-Encoding类型为chunked的流式数据,第一个数据包为设备当前最新的JSON数据,此后的数据为变化数据,每次设备的数据发生变化,则向Response流中推送变化的JSON数据。
本发明主要解决了物联网平台数据访问的标准化(使用标准 HTTP1.1版本协议),并通过反向代理使数据分布式存放,具有方便的可扩容能力。同时解决了以往HTTP协议只能以单次查询、单次返回的短连接,使用流式长连接,媲美了传统工业系统的TCP流式订阅实时数据的方式,提供高精度和快速响应。
本发明使用了跨语言的标准化HTTP访问,数据格式使用JSON封装,把传统工业实时数据系统复杂的、不统一的数据获取方式大大简化,降低了二次开发成本和维护成本。
本发明利用了反向代理技术,将设备ID到实时库之间建立映射关系,将数据订阅、查询请求通过反向代理服务模块路由至不同节点,大大增强了平台横向扩容能力。
本发明还将HTTP轮询访问方式,优化为数据流式上送,支持变化上送,提高了数据响应时效。
本发明使用了跨语言的标准化HTTP访问,数据格式使用JSON封装,把传统工业实时数据系统复杂的、不统一的数据获取方式大大简化,降低了二次开发成本和维护成本。
本发明利用了反向代理技术,将设备ID到实时库之间建立映射关系,将数据订阅、查询请求通过反向代理服务模块路由至不同节点,大大增强了平台横向扩容能力。
本发明还将HTTP轮询访问方式,优化为数据流式上送,支持变化上送,提高了数据响应时效。
作为优选,HTTP订阅请求帧的帧头包括请求方式字段、请求设备ID字段、协议版本字段、连接方式字段和传输内容类型字段。
作为优选,传输内容类型字段中为二进制数据流。
作为优选,所述数据包包括包头和若干个数据帧,包头包括状态字段、内容字段和传输编码类型字段。
作为优选,传输编码类型字段中为二进制数据流。
作为优选,数据帧包括帧长度字段、设备时间戳字段、运行状态字段、管道压力字段、设备版本字段和设备在线字段。
作为优选,客户端收到数据包后,查找每一帧数据的占位符,将占位符前面的子串,转换为整型数字N;
判断占位符后面的子串长度是否大于N,如果子串长度>N,则截取占位符后面的子串中N长度的数据,作为完整的数据包;
如果子串中剩余的数据长度大于N,则放入下一次执行序列,直至子串中没有剩余数据为止。
因此,本发明具有如下有益效果:设备ID到实时库之间建立映射关系,将数据订阅、查询请求通过反向代理服务模块路由至不同节点,大大增强了平台横向扩容能力;本发明还将HTTP轮询访问方式,优化为数据流式上送,支持变化上送,提高了数据响应时效。
附图说明
图1为本发明的一种结构示意图;
图2为本发明的一种流程图。
图中:网关服务器1、数据服务器2、客户端3、反向代理服务模块11、KV缓存服务模块12、数据服务模块21。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所示的实施例是一种基于HTTP协议的实时数据订阅方法,包括网关服务器1,多个数据服务器2和多个客户端3,各个客户端均与网关服务器数据连接,各个数据服务器均与网关服务器数据连接;网关服务器包括反向代理服务模块11和KV缓存服务模块12,反向代理服务模块和KV缓存服务模块用于实现路由策略;每个数据服务器均包括数据服务模块21,数据服务模块依附于实时数据库服务,可接受HTTP订阅、查询请求,并上送数据;
如图2所示,外部客户端向反向代理服务模块发起HTTP订阅请求,HTTP订阅请求帧的帧头概要描述如下:
请求方式 | GET |
请求设备ID | /iotcld/hz/device01 |
协议版本 | 1.1 |
连接方式 | 保持连接 |
传输内容类型 | 二进制数据流 |
其中,最关键的是/iotcld/hz/device01,为设备ID,连接方式为保持连接,表示保持长时间连接等待服务器返回。
反向代理服务模块收到请求后,根据请求协议中的设备ID,向 KV缓存服务模块询问所述设备所在数据服务器地址。如果设备存在,则KV缓存服务模块返回该设备所在数据服务器真实地址,例如返回结果为:192.168.1.101:30001,然后反向代理服务模块将客户端请求路由至该地址所在的数据服务。(注:传统方法中,没有这一层反向代理服务模块,导致客户端请求直连数据服务,数据服务无法平均分摊数据压力)
数据服务器中的数据服务接收到该请求,记录下客户端会话信息,向本地实时数据库获取当前设备数据并返回至反向代理服务模块,反向代理服务模块再返回至客户端。不同于其它策略的是,返回第一次数据格式后,连接不会被关闭,客户端会话信息会保留,期间数据服务监测实时数据库中,该设备是否发生数据变化,如有变化,则不断上送变化数据,直至系统关闭或客户端关闭HTTP订阅请求连接(下面将详细阐述这个过程)。
客户端连接后,将收到数据服务的第一个回复数据包的包头描述如下:
状态 | 订阅成功 |
内容 | 文本 |
传输编码类型 | 二进制流 |
其中编码类型:二进制流格式是回复头的关键设置,类似视频传输,它直接决定了该请求是一个长连接的数据流。(注:其它方法,多为单次请求,单次返回,而不是长连接推送,导致客户端总是轮询数据,会有状态丢失,且延时较大)
紧跟着的第一帧数据是设备最新数据,包含了设备当前JSON数据。如果/iotcld/hz/device01设备包含有2个状态:运行状态和管道压力。则数据结构可以描述为如下格式:
帧长度 | N |
设备时间戳 | 2018-7-29 12:01:00 |
运行状态 | 运行 |
管道压力 | 80 |
设备版本 | 1 |
设备在线 | 在线 |
其中,帧长度N,表示当前数据帧的后续总长度。设备时间戳表示设备最后一次上送数据的时间,即最新变化时间。后面两项是设备实际的状态:运行状态和管道压力,分别是运行和80。设备版本表示该设备数据变化的次数,每次变化,版本自动累加1次。最后的设备在线,表示设备是否连接到物联网平台,设备会定期向平台上送心跳,以告知平台设备是否正常连接。
此后,数据服务保持客户端连接,并检测该设备是否发生数据变化,如有变化,则向客户端推送设备变化数据。变化数据与第一帧设备最新数据类似,格式可描述如下:
可见,数据帧格式与上述第一帧数据相同。但管道压力变化为 78.3,设备时间戳也变成了最新的时间。设备版本自动累加一次。特别的,当帧长度N为0时,表示整个订阅结束,数据服务将关闭连接。
应理解,本实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
Claims (7)
1.一种基于HTTP协议的实时数据订阅方法,其特征是,包括网关服务器(1),若干个数据服务器(2)和若干个客户端(3),各个客户端均与网关服务器数据连接,各个数据服务器均与网关服务器数据连接;网关服务器包括反向代理服务模块(11)和KV缓存服务模块(12),反向代理服务模块和KV缓存服务模块用于实现路由策略;每个数据服务器均包括数据服务模块(21),数据服务模块依附于实时数据库服务,可接受HTTP订阅、查询请求,并上送数据;包括如下步骤:
(1-1)任一客户端向网关服务器的反向代理服务模块发起HTTP订阅请求帧;
(1-2)反向代理服务模块收到HTTP订阅请求帧后,根据HTTP订阅请求帧中的设备ID查询KV缓存服务模块,获得设备所在的数据服务器A的地址,并将请求路由转至数据服务器A;
(1-3)数据服务器A的数据服务模块获取与设备ID对应的设备数据并将设备数据传给反向代理服务模块,反向代理服务模块将设备数据打包后,将数据包传给客户端;
数据服务模块监测实时数据库中的所述设备是否发生数据变化,如有变化,则不断上送变化数据,直至客户端关闭HTTP订阅请求。
2.根据权利要求1所述的基于HTTP协议的实时数据订阅方法,其特征是,HTTP订阅请求帧的帧头包括请求方式字段、请求设备ID字段、协议版本字段、连接方式字段和传输内容类型字段。
3.根据权利要求2所述的基于HTTP协议的实时数据订阅方法,其特征是,传输内容类型字段中为二进制数据流。
4.根据权利要求1所述的基于HTTP协议的实时数据订阅方法,其特征是,所述数据包包括包头和若干个数据帧,包头包括状态字段、内容字段和传输编码类型字段。
5.根据权利要求4所述的基于HTTP协议的实时数据订阅方法,其特征是,传输编码类型字段中为二进制数据流。
6.根据权利要求4所述的基于HTTP协议的实时数据订阅方法,其特征是,数据帧包括帧长度字段、设备时间戳字段、运行状态字段、管道压力字段、设备版本字段和设备在线字段。
7.根据权利要求4或5或6所述的基于HTTP协议的实时数据订阅方法,其特征是,客户端收到数据包后,查找每一帧数据的占位符,将占位符前面的子串,转换为整型数字N;
判断占位符后面的子串长度是否大于N,如果子串长度>N,则截取占位符后面的子串中N长度的数据,作为完整的数据包;
如果子串中剩余的数据长度大于N,则放入下一次执行序列,直至子串中没有剩余数据为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810957330.8A CN109005240B (zh) | 2018-08-21 | 2018-08-21 | 基于http协议的实时数据订阅方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810957330.8A CN109005240B (zh) | 2018-08-21 | 2018-08-21 | 基于http协议的实时数据订阅方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109005240A true CN109005240A (zh) | 2018-12-14 |
CN109005240B CN109005240B (zh) | 2021-05-18 |
Family
ID=64593392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810957330.8A Active CN109005240B (zh) | 2018-08-21 | 2018-08-21 | 基于http协议的实时数据订阅方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109005240B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111193789A (zh) * | 2019-12-25 | 2020-05-22 | 微民保险代理有限公司 | 订阅信息推送方法、装置、计算机设备和可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997854A (zh) * | 2009-08-31 | 2011-03-30 | 阿里巴巴集团控股有限公司 | 一种提供数据服务的处理系统及方法 |
US20120233228A1 (en) * | 2011-03-08 | 2012-09-13 | Rackspace Us, Inc. | Appending to files via server-side chunking and manifest manipulation |
CN102694864A (zh) * | 2012-05-30 | 2012-09-26 | 安科智慧城市技术(中国)有限公司 | 利用http协议实现流媒体功能的方法、流媒体服务器及系统 |
CN104468655A (zh) * | 2013-09-18 | 2015-03-25 | 阿里巴巴集团控股有限公司 | 对反向代理软件进行测试的方法及系统 |
CN104539583A (zh) * | 2014-12-05 | 2015-04-22 | 浙江浙大中控信息技术有限公司 | 一种实时数据库订阅系统及方法 |
CN105991689A (zh) * | 2015-02-03 | 2016-10-05 | 阿里巴巴集团控股有限公司 | Http报文处理方法及系统、http客户端及服务器 |
CN106161196A (zh) * | 2015-04-17 | 2016-11-23 | 阿尔卡特朗讯 | 一种获取http消息状态的方法、设备与系统 |
CN106657394A (zh) * | 2017-02-10 | 2017-05-10 | 山东浪潮商用系统有限公司 | 一种基于物联网大数据的设备信息采集系统及方法 |
-
2018
- 2018-08-21 CN CN201810957330.8A patent/CN109005240B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997854A (zh) * | 2009-08-31 | 2011-03-30 | 阿里巴巴集团控股有限公司 | 一种提供数据服务的处理系统及方法 |
US20120233228A1 (en) * | 2011-03-08 | 2012-09-13 | Rackspace Us, Inc. | Appending to files via server-side chunking and manifest manipulation |
CN102694864A (zh) * | 2012-05-30 | 2012-09-26 | 安科智慧城市技术(中国)有限公司 | 利用http协议实现流媒体功能的方法、流媒体服务器及系统 |
CN104468655A (zh) * | 2013-09-18 | 2015-03-25 | 阿里巴巴集团控股有限公司 | 对反向代理软件进行测试的方法及系统 |
CN104539583A (zh) * | 2014-12-05 | 2015-04-22 | 浙江浙大中控信息技术有限公司 | 一种实时数据库订阅系统及方法 |
CN105991689A (zh) * | 2015-02-03 | 2016-10-05 | 阿里巴巴集团控股有限公司 | Http报文处理方法及系统、http客户端及服务器 |
CN106161196A (zh) * | 2015-04-17 | 2016-11-23 | 阿尔卡特朗讯 | 一种获取http消息状态的方法、设备与系统 |
CN106657394A (zh) * | 2017-02-10 | 2017-05-10 | 山东浪潮商用系统有限公司 | 一种基于物联网大数据的设备信息采集系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111193789A (zh) * | 2019-12-25 | 2020-05-22 | 微民保险代理有限公司 | 订阅信息推送方法、装置、计算机设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109005240B (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110336736B (zh) | 基于mqtt服务器集群实现共享订阅的方法 | |
CN108768826A (zh) | 基于MQTT和Kafka高并发场景下的消息路由方法 | |
CN110300050A (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
US8892768B2 (en) | Load balancing apparatus and load balancing method | |
US8392448B2 (en) | Method and apparatus for transmitting packets in the network | |
US20050216569A1 (en) | Method for implementing content delivery network (cdn) internetworking, respective networks and interface component | |
CN106230896A (zh) | 一种消息推送方法、装置及系统 | |
CN103597471A (zh) | 用于对计算机网络上的数据通信进行缓存的方法和系统 | |
US20060212595A1 (en) | Method and computer-readable medium for associating sequence numbers with data blocks for distribution of data in a peer-to-peer network | |
CN104009938A (zh) | 基于路由层面的长连接的方法和系统 | |
CN114760482B (zh) | 直播回源方法及装置 | |
CN102158518B (zh) | 一种cdn网络中的数据传输方法、网络节点及系统 | |
CN103024085A (zh) | 一种处理p2p节点请求的系统及方法 | |
CN109040017B (zh) | 一种基于mqtt和http的智能客服系统及实现方法 | |
CN109327511A (zh) | 一种基于http协议的数据请求方法和服务器 | |
CN111585786A (zh) | 一种大数据集群免密搭建方法的实现 | |
CN114500633B (zh) | 数据转发方法、相关装置、程序产品及数据传输系统 | |
CN117615043B (zh) | 一种边缘网关上服务间通信方法及系统 | |
CN108289055A (zh) | 一种基于Redis订阅服务的分布式实时聊天系统及方法 | |
CN106330833A (zh) | 基于因特网内容适配协议的通信方法、客户端和服务器 | |
CN1631018B (zh) | 在网络中获取信息的方法和装置 | |
CN114490100B (zh) | 一种消息队列遥测传输负载均衡方法、装置及服务器 | |
CN109005240A (zh) | 基于http协议的实时数据订阅方法 | |
CN107682281A (zh) | 一种sdn交换机和sdn交换机的应用管理方法 | |
CN113630366A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 310053 23-25, 2 building, 352 BINKANG Road, Binjiang District, Hangzhou, Zhejiang. Patentee after: Zhejiang zhongkong Information Industry Co.,Ltd. Address before: 310053 23-25, 2 building, 352 BINKANG Road, Binjiang District, Hangzhou, Zhejiang. Patentee before: ZHEJIANG SUPCON INFORMATION TECHNOLOGY Co.,Ltd. |