基于网闸的数据传输方法、设备、系统和介质与流程

文档序号:17429718发布日期:2019-04-17 03:20阅读:400来源:国知局
基于网闸的数据传输方法、设备、系统和介质与流程

本公开涉及一种基于网闸的数据传输方法、设备、系统和介质。



背景技术:

真正应用集群(oraclerac)一般由两台及以上同构计算机及共享存储设备构成,包括rac节点和oracle客户端,rac节点和oracle客户端采用透明网络底层(tns)协议进行通讯。rac主节点接收oracle客户端的连接请求并根据链路负载信息为该oracle客户端分配rac数据节点,rac数据节点从共享数据库中获取数据并发送给oracle客户端。

双向网闸由外端主机与内端主机构成,其主要部署在两个不同的安全域之间,实现不同密级网络域的安全隔离与数据交换需求。将网闸应用于oraclerac可以有效地隐藏rac节点信息,将秘密数据安全地保护起来,而目前还没有成熟的方案通过网闸实现oraclerac的访问。



技术实现要素:

本公开鉴于上述问题,提供了一种基于网闸的数据传输方法、设备、系统和介质。通过在网闸中建立ip地址映射表来将rac节点与外端主机一一对应起来,从而在网闸上建立模拟节点集群与oracle客户端进行数据通信,在有效隐藏rac节点信息的基础上,实现了rac节点与oracle客户端之间的数据传输。

本公开的一个方面提供了一种基于网闸的数据传输方法,所述网闸包括内端主机和外端主机,所述外端主机包括一个第一节点和一个及以上第二节点,方法包括:s1,所述第一节点接收客户端的第一请求报文,并将符合预设规则的所述第一请求报文经所述内端主机转发至第一服务端;s2,所述第一服务端为所述客户端分配第二服务端,并将包含第二服务端身份信息的第一应答报文经所述内端主机转发至所述第一节点;s3,所述第一节点将所述第一应答报文中的所述第二服务端身份信息更新为所述第二节点身份信息,并将更新后的所述第一应答报文发送至所述客户端;s4,所述第二节点接收所述客户端的第二请求报文,将符合所述预设规则的所述第二请求报文经所述内端主机转发至所述第二服务端,接收所述第二服务端的第二应答报文,并将所述第二应答报文转发至所述客户端。

可选地,所述第二服务端与所述第二节点一一对应,所述步骤s3还包括:所述外端主机创建一映射表,所述映射表中存储有所述第二服务端身份信息与所述第二节点身份信息之间的映射关系;所述第一节点查询所述映射表,将所述第一应答报文中的所述第二服务端身份信息更新为所述第二节点身份信息。

可选地,所述第二服务端身份信息为所述第二服务端的ip地址,所述第二节点身份信息为所述第二节点的所述ip地址。

可选地,所述外端主机与所述内端主机之间传输报文还包括:所述外端主机为所述第一请求报文或第二请求报文添加一报文头,并将含有所述报文头的所述第一请求报文或第二请求报文发送至所述内端主机;所述内端主机为所述第一应答报文或第二应答报文添加一报文头,并将含有所述报文头的所述第一应答报文或第二应答报文发送至所述外端主机。

可选地,所述报文头中包含协议特征,用于标识所述报文是否符合所述预设规则。

可选地,所述报文头中还包含第一服务端身份信息或所述第二服务端身份信息。

可选地,所述预设规则为tns协议。

本公开另一方面还提供了一种基于网闸的数据传输电子设备,包括:处理器;存储器,其存储有计算机可执行程序,所述程序在被所述处理器执行时,使得所述处理器执行上述基于网闸的数据传输方法。

本公开另一方面还提供了一种基于网闸的数据传输系统,所述网闸包括内端主机和外端主机,所述外端主机包括一个第一节点和一个及以上第二节点,所述基于网闸的数据传输系统包括:请求模块,用于通过所述第一节点接收客户端的第一请求报文,所述第一节点将符合预设规则的所述第一请求报文经所述内端主机转发至第一服务端;分配模块,用于通过所述第一服务端为所述客户端分配第二服务端,将包含第二服务端身份信息的第一应答报文经所述内端主机转发至所述第一节点;更新模块,用于通过第一节点将所述第一应答报文中的所述第二服务端身份信息更新为所述第二节点身份信息,并将更新后的所述第一应答报文发送至所述客户端;收发模块,用于通过所述第二节点接收所述客户端的第二请求报文,将符合所述预设规则的所述第二请求报文经所述内端主机转发至所述第二服务端,接收所述第二服务端的第二应答报文,并将所述第二应答报文转发至所述客户端。

本公开的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述基于网闸的数据传输方法。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开实施例提供的基于网闸的数据传输方法应用场景架构图。

图2示意性示出了根据本公开实施例提供的基于网闸的数据传输方法的流程图。

图3示意性示出了根据本公开实施例提供的基于网闸的数据传输方法中报文头的格式。

图4示意性示出了根据本公开的电子设备的框图。

图5示意性示出了本公开实施例的基于网闸的数据传输系统的框图。

具体实施方式

根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。

在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。

在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。

图1示意性示出了根据本公开实施例提供的基于网闸的数据传输方法应用场景架构图。

第一服务端为rac主节点,第二服务端为rac数据节点,第一服务端和第二服务端都由独立的计算机组成,当第一服务端出现故障时,任意一台第二服务端均可变为第一服务端,确保oraclerac的稳定运行。

网闸包括外端主机和内端主机,外端主机包括第一节点和若干第二节点,第一节点和第二节点均为模拟节点,第二节点与第二服务端之间一一对应,第一节点与第一服务端对应。当第一服务端将某一第二服务端分配给oracle客户端后,该第二服务端从共享存储数据库中获取数据并经内端主机以及相应的第二节点转发至oracle客户端。

图2示意性示出了根据本公开实施例提供的基于网闸的数据传输方法的流程图。如图2所示,该方法包括如下操作:

s1,第一节点接收客户端的第一请求报文,将符合预设规则的第一请求报文经内端主机转发至第一服务端。

首先,外端主机创建一映射表,该映射表中存储有第一节点与第一服务端以及第二节点与第二服务端之间的映射关系,具体地,存储有第一节点ip地址与第一服务端ip地址以及第二节点ip地址与第二服务端ip地址之间的映射关系。

其次,第一节点启动监听服务,当监听到有oracle客户端发起数据请求时,接收该oracle客户端的第一请求报文。其中,该第一请求报文用于向第一服务端发送请求,请求该第一服务端为该oracle客户端分配第二服务端,第一服务端可以为rac主节点,第二服务端可以为rac数据节点。

然后,第一节点根据预设规则判断该第一请求报文是否为非法报文,其中,预设规则为tns协议。若该第一请求报文不符合tns协议格式,该第一请求报文为非法报文,第一节点将该第一请求报文丢弃,否则,第一节点查询映射表中其对应的第一终端的ip地址,为该第一请求报文添加一报文头,并将含有报文头的第一请求报文发送至内端主机,其中,报文头中包含第一服务端的ip地址。

图3示意性示出了根据本公开实施例提供的基于网闸的数据传输方法中报文头的格式。如图3所示,报文头包括协议特征(2字节)、源端地址(4字节)、目的地址(4字节)、源端端口(2字节)、目的端口(2字节)、用户数据包长度(2字节)和校验和(2字节)。协议特征用于标识报文是否符合预设规则(即tns协议);源端地址为oracle客户端的ip地址;源端端口为oracle客户端发起连接的端口;目的地址为第一服务端或第二服务端的ip地址;目的端口为第一服务端或第二服务端的端口,用户数据包长度为数据报文的总长度;校验和为数据报文的md5值。

最后,内端主机接收到含有报文头的第一请求报文后,通过协议特征和校验和检测该第一请求报文的合法性,若为非法报文,内端主机自动退出与第一节点之间的数据传输,否则,内端主机获取报文头中的目的地址与目的端口信息,将去掉报文头后的第一请求报文发送至目的地址指定的第一服务端。

s2,第一服务端为客户端分配第二服务端,将包含第二服务端身份信息的第一应答报文经内端主机转发至第一节点。

首先,第一服务端接收到第一请求报文后,根据第二服务端的负载情况,为客户端分配一第二服务端,例如,为客户端分配空闲程度最高的第二服务端。

其次,该第一服务端生成第一应答报文,第一应答报文中包含所分配的第二服务端的ip地址,将第一应答报文发送至内端主机。

然后,内端主机为该第一应答报文添加一报文头,将含有报文头的第一应答报文发送至第一节点。

s3,第一节点将第一应答报文中的第二服务端身份信息更新为第二节点身份信息,将更新后的第一应答报文发送至客户端。

第一节点接收到含有报文头的第一应答报文后,通过协议特征和校验和检测该第一应答报文的合法性,若为非法报文,第一节点自动退出与内端主机之间的数据传输,否则,第一节点查询映射表,查询与第二服务端相应的第二节点,将去掉报文头的第一应答报文中第二服务端的ip地址更改为第二节点的ip地址,更新第一应答报文并将其发送至客户端。

s4,第二节点接收客户端的第二请求报文,将符合预设规则的第二请求报文经内端主机转发至第二服务端,接收第二服务端的第二应答报文,并将该第二应答报文转发至客户端。

首先,客户端根据接收到的第一应答报文中第二节点的ip地址向第二节点发送第二请求报文,其中,第二请求报文用于向第二服务端请求数据;第二节点为符合tns协议的第二请求报文添加报文头后发送至内端主机,并经内端主机转发至第二服务端,该过程与第一节点将第一请求报文经内端主机转发至第一服务端相同,这里不再赘述。

然后,第二服务端从共享存储数据库中获取客户端所请求的数据,生成第二应答报文,该第二应答报文中含有客户端请求的数据;内端主机为第二应答报文添加报文头并转发至第二节点。

最后,第二节点将第二应答报文发送给oracle客户端,客户端解析第二应答报文即可得到其所请求的共享数据库中的数据。

如图4所示,电子设备400包括处理器410、计算机可读存储介质420。该电子设备400可以执行上面参考图2描述的方法,以进行消息处理。

具体地,处理器410例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器410还可以包括用于缓存用途的板载存储器。处理器410可以是用于执行参考图2描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质420,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

计算机可读存储介质420可以包括计算机程序421,该计算机程序421可以包括代码/计算机可执行指令,其在由处理器410执行时使得处理器410执行例如上面结合图2所描述的方法流程及其任何变形。

计算机程序421可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序421中的代码可以包括一个或多个程序模块,例如包括421a、模块421b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器410执行时,使得处理器410可以执行例如上面结合图2所描述的方法流程及其任何变形。

根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。

图5示意性示出了本公开实施例的基于网闸的数据传输系统的框图。

如图5所示,基于网闸的数据传输系统包括请求模块510、分配模块520、更新模块530及收发模块540。

具体地,请求模块510,用于通过第一节点接收客户端的第一请求报文,若第一请求报文不符合tns协议,丢弃该第一请求报文,否则,查询映射表中第一节点对应的第一服务端的ip地址,为该第一请求报文添加报文头(含有第一服务端ip地址)后发送至内端主机,再通过内端主机检验该第一请求报文的合法性,为合法报文时,内端主机将去掉报文头的第一请求报文发送至第一服务端,否则,内端主机退出与第一节点之间的数据传输。

分配模块520,用于通过第一服务端为客户端分配一第二服务端,第一服务端生成含有第二服务端ip地址的第一应答报文,并将第一应答报文发送至内端主机,内端主机为第一应答报文添加报文头后发送至第一节点。

更新模块530,通过第一节点检验第一应答报文的合法性,若为合法报文,第一节点查询映射表,将去掉报文头的第一应答报文中的第二服务端ip地址更新为第二节点的ip地址,更新第一应答报文并发送至客户端。

收发模块540,用于通过第二节点接收客户端的第二请求报文,将符合tns协议的第二请求报文添加报文头后发送给内端主机,通过内端主机检验其合法性后转发给第二服务端,通过第二服务端发送第二应答报文至内端主机,内端主机为第二应答报文添加报文头后发送给第二节点,通过第二节点检验其合法性后转发给客户端。

可以理解的是,请求模块510、分配模块520、更新模块530及收发模块540可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,请求模块510、分配模块520、更新模块530及收发模块540中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,请求模块510、分配模块520、更新模块530及收发模块540中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

尽管已参照本公开的特定示例性实施例示出并描述本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1