基于http和对象序列化的通用数据交换方法

文档序号:8459287阅读:890来源:国知局
基于http和对象序列化的通用数据交换方法
【技术领域】
[0001]本发明涉及一种多个系统通过网络交换数据的方法,具体是一种基于HTTP和对象序列化的通用数据交换方法。
【背景技术】
[0002]数据交换是构建数据仓库系统的重要基础技术。大数据时代背景下,数据的产生和分析处理通常是在不同的地理位置进行的。通过数据交换技术,可以将各处产生的异构数据收集起来加载到数据仓库,成为数据处理的基础。参与数据交换的各方,即数据生产者和数据消费者,所依赖的技术平台和底层系统各不相同。在数据交换各方之间建立一种通用的数据管道具有重要意义。
[0003]本发明提出一种基于HTTP和对象的序列化技术的数据交换方法,交换双方通过协商确定对象的序列化方法和压缩算法。采用本发明,数据生产者和数据消费者都不必考虑的对方对某种特定存储技术或系统平台的依赖,而只需关心数据内容。

【发明内容】

[0004]本发明的目的是提供一种跨系统跨平台的数据交换方法,基于本发明不同的数据处理程序能便捷地交换异构数据。
[0005]本发明通过以下技术方案实现:所述基于HTTP和对象序列化的通用数据交换方法,采用HTTP协议报文传递消息,传输层基于TCP协议,包括以下步骤:
[0006](I)从数据源抽取一条数据记录或数据源推送一条数据记录,此数据记录被称为对象;
[0007](2)根据对象的结构,对象被序列化为数据流,封装在一个HTTP请求报文的消息体中;其中,HTTP请求头Headers中记录数据流元信息,包括序列化方法和对象大小;HTTP请求报文的路径域Path指定数据交换目标处理程序;HTTP请求报文的方法域Method指定数据交换操作方法;
[0008](3)数据交换的目标处理系统接收HTTP请求,根据报文携带的数据元信息,采用对应的反序列化方法,转换对象为本系统兼容格式的数据;
[0009](4)数据处理程序随后对数据进行处理,处理完成后以HTTP响应的方式返回处理结果。
[0010]对象序列化的方法在建立TCP连接时通过一次HTTP请求-响应过程协商;一次数据交换过程中,将参与数据交换的两方中发起TCP连接的一方称为客户端,另一方称为服务端,协商序列化方法的具体过程如下:
[0011](I)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Acc印t字段携带有客户端支持的序列化方法列表,客户端支持的多个序列化方法使用分号隔开;
[0012](2)服务端接收到请求后,读取Accept字段得到客户端支持的序列化方法列表,然后与本系统支持的序列化方法进行比对,选取一个或多个双方支持的序列化方法;
[0013](3)服务端返回一个HTTP响应,响应头中Accept字段携带选取的序列化方法;
[0014](4)客户端收到服务端发回的响应后获知协商的序列化方法,后续与服务端的数据交换过程采用协商的序列化方法中的一个。
[0015]参与数据交换的双方所支持的对象序列化方法至少包括JSON序列化。使得双方至少能协商出一种序列化方法。
[0016]所述服务端和客户端都能够选用特定的压缩算法对序列化数据流进行压缩后再传输,即消息体中存放压缩后的数据。
[0017]所述客户端和服务端协商可选的数据流的压缩算法,协商压缩算法的过程如下:
[0018](I)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Acapt-Encoding字段携带有客户端支持的压缩算法列表,客户端支持的多个压缩算法使用分号隔开;
[0019](2)服务端接收到请求后,读取Acc印t-Encoding字段得到客户端支持的压缩算法列表,然后与本系统支持的压缩算法进行比对,选取一个或多个双方支持的压缩算法;
[0020](3)服务端返回一个HTTP响应,响应头中Acc印t-Encoding字段携带可用的压缩算法;
[0021](4)客户端收到服务端发回的响应后获知协商的压缩算法,后续与服务端的数据交换过程中需要对数据进行压缩时采用协商的压缩算法进行压缩。
[0022]压缩算法的协商和序列化方法的协商是合并在一次请求中实现的。
[0023]数据压缩是可选的,服务端或客户端可以不支持任何数据压缩算法。在一次数据交换过程中,客户端/服务端采用了压缩算法时,HTTP请求/响应报文中使用Content-Encoding字段指明所采用的压缩算法。客户端或服务端根据Content-Encoding字段解压数据再进行反序列化。
[0024]服务端返回处理结果时,HTTP响应报文中采用与HTTP请求报文一致的方法交换数据。
[0025]本发明的优点是:待交换的对象被以一种协商决定的方法序列化,使得对象能在多个数据交换参与者之间无缝流转。一方不需关注另一方的具体存储结构。而基于HTTP的轻量级传输协议使得本交换方法是与平台无关的,而且能被所有支持HTTP协议栈的平台所使用。大量现有支持HTTP协议的设备和程序能够便捷地使用本方明进行数据交换。
【附图说明】
[0026]图1是本发明的数据交换流程图。
【具体实施方式】
[0027]本发明提出了一种基于HTTP和对象序列化的通用数据交换方法,数据从一方交换到另一方时采用HTTP协议报文传递消息,传输层基于TCP协议,如图1所示,它包括以下步骤:
[0028](I)从数据源抽取(Extract) —条数据记录(被动请求交换)或数据源推送(Push) 一条数据记录(主动请求交换)。此数据记录被称为对象。
[0029](2)根据对象的结构,对象被序列化为数据流,封装在一个HTTP请求报文的消息体(Message Body)中。HTTP请求头(Headers)中记录数据流元信息(Metadata),包括序列化方法和对象大小。HTTP请求报文的路径域(Path)指定数据交换目标处理程序。HTTP请求报文的方法域(Method)指定数据交换操作方法。
[0030](3)数据交换的目标处理系统接收HTTP请求,根据报文携带的数据元信息,采用对应的反序列化方法,转换对象为本系统兼容格式的数据。
[0031](4)数据处理程序随后对数据进行处理。处理完成后以HTTP响应的方式返回处理结果。
[0032]上述步骤中,对象序列化采用的方法通过协商确定。序列化后的数据可以被压缩,压缩算法也通过协商确定。一次数据交换过程中,将参与数据交换的两方中发起TCP连接的一方称为客户端,另一方称为服务端。序列化方法协商过程如下:
[0033](I)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Accept字段携带有客户端支持的序列化方法列表。客户端支持的多个序列化方法使用分号隔开。
[0034](2)服务端接收到请求后,读取Acapt字段得到客户端支持的序列化方法列表,然后与本系统支持的序列化方法进行比对,选取一个或多个双方支持的序列化方法。
[0035](3)服务端返回一个HTTP响应,响应头中Accept字段携带选取的序列化方法。
[0036](4)客户端收到服务端发回的响应后获知协商的序列化方法。后续与服务端的数据交换过程采用协商的序列化方法中的某一个。
[0037]协商压缩算法的过程与协商序列化方法的过程类似,具体过程如下:
[0038](I)在建立起TCP连接后,客户端发送一个HTTP请求,请求头中Acc印t-Encoding字段携带有客户端支持的压缩算法列表。客户端支持的多个压缩算法使用分号隔开。
[0039](2)服务端接收到请求后,读取Acc印t-Encoding字段得到客户端支持的压缩算法列表,然后与本系统支持的压缩算法进行比对,选取一个或多个双方支持的压缩算法。
[0040](3)服务端返回一个HTTP响应,响应头中Acc印t-Encoding字段携带可用的压缩算法。
[0041](4)客户端收到服务端发回的响应后获知协商的压缩算法。后续与服务端的数据交换过程中需要对数据进行压缩时采用协商的压缩算法进行压缩。
[0042]序列化方法
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1