CN110381093B - 数据协议转换的方法、装置、数据传输的系统及电子设备 - Google Patents
数据协议转换的方法、装置、数据传输的系统及电子设备 Download PDFInfo
- Publication number
- CN110381093B CN110381093B CN201910828702.1A CN201910828702A CN110381093B CN 110381093 B CN110381093 B CN 110381093B CN 201910828702 A CN201910828702 A CN 201910828702A CN 110381093 B CN110381093 B CN 110381093B
- Authority
- CN
- China
- Prior art keywords
- data
- protocol
- ftp
- sftp
- network
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本申请提供了一种数据传输的方法、装置、电子设备及计算机可读存储介质,涉及通信领域。该方法包括:在本发明实施例中,当第一网络接收到第二网络发送的、采用第一网络协议封装的第一数据获取请求时,将第一数据获取请求转换为,采用第二网络协议封装的第二数据获取请求,然后获取与第二数据获取请求对应的源数据,并采用第一网络协议对源数据进行封装,生成第一数据,再将第一数据发送至第二网络,以使得第二网络将第一数据,转换为采用第二网络协议进行封装的第二数据。本发明实施例减少了工作量,也提高了第一网络、第二网络的适应性。
Description
技术领域
本申请涉及通信技术领域,具体而言,本申请涉及一种数据协议转换的方法、装置、数据传输的系统、电子设备及计算机可读存储介质。
背景技术
在其他网络和数据保密性要求高的专网之间,常使用物理隔离网闸来实现安全的数据传输。为保证数据传输的安全性,用物理隔离网闸进行数据传输时,需要摆脱对因为存在漏洞而易受攻击的TCP/IP协议的依赖,这就需要将从其他网络传输到专网中的数据先转换为FTP/SFTP协议的数据,由网闸将FTP/SFTP协议的数据从其他网络摆渡到专网,再在专网中将FTP/SFTP协议的数据转换为所需格式。同样,从专网传输到其他网络的数据也需要先转换为FTP/SFTP协议的数据,再由网闸将FTP/SFTP协议的数据从专网摆渡到其他网络,再在其他网络中将FTP/SFTP协议的数据转换为所需格式。对于不同协议的数据,与网闸进行交互时需考虑协议差异,操作繁琐,因此急需一种通用的协议转换组件,向该协议转换组件输入一种源协议的数据后,协议转换组件即能把源协议的数据转为目标协议的数据输出。如此可使数据在通过网闸进行传输时,不用关心与网闸交互时因协议差异带来的细节问题。
发明内容
考虑到上述问题而提出了本申请。本申请提供了一种数据协议转换的方法、装置、数据传输的系统、电子设备及计算机可读存储介质。
第一方面,本申请提供一种数据协议转换的方法,包括:
获取第一协议的第一数据;
对所述第一数据进行解析,得到第一中间数据;
将所述第一中间数据封装成第一model对象;
将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据。
示例性的,所述第一协议为http协议,
所述获取第一协议的第一数据包括,接收第一协议的第一数据;
或,
所述第一协议为kafka协议,
所述获取第一协议的第一数据包括:通过消费kafka中的数据,从而从kafka中获取第一协议的第一数据;
示例性的,所述第一协议为http协议,
所述对所述第一数据进行解析包括,使用netty提供的工具对所述第一数据进行解析。
或,所述第一协议为kafka协议,
所述对所述第一数据进行解析包括,使用spring-kafka框架提供的工具对所述第一数据进行解析。
示例性的,所述将所述第一中间数据封装成model对象包括,将所述第一中间数据编码为二进制数据后封装成model对象。
示例性的,所述方法还包括:
获取第二FTP/SFTP协议的数据;
将所述第二FTP/SFTP协议的数据反序列化为第二model对象;
将所述第二model对象解封装,得到第二中间数据;
对所述第二中间数据进行解析,得到第二协议的第二数据。
示例性的,所述第二协议为http协议,
所述对所述第二中间数据进行解析包括,使用netty提供的工具对所述第二中间数据进行解析。
或,所述第二协议为kafka协议,
所述对所述第二中间数据进行解析包括,使用spring-kafka框架提供的工具对所述第二中间数据进行解析。
第二方面,本申请提供一种数据传输的系统,包括第一网络、第二网络,以及连接第一网络和第二网络、用于在第一网络和第二网络之间进行数据传输的网闸;所述第一网络包括第一业务系统和第一数据协议转换组件,所述第二网络包括第二业务系统和第二数据协议转换组件;
所述第一业务系统用于使所述第一数据协议转换组件获取第三协议的第三数据;
所述第一数据协议转换组件用于使用第一方面所述的方法将所述第三数据转换为第三FTP/SFTP协议的数据,并将所述第三FTP/SFTP协议的数据存储至位于所述第一网络中的第一FTP/SFTP文件目录;
所述网闸用于将所述第三FTP/SFTP协议的数据从所述第一FTP/SFTP文件目录摆渡至位于第二网络中的第二FTP/SFTP目录;
所述第二数据协议转换组件用于从所述第二FTP/SFTP文件目录获取到所述第三FTP/SFTP协议的数据;
所述第二数据协议转换组件还用于使用第一方面所述的方法将所述第三FTP/SFTP协议的数据转换为第四协议的第四数据;
所述第二业务系统用于获取所述第四协议的第四数据。
示例性的,所述第二业务系统还用于响应于获取到的所述第四协议的第四数据,使第二数据协议转换组件获取第五协议的第五数据;
所述第二数据协议转换组件还用于使用第一方面所述的方法将所述第五协议的第五数据转换为第四FTP/SFTP协议的数据,并将所述第四FTP/SFTP协议的数据存储至所述第二FTP/SFTP文件目录;
所述网闸还用于所述第四FTP/SFTP协议的数据从所述第二FTP/SFTP文件目录摆渡至位于第一网络中的第一FTP/SFTP目录;
所述第一数据协议转换组件用于从所述第一FTP/SFTP文件目录获取到第四FTP/SFTP协议的数据;
所述第一数据协议转换组件还用于使用第一方面所述的方法将所述第四FTP/SFTP协议的数据转换为第六协议的第六数据;
所述第一业务系统还用于获取所述第六协议的第六数据。
第三方面,本申请提供一种数据协议转换的装置,包括:
获取模块,用于获取第一协议的第一数据;
解析模块,用于对所述第一数据进行解析,得到第一中间数据;
封装模块,用于将所述第一中间数据封装成第一model对象;
序列化模块,用于将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据。
第四方面,本申请提供一种电子设备,其包括:
处理器、存储器和总线;
所述总线,用于连接所述处理器和所述存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,执行上述第一方面所述的数据传输的方法。
第五方面,本申请提供一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述第一方面所述的数据传输的方法。
根据本发明实施例的数据协议转换的方法、装置、数据传输的系统、电子设备及计算机可读存储介质,对于任意源协议的数据,通过解析、封装得到与第一协议无关、可被其他协议处理的model对象,再将model对象序列化为二进制对象,得到可通过网闸传输的第一FTP/SFTP协议的数据。对于从网闸获取的FTP/SFTP协议的数据,通过反序列化得到model对象,再将model对象解封装、解析成所需的所需目标协议的数据,这样,一方面,使用一套通用的方法即可使源协议的数据转换为可跨网闸传输的数据,而无需考虑不同源协议与网闸交互时由协议不同带来的差异。另一方面,本发明实施例还可以将跨网闸传输后的数据转换为目标协议的数据,而无需考虑不同目标协议与网闸交互时由协议不同带来的差异,也即可以将源协议的数据跨过网闸并转换为目标协议的数据,使开发人员可以完全屏蔽网闸这个硬件,更专注与业务开发,无需关心网闸带来的问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请一个实施例提供的一种数据协议转换方法的流程示意图;
图2为本申请另一实施例提供的一种数据协议转换方法的流程示意图;
图3为本申请一个实施例提供的一种数据传输系统的工作流程示意图;
图4为本申请另一个实施例提供的一种数据传输系统的工作流程示意图;
图5为本申请又一实施例提供的一种数据协议转换的装置的示意图;
图6为用于实现根据本发明实施例的数据协议转换方法和数据协议转换装置的示例电子设备的示意性框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请提供的数据协议转换的方法、装置、数据传输的系统、电子设备和计算机可读存储介质,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
作为一种可能的实施方式,本申请实施例中的cmd用来对数据进行处理,cmdListener用来监听cmd进行特有逻辑的处理。队列是用来缓存数据的阻塞式队列。
在一个实施例中提供了一种数据协议转换的方法,本实施例的方法可以在专网执行,也可以在需要与专网进行数据传输的其他网络执行,用于将来自网络中业务系统的源协议的数据转换为可通过网闸传输的FTP/SFTP协议的数据,网闸采用FTP(File TransferProtocol,文件传输协议)或SFTP(Secure File Transfer Protocol,文件加密传输协议)协议与网络进行通信。
如图1所示,该方法包括:
步骤S101,获取第一协议的第一数据。
在本步骤中,数据协议转换组件从第一业务系统获取第一协议的第一数据。第一协议的数据可以是请求数据,也可以是图片、音视频等数据。在一例中,第一协议可以为http协议或kafka协议。当第一协议为http协议时,第一业务系统发送第一数据,数据协议转换组件通过接收第一数据来获取第一数据。作为一个具体的实施方式,第一业务系统为客户端,第一数据为请求数据,客户端发送请求数据后,数据协议转换组件中的netty作为服务端接收客户端的请求数据。当第一协议为kafka协议时,第一业务系统生产数据到kafka中,数据协议转换组件通过消费kafka中的数据,从而从kafka中获取第一协议的第一数据。作为一个具体的实施方式,第一业务系统为抓拍图解析程序,其作为数据生产将解析的数据生产到kafka中,数据协议转换组件作为消费者从kafka中获取数据。
步骤S102,对所述第一数据进行解析,得到第一中间数据。
在一例中,本步骤用和第一协议相匹配的工具对第一数据解析,得到的第一数据为编码后的明文数据。
步骤S103,将所述第一中间数据封装成第一model对象。
在一例中,本步骤对步骤S102得到的第一中间数据中加入数据的唯一标识和单向/双向处理标识,再封装成第一model对象。如此,第一model对象中包含待传输的数据和用来描述待传输数据的数据(即数据的唯一标识和单向/双向处理标识)。
通过解析、封装步骤,第一model对象已经被剥离为与源协议数据没有任何关系,可以被其他协议处理的内建对象。如此,即可在后续步骤将其转换为其他协议的数据。解析、封装完毕的第一model对象可放入第一队列。
第一协议为http协议时,作为一个具体的实施方式,数据协议转换组件中的netty作为服务端接收到客户端的请求数据后,netty的handler调用netty的cmd/cmdListener层的obtain()对请求数据进行处理。Netty的cmd/cmdListener的obtain()通过对请求数据的解析(即使用netty提供的工具对所述第一数据进行解析)、封装将请求数据转换为第一model对象,然后作为生产者将第一model对象放到第一队列中。
第一协议为kafka协议时,作为一个具体的实施方式,数据协议转换组件每消费到一个数据,就会调用kafka的cmd/listener通过对数据的解析(例如,使用spring-kafka框架提供的工具对所述第一数据进行解析)、封装将数据转换为成第一model对象,然后作为生产者将第一model对象放到第一队列中。
步骤S104,将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据。
本步骤将第一model对象转换为FTP/SFTP协议的数据,以便网闸将FTP/SFTP协议的数据摆渡至需要与当前网络进行数据传输的网络。
作为一个具体的实施方式,数据协议转换组件的loop层会作为消费者不断的从第一队列中获取第一model对象,每获取到一个第一model对象,会开启一个线程调用FTP的cmd/cmdListener的send()对第一model对象进行处理。FTP的cmd/cmdListener.send()将第一Model对象序列化为二进制对象,并放到位于当前网络中的第一FTP/SFTP文件目录中。
本实施例的数据协议转换方法可以在专网执行,也可以在需要与专网进行数据传输的其他网络执行。当在专网执行时,所述第一FTP/SFTP文件目录位于专网中,步骤S104将第一model对象转换为FTP/SFTP协议的数据,以便网闸将FTP/SFTP协议的数据摆渡至与专网进行数据传输的其他网络。当在与专网进行数据传输的其他网络执行时,所述第一FTP/SFTP文件目录位于与专网进行数据传输的其他网络中,步骤S104将第一model对象转换为FTP/SFTP协议的数据,以便网闸将FTP/SFTP协议的数据摆渡至专网。本实施例对于任意源协议的数据,通过解析、封装得到与源协议无关、可被其他协议处理的model对象,再将model对象序列化为二进制对象,得到可通过网闸传输的FTP/SFTP协议的数据,使用一套通用的方法即可使源协议的数据转换为可跨网闸传输的数据,而无需考虑不同源协议与网闸交互时由协议不同带来的差异。
在本发明实施例中,步骤S103包括,将所述第一中间数据编码为二进制数据,再封装成第一model对象。
这样,在后续将FTP/SFTP协议的数据转换为目标协议的数据的反序列化步骤中,可以直接使用反序列化得到的model对象,而无需在反序列化之后对得到的model对象再进行编码解码。
在一例中,本步骤对步骤S102得到的第一中间数据中加入数据的唯一标识和单向/双向处理标识,之后将加入了数据的唯一标识和单向/双向处理标识的第一中间数据编码为二进制数据,再封装成第一model对象。
在本发明另一实施例中,提供了一种数据协议转换的方法,本实施例的数据传输方法可以在专网执行,也可以在需要与专网进行数据传输的其他网络执行,用于将通过网闸获取到的FTP/SFTP协议的数据转换为网络中业务系统能够处理的目标协议的数据。如图2所示,该方法包括:
步骤S105:获取第二FTP/SFTP协议的数据。
本步骤中,数据协议转换组件与该数据协议转换组件同处一个网络中的FTP/SFTP目录中获取FTP/SFTP协议的数据。第二FTP/SFTP协议的数据和第一FTP/SFTP协议的数据可以相同,也可以不同。
在一个具体的实施方式中,FTP的Task会通过FTP的cmd/cmdListener.list()不断的轮询FTP指定的目录,当轮询到一个文件后,会开启线程调用FTP的cmd/cmdListener.obtain()获取第二FTP/SFTP协议的数据。
步骤S106:将所述第二FTP/SFTP协议的数据反序列化为第二model对象。
将model对象序列化为二进制对象,使model对象得以通过FTP协议进行传输。通过FTP协议传输完毕后,需要将FTP/SFTP协议的数据反序列化为model对象,再转换为业务系统可处理的目标协议的数据。
在一个具体的实施方式中,FTP的cmd/cmdListener.obtain()获取文件后,会对文件中的数据反序列化为第二model对象。然后作为生产者将数据放到第二队列中。
步骤S107:将所述第二model对象解封装,得到第二中间数据。
步骤S108:对所述第二中间数据进行解析,得到第二协议的第二数据。
在一例中,第二协议可以是http协议或kafka协议。第二协议和第一协议可以相同,也可以不同。
当第二协议为http协议时,在一个具体的实施方式中,数据协议转换组件的loop层会作为消费者不断的从第二队列中消费来获取第二model对象,每获取到一个第二model对象,会开启一个线程调用netty的cmd/listener对第二model对象进行处理,第二model对象在netty的cmd/listener.send()中,被转为第二协议的响应对象,通过netty响应给业务系统。
当第二协议为kafka协议时,在一个具体的实施方式中,数据协议转换组件的loop层数据协议转换组件的loop层会作为消费者不断的从第二队列中消费来获取第二model对象,每获取到一个第二model对象,会开启一个线程调用kafka的cmd/listener对第二model对象进行处理,第二model对象在kafka的cmd/listener中转为kafka协议的数据,放到kafka中,以供业务系统消费。
本实施例的数据协议转换方法可以在专网执行,也可以在需要与专网进行数据传输的其他网络执行。当在专网执行时,步骤S105获取网闸从与专网进行数据传输的其他网络中摆渡到专网的第二FTP/SFTP协议的数据,数据协议转换组件将第二FTP/SFTP协议的数据转换为目标协议的数据后响应给专网中的业务系统;当在与专网进行数据传输的其他网络执行时,步骤S105获取网闸从专网摆渡与专网进行数据传输的其他网络的第二FTP/SFTP协议的数据,数据协议转换组件将第二FTP/SFTP协议的数据转换为目标协议的数据后响应给与专网进行数据传输的其他网络。本发明实施例可以将跨网闸传输后的数据通过反序列化得到与协议无关的model对象,再将model对象通过解封装、解析转换为目标协议的数据,使用一套通用的方法即可将跨网闸传输后的数据转换为目标协议的数据,而无需考虑不同目标协议与网闸交互时由协议不同带来的差异。
在本发明另一实施例中,提供了一种数据协议转换的方法,本实施例的方法可以在专网执行,也可以在需要与专网进行数据传输的其他网络执行,用于将来自网络中业务系统的源协议的数据转换为可通过网闸传输的FTP/SFTP协议的数据,还用于将通过网闸获取到的FTP/SFTP协议的数据转换为网络中业务系统能够处理的目标协议的数据。本实施例的数据传输步骤包括步骤S101-S108。S101-S108同前文所述,在此不再赘述。本实施例一方面,使用一套通用的方法即可使源协议的数据转换为可跨网闸传输的数据,而无需考虑不同源协议与网闸交互时由协议不同带来的差异;另一方面,还可以将跨网闸传输后的数据转换为目标协议的数据,而无需考虑不同目标协议与网闸交互时由协议不同带来的差异。也即,可以将源协议的数据跨过网闸并转换为目标协议的数据,使开发人员可以完全屏蔽网闸这个硬件,更专注与业务开发,无需关心网闸带来的问题。
在本发明另一实施例中,提供一种数据传输系统,包括第一网络、第二网络,以及连接第一网络和第二网络、用于在第一网络和第二网络之间进行数据传输的网闸;所述第一网络包括第一业务系统和第一数据协议转换组件,所述第二网络包括第二业务系统和第二数据协议转换组件。
所述第一业务系统用于使所述第一数据协议转换组件获取第三协议的第三数据;
所述第一数据协议转换组件用于使用上述用于将源协议的数据转换为FTP/SFTP协议的数据的实施例中的方法将所述第三数据转换为第三FTP/SFTP协议的数据,并将所述第三FTP/SFTP协议的数据存储至位于第一网络的第一FTP/SFTP文件目录;
所述网闸用于使所述第二数据协议转换组件从所述第一FTP文件目录获取到所述第三FTP/SFTP协议的数据;
所述第二数据协议转换组件用于使用上述用于将FTP/SFTP协议的数据转换为目标协议的数据的实施例中的方法将所述第三FTP/SFTP协议的数据转换为第四协议的第四数据;
所述第二业务系统用于获取所述第四协议的第四数据。
下面结合图3,以第一网络为与专网进行数据传输的其他网络、第二网络为专网、第三协议和第四协议均为http协议、第一网络向第二网络发送请求数据为例对本实施例的数据传输系统进行说明。
在第一网络中,进行http到FTP的数据协议转换。
第一业务系统为客户端中安装的业务系统,客户端发送http协议的请求数据(第三数据),第一数据协议转换组件中的netty作为服务端接收请求数据,接收到请求数据后,netty的handler调用netty的cmd/cmdListener层的obtain()对请求数据进行处理,Netty的cmd/cmdListener的obtain()将请求数据进行解析、封装,得到第三model对象,然后作为生产者将第三model对象放到第三队列中。第一数据协议转换组件中的loop层作为消费者不断的从第三队列中消费来获取第三model对象,每获取到一个第三model对象便会开启一个线程调用FTP的cmd/cmdListener的send()对获取到的第三model对象进行处理。第三Model对象在FTP的cmd/cmdListener.send()中被序列化为二进制对象,得到第三FTP/SFTP协议的数据,放到位于第一网络中的第一FTP文件目录中。
网闸将第一FTP文件目录中的第三FTP/SFTP协议的数据摆渡至位于第二网络中的第二FTP文件目录。
在第二网络中,进行FTP到http的数据协议转换。
第二数据协议转换组件的FTPtask通过调用FTP的cmd/listener.list()不断的轮询第二FTP文件目录,当轮询到一个文件后,会开启一个线程,通过FTP的cmd/listener.obtain()获取第三FTP/SFTP协议的数据。
FTP的cmd/listener.obtain()获取文件后,会对文件数据进行反序列化为第四model对象,然后作为生产者将第四model对象放到第四队列中。
第二数据协议转换组件Loop层作为消费者,不断的消费第四队列中的数据,当获取到一个第四model对象后,会开启一个线程,调用netty的cmd/listener.send()对第四model对象反序列化、解封装、解析处理,使第四Model对象在netty的cmd/listener.send()中被转为http协议的请求数据(第四数据),对第二业务系统进行请求,使所述第二业务系统获取请求数据。
本实施例的数据传输系统,通过在网闸两侧的网络中都设置数据协议转换组件,能够将源协议的数据转换为FTP/SFTP协议的数据,跨过网闸后再由FTP/SFTP协议的数据转换为目标协议的数据,使开发人员可以完全屏蔽网闸这个硬件,更专注与业务开发,无需关心网闸带来的问题。
在本申请另一实施例中,所述的数据传输的系统还包括,
所述第二业务系统还用于响应于获取到的所述第四协议的第四数据,使第二数据协议转换组件获取第五协议的第五数据;
所述第二数据协议转换组件还用于使用用于将源协议的数据转换为FTP/SFTP协议的数据的实施例中的方法将所述第五协议的第五数据转换为第四FTP/SFTP协议的数据,并将所述第四FTP/SFTP协议的数据存储至第二FTP文件目录;所述第二FTP文件目录位于第二网络;
所述网闸还用于使所述第一数据协议转换组件从所述第二FTP文件目录获取到第四FTP/SFTP协议的数据;
所述第一数据协议转换组件还用于使用上述用于将FTP/SFTP协议的数据转换为目标协议的数据的实施例中的方法将所述第四FTP/SFTP协议的数据转换为第六协议的第六数据;
所述第一业务系统还用于获取所述第六协议的第六数据。
续举前例,仍然参考图3,第二网络在接收到第一网络向第二网络发送请求数据后,响应于该请求数据,向第一网络发送响应数据。
在第二网络中,进行http到FTP的数据协议转换。
当第二业务系统接收到第四数据后,会对第四数据进行响应,并向第二数据协议转换组件发送响应数据(第五数据)。第二数据协议转换组件接收到第五数据后,第二数据协议转换组件中netty的handler会调用netty的cmd/listener.obtain()将响应数据转为第五model对象,然后作为生产者将数据放到第五队列中。第二数据协议转换组件的Loop层不断的消费第五队列中的第五model对象,当获取到一个第五model对象后,会开启一个线程调用FTP的cmd/listener.send(),第五Model对象会被FTP的cmd/listener.send()序列化,得到第四FTP/SFTP协议的数据放到位于第二网络的第二FTP文件目录中。
网闸将第二FTP文件目录中的第四FTP/SFTP协议的数据摆渡至位于第一网络的第一FTP文件目录。
在第一网络中,进行FTP到http的数据协议转换。
第一数据协议转换组件的FTP的Task通过FTP的cmd/cmdListener.list()不断的轮询第一FTP目录,当轮询到一个文件后,开启线程调用FTP的cmd/cmdListener.obtain()获取第四FTP/SFTP协议的数据。
FTP的cmd/cmdListener.obtain()获取第四FTP/SFTP协议的数据后,将第四FTP/SFTP协议的数据反序列化为第六model对象,然后作为生产者将第六model对象放到第六队列中。
第一数据协议转换组件的loop层作为消费者不断的从第六队列中消费以获取第六model对象,每获取到一个第六model对象,开启一个线程调用netty的cmd/listener对第六model对象进行反序列化、解封装、解析处理,使第六Model对象在netty的cmd/listener.send()中被转为http协议的响应数据(第六数据),通过netty响应给第一业务系统。
本实施例的数据传输系统,通过在网闸两侧的网络中都设置数据协议转换组件,能够将源协议的数据转换为FTP/SFTP协议的数据,跨过网闸后再由FTP/SFTP协议的数据转换为目标协议的数据,使开发人员可以完全屏蔽网闸这个硬件,更专注与业务开发,无需关心网闸带来的问题。
下面结合图4,以第一网络为与专网进行数据传输的其他网络、第二网络为专网、第三协议和第四协议均为kafka协议、第一网络向第二网络发送抓拍图解析程序解析到的抓拍数据为例对本实施例的数据传输系统进行说明。
在第一网络中,进行kafka到FTP的数据协议转换。
在第一网络中,数据生产者,例如抓拍图解析程序,将解析的数据放到kafka中。第一数据协议转换组件作为消费者从kafka中获取数据。第一数据协议转换组件的Consumertask会不断的消费kafka中的数据,每当消费到一个数据会调用kafka的cmd/listener将kakfa中的数据解析、封装成第三model对象,放到第三队列中。第一数据协议转换组件的loop层作为第三队列的消费者,不断的遍历消费第三队列中的第三model对象,当获取到一个第三model对象后,会开启一个线程调用FTP的cmd/listener,将第三model对象序列化后放到位于第一网络的第一FTP目录中。
网闸将第一FTP文件目录中的第三FTP/SFTP协议的数据摆渡至位于第二网络的第二FTP文件目录。
在第二网络中,进行FTP到kafka的数据协议转换。
在第二网络中,第二数据协议转换组件的FTP task会不断的轮询获取第二FTP目录中第三FTP/SFTP协议的数据,当获取到一个数据后,会开启一个线程,调用ftp的cmd/listener,将数据反序列化为第四model对象,放到第四队列中。第二数据协议转换组件的loop层不断的轮询获取第四队列中的第四model对象,获取到一个第四model对象后,会开启一个线程调用kafka的cmd/listener,将第四model对象解封装、解析为kafka协议的数据,放到kafka中,以供其他服务消费。
图5为本申请又一实施例提供的一种数据协议转换的装置50的结构示意图,如图5所示,本实施例的装置可以包括:
获取模块501,用于获取第一协议的第一数据;
解析模块502,用于对所述第一数据进行解析,得到第一中间数据;
封装模块503,用于将所述第一中间数据封装成第一model对象;
序列化模块504,用于将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据。
在一个实施例中,一种数据协议转换的装置包括:
第二获取模块,用于获取第二FTP/SFTP协议的数据;
反序列化模块,用于将所述第二FTP/SFTP协议的数据反序列化为第二model对象;
解封装模块,用于将所述第二model对象解封装,得到第二中间数据;
解析模块,用于对所述第二中间数据进行解析,得到第二协议的第二数据。
在一个实施例中,一种数据协议转换的装置包括:
获取模块,用于获取第一协议的第一数据;
解析模块,用于对所述第一数据进行解析,得到第一中间数据;
封装模块,用于将所述第一中间数据封装成第一model对象;
序列化模块,用于将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据;
第二获取模块,用于获取第二FTP/SFTP协议的数据;
反序列化模块,用于将所述第二FTP/SFTP协议的数据反序列化为第二model对象;
解封装模块,用于将所述第二model对象解封装,得到第二中间数据;
解析模块,用于对所述第二中间数据进行解析,得到第二协议的第二数据。
以上三个数据协议转换的装置的实施例所述各个模块可分别执行上文中结合图1-4描述的数据协议转换方法的各个步骤/功能,因此省略以上已经描述过的细节内容。
图6示出了根据本发明一个实施例的电子设备600的示意性框图。图6所示的电子设备6000包括:处理器6001和存储器6003。其中,处理器6001和存储器6003相连,如通过总线6002相连。可选地,电子设备6000还可以包括收发器6004。需要说明的是,实际应用中收发器6004不限于一个,该电子设备6000的结构并不构成对本申请实施例的限定。
处理器6001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器6001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线6002可包括一通路,在上述组件之间传送信息。总线6002可以是PCI总线或EISA总线等。总线6002可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器6003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器6003用于存储执行本申请实施例方案的应用程序代码,并由处理器6001来控制执行。处理器6001用于执行存储器6003中存储的应用程序代码,以实现前述任一方法实施例所示的内容。
在一个实施例中,所述计算机程序指令被所述处理器6002运行时用于执行以下步骤:获取第一协议的第一数据;对所述第一数据进行解析,得到第一中间数据;将所述第一中间数据封装成第一model对象;将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的数据协议转换方法的相应步骤,并且用于实现根据本发明实施例的数据协议转换的装置中的相应模块。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。
在一个实施例中,所述程序指令在被计算机或处理器运行时可以使得计算机或处理器实现根据本发明实施例的各个功能模块,并和/或者可以执行根据本发明实施例的数据协议转换的方法。
在一个实施例中,所述程序指令在运行时用于执行以下步骤:获取第一协议的第一数据;对所述第一数据进行解析,得到第一中间数据;将所述第一中间数据封装成第一model对象;将所述第一model对象序列化为二进制对象,得到第一FTP/SFTP协议的数据。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据协议转换的方法,其特征在于,包括:
获取第一协议的第一数据;
对所述第一数据进行解析,得到第一中间数据;
将所述第一中间数据封装成第一model对象,其中,所述第一model对象中包含待传输的数据和用来描述待传输数据的数据;
将所述第一model对象序列化为二进制对象,得到可通过网闸传输的第一FTP/SFTP协议的数据;
所述将所述第一中间数据封装成第一model对象,包括:
在所述第一中间数据中加入数据的唯一标识和单向/双向标识,将加入了所述数据的唯一标识和所述单向/双向标识的第一中间数据编码为二进制数据,并封装成所述第一model对象。
2.根据权利要求1所述的方法,其特征在于,
所述第一协议为http协议,
所述获取第一协议的第一数据包括,接收第一协议的第一数据;
或,
所述第一协议为kafka协议,
所述获取第一协议的第一数据包括:通过消费kafka中的数据,从而从kafka中获取第一协议的第一数据。
3.根据权利要求1所述的方法,其特征在于,
所述第一协议为http协议,
所述对所述第一数据进行解析包括,使用netty提供的工具对所述第一数据进行解析;
或,所述第一协议为kafka协议,
所述对所述第一数据进行解析包括,使用spring-kafka框架提供的工具对所述第一数据进行解析。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取第二FTP/SFTP协议的数据;
将所述第二FTP/SFTP协议的数据反序列化为第二model对象;
将所述第二model对象解封装,得到第二中间数据;
对所述第二中间数据进行解析,得到第二协议的第二数据。
5.根据权利要求4所述的方法,其特征在于,
所述第二协议为http协议,
所述对所述第二中间数据进行解析包括,使用netty提供的工具对所述第二中间数据进行解析;
或,所述第二协议为kafka协议,
所述对所述第二中间数据进行解析包括,使用spring-kafka框架提供的工具对所述第二中间数据进行解析。
6.一种数据传输的系统,其特征在于,包括第一网络、第二网络,以及连接第一网络和第二网络、用于在第一网络和第二网络之间进行数据传输的网闸;所述第一网络包括第一业务系统和第一数据协议转换组件,所述第二网络包括第二业务系统和第二数据协议转换组件;
所述第一业务系统用于使所述第一数据协议转换组件获取第三协议的第三数据;
所述第一数据协议转换组件用于使用权利要求1-5任一项所述的方法将所述第三数据转换为第三FTP/SFTP协议的数据,并将所述第三FTP/SFTP协议的数据存储至位于所述第一网络中的第一FTP/SFTP文件目录;
所述网闸用于将所述第三FTP/SFTP协议的数据从所述第一FTP/SFTP文件目录摆渡至位于第二网络中的第二FTP/SFTP目录;
所述第二数据协议转换组件用于从所述第二FTP/SFTP文件目录获取到所述第三FTP/SFTP协议的数据;
所述第二数据协议转换组件还用于使用权利要求1-5任一项所述的方法将所述第三FTP/SFTP协议的数据转换为第四协议的第四数据;
所述第二业务系统用于获取所述第四协议的第四数据。
7.根据权利要求6所述的数据传输的系统,其特征在于,
所述第二业务系统还用于响应于获取到的所述第四协议的第四数据,使第二数据协议转换组件获取第五协议的第五数据;
所述第二数据协议转换组件还用于使用权利要求1-6任一项所述的方法将所述第五协议的第五数据转换为第四FTP/SFTP协议的数据,并将所述第四FTP/SFTP协议的数据存储至所述第二FTP/SFTP文件目录;
所述网闸还用于所述第四FTP/SFTP协议的数据从所述第二FTP文件目录摆渡至位于第一网络中的第一FTP/SFTP目录;
所述第一数据协议转换组件用于从所述第一FTP/SFTP文件目录获取到第四FTP/SFTP协议的数据;
所述第一数据协议转换组件还用于使用权利要求1-6任一项所述的方法将所述第四FTP/SFTP协议的数据转换为第六协议的第六数据;
所述第一业务系统还用于获取所述第六协议的第六数据。
8.一种数据协议转换的装置,其特征在于,包括:
获取模块,用于获取第一协议的第一数据;
解析模块,用于对所述第一数据进行解析,得到第一中间数据;
封装模块,用于将所述第一中间数据封装成第一model对象,其中,所述第一model对象中包含待传输的数据和用来描述待传输数据的数据;
序列化模块,用于将所述第一model对象序列化为二进制对象,得到可通过网闸传输的第一FTP/SFTP协议的数据;
所述封装模块在将所述第一中间数据封装成第一model对象时,具体用于:
在所述第一中间数据中加入数据的唯一标识和单向/双向标识,将加入了所述数据的唯一标识和所述单向/双向标识的第一中间数据编码为二进制数据,并封装成所述第一model对象。
9.一种电子设备,其特征在于,其包括:
处理器、存储器和总线;
所述总线,用于连接所述处理器和所述存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,执行上述权利要求1-5中任一项所述的数据协议转换的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述权利要求1至5中任一项所述的数据协议转换的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910828702.1A CN110381093B (zh) | 2019-09-03 | 2019-09-03 | 数据协议转换的方法、装置、数据传输的系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910828702.1A CN110381093B (zh) | 2019-09-03 | 2019-09-03 | 数据协议转换的方法、装置、数据传输的系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110381093A CN110381093A (zh) | 2019-10-25 |
CN110381093B true CN110381093B (zh) | 2022-07-19 |
Family
ID=68261292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910828702.1A Active CN110381093B (zh) | 2019-09-03 | 2019-09-03 | 数据协议转换的方法、装置、数据传输的系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110381093B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111225024A (zh) * | 2019-11-22 | 2020-06-02 | 北京旷视科技有限公司 | 大体积数据的传输方法、系统、装置、电子设备及计算机可读存储介质 |
CN111586041A (zh) * | 2020-05-07 | 2020-08-25 | 英赛克科技(北京)有限公司 | 工业单向隔离网闸系统和数据传输方法 |
CN112565288B (zh) * | 2020-12-21 | 2023-05-09 | 南京南瑞信息通信科技有限公司 | 一种内网采控指令在外网执行的方法和系统 |
CN113438282B (zh) * | 2021-06-04 | 2022-09-27 | 北京旷视科技有限公司 | 基于ftp协议的数据传输方法、装置及数据传输服务器 |
CN113438251A (zh) * | 2021-07-06 | 2021-09-24 | 中国银行股份有限公司 | 协议转换方法、装置及系统 |
CN113379956B (zh) * | 2021-08-11 | 2021-11-02 | 四川智优羊科技有限公司 | 一种应用于校园门禁的netty4管道跨网协议的通信方法 |
CN113515482A (zh) * | 2021-09-14 | 2021-10-19 | 北京国科天迅科技有限公司 | 数据传输系统、方法、计算机设备和存储介质 |
CN114124929B (zh) * | 2021-09-29 | 2024-03-29 | 奇安信科技集团股份有限公司 | 跨网络的数据处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027534A (zh) * | 2016-05-26 | 2016-10-12 | 浪潮(苏州)金融技术服务有限公司 | 一种基于Netty实现金融报文处理系统 |
CN106209801A (zh) * | 2016-06-28 | 2016-12-07 | 广东电网有限责任公司信息中心 | 移动应用平台与内外网数据安全交换平台集成系统 |
CN109600410A (zh) * | 2017-09-30 | 2019-04-09 | 杭州海康威视数字技术股份有限公司 | 数据存储系统以及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2057793A1 (en) * | 2007-03-14 | 2009-05-13 | Hewlett-Packard Development Company, L.P. | Synthetic bridging |
US10033647B2 (en) * | 2015-10-13 | 2018-07-24 | Oracle International Corporation | System and method for efficient network isolation and load balancing in a multi-tenant cluster environment |
-
2019
- 2019-09-03 CN CN201910828702.1A patent/CN110381093B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027534A (zh) * | 2016-05-26 | 2016-10-12 | 浪潮(苏州)金融技术服务有限公司 | 一种基于Netty实现金融报文处理系统 |
CN106209801A (zh) * | 2016-06-28 | 2016-12-07 | 广东电网有限责任公司信息中心 | 移动应用平台与内外网数据安全交换平台集成系统 |
CN109600410A (zh) * | 2017-09-30 | 2019-04-09 | 杭州海康威视数字技术股份有限公司 | 数据存储系统以及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110381093A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110381093B (zh) | 数据协议转换的方法、装置、数据传输的系统及电子设备 | |
EP3399715B1 (en) | Protocol conversion method, platform, and protocol conversion gateway | |
CN110417766B (zh) | 一种协议解析的方法和装置 | |
CN107332857B (zh) | 一种网络数据传输方法、装置、系统和存储介质 | |
CN111294235B (zh) | 数据处理方法、装置、网关及可读存储介质 | |
EP2429150A1 (en) | Apparatus, web service component and method based on web service | |
CN112311664A (zh) | 一种工业互联网数据交互方法、系统及工业网关 | |
CN113467972A (zh) | 通信接口构造方法、装置以及计算机设备、存储介质 | |
CN111240858A (zh) | 事件调度方法及组件 | |
CN108989422A (zh) | 一种报文及文件处理方法及系统 | |
CN114741400A (zh) | 一种数据同步及解析方法、装置及终端设备 | |
CN108833500B (zh) | 服务调用方法、服务提供方法、数据传递方法和服务器 | |
WO2013016994A1 (zh) | 消息发送方法及系统 | |
CN113595966B (zh) | 串口通信控制、配置、测试方法、装置、电子设备和存储介质 | |
CN109819026B (zh) | 用于传输信息的方法及装置 | |
CN101404656A (zh) | 一种与第三方智能设备协议通讯的软件接口设计方法 | |
CN108289165B (zh) | 一种基于手机控制相机的实现方法、装置及终端设备 | |
CN113051202A (zh) | 接口适配方法、装置、电子设备和计算机可读存储介质 | |
CN113918245A (zh) | 一种数据调用方法、装置、设备及计算机可读存储介质 | |
CN113849449A (zh) | 一种通信系统和信息交互方法、设备和介质 | |
CN102523069A (zh) | 消息发送方法 | |
CN109669793B (zh) | 中间件进程内对象调用方法 | |
CN112769741B (zh) | 一种消息通信方法及电子设备 | |
CN110493216B (zh) | 基于嵌入式串口数据透传侦听的方法、系统及存储介质 | |
CN112165529A (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 |