一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据单向传输方法、内网端单元和单向隔离光闸系统与流程

2022-04-09 06:07:23 来源:中国专利 TAG:


1.本技术涉及网络全隔离技术领域,尤其是涉及一种数据单向传输方法、内网端单元和单向隔离光闸系统。


背景技术:

2.在高安全级别网络与低安全级别网络进行数据交换时,为保证高安全级别网络中的数据流向低安全级别网络安全可控,解决高安全级别网络信息泄露的问题,一般采用单向隔离网闸隔离高安全级别网络与低安全级别网络,以实现数据的单向传输。
3.单向导入(光闸)采用“2 1”双主机架构,即内网端处理系统、外网端处理系统以及单向光纤隔离单元组成,通过协议隔离,数据落地的形式,以信息“摆渡”的方式实现数据交换,采用单向物理反馈方式实现数据单向传输。由于单向光闸的单向数据传输特性,外网端单元的数据通过单向传输的光模块与内外主机数据摆渡通讯,不能使用tcp可靠传输协议,只能使用udp协议进行传输,但是udp协议这种不可靠通讯协议不能保证数据摆渡传输的可靠性,存在丢数据的可能性,尤其是在高速通讯传输的时候,对接收方的系统设计要求比较高,若处理不好,可能会增大丢包丢数据的可能性,进而影响隔离环境的业务通讯。
4.因此为了降低摆渡数据丢失的可能性,一般的处理策略是降低数据摆渡速率来换取数据单向传输的稳定性,特别是文件数据的单向传输,接收端还需要把接收到的文件数据包重组还原落地成文件,这样接收端就会有网络io和文件磁盘io操作,而目前绝大多数硬件设备的磁盘其io的性能和吞吐量是远远不如网络io的,单向光闸需要协议剥离落地成文件来单向摆渡传输,所以单向光闸离不开文件数据的摆渡传输。并且,一般情况下接收端还要对应用层的网络数据包缓冲区的生产或消费的操作进行加锁操作,实现操作保护,容易降低应用层通过接收网络数据包对内核socket数据接收缓冲的消费效率,从而影响接收端接收消费发送端发过来的摆渡数据的速度,最终影响单向光闸的传输速率和稳定性。
5.因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。


技术实现要素:

6.本技术提供了一种数据单向传输方法、内网端单元和单向隔离光闸系统,能够提高单向光闸的传输速率和数据传输的稳定性,消除丢包的可能性。
7.第一方面,本技术提供了一种数据单向传输方法,包括:从内核缓冲区持续读取摆渡数据,并将从内核缓冲区读取的摆渡数据写入应用层网络数据包无锁缓冲区;其中,所述内核缓冲区用于缓存外网端单元通过单向光纤隔离单元发送的摆渡数据;从所述应用层网络数据包无锁缓冲区持续读取摆渡数据;当从所述应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从所述应用层网络数据包无锁缓冲区读取的摆渡数据落地到高io性能固态磁盘。
8.通过采用上述技术方案,内网端单元设置应用层网络数据包无锁缓冲区,可同时进行摆渡数据的读操作和写操作,没有等待时间,极大提高了从内核缓冲区消费摆渡数据的效率,消除了内核缓冲区数据溢出情况发生的可能性,提高了摆渡数据的稳定性;当从应用层网络数据包无锁缓冲区读取摆渡数据后,将该摆渡数据落地到高io性能固态硬盘,由于采用高io性能固态硬盘,提高了文件磁盘io的速率,进而能够提高消费应用层网络数据包缓冲区的数据的效率。
9.在一种可能实现的方式中,所述当从所述应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从所述应用层网络数据包无锁缓冲区读取的摆渡数据落地到高io性能固态磁盘,包括:当从所述应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从所述应用层网络数据包无锁缓冲区读取的摆渡数据取出并写入应用层文件无锁缓冲区;判断所述应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定的数据累计量;若达到设定的数据累计量,则将所述应用层文件无锁缓冲区的所述所有摆渡数据转存到文件后落地到所述高io性能固态磁盘,其中,所述所有摆渡数据包括从所述应用层网络数据包无锁缓冲区读取的摆渡数据。
10.通过上述技术方案,在内网端单元中增设应用层文件无锁缓冲区,用于缓存从应用层网络数据包无锁缓冲区中读取到的摆渡数据,当应用层文件无锁缓冲区的所有摆渡数据的数据累计量达到设定数据累计量时,将所有摆渡数据转存到文件后落地到高io性能固态磁盘,写入高io性能固态磁盘的数据为相对大容量文件,避免了多次连续的将小数据写入高io性能固态磁盘造成的耗时长的问题的发生,导致后端文件io消费慢,主要因为磁盘写小数据的性能远远低于写连续大数据的性能,本方案提高了文件io性能,使网络io和文件磁盘io速率达到一个动态平衡,避免丢包的情况发生。
11.在一种可能实现的方式中,所述将从所述应用层网络数据包无锁缓冲区读取的摆渡数据取出并写入应用层文件无锁缓冲区,包括:根据从应用层网络数据包无锁缓冲区读取的摆渡数据,得到文件名信息、数据长度信息、数据总长度信息、文件数据包总数、当前包序号;将从应用层网络数据包无锁缓冲区读取的摆渡数据写入与所述文件名信息对应的应用层文件无锁缓冲区;对应的,所述判断所述应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定的数据累计量,包括:判断所述文件名信息对应的应用层文件无锁缓冲区的所有摆渡数据的数据长度是否构成数据总长度。
12.通过上述技术方案,文件名信息相同的摆渡数据能够写入同一应用层文件无锁缓冲区,根据数据长度信息与数据总长度信息能够判断该应用层文件无锁缓冲区内的摆渡数据的长度是否能构成数据总长度,以确定是否是完整数据,保证了落地文件的完整性。
13.在一种可能实现的方式中,所述判断所述应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定数据累计量,包括:判断所述应用层文件无锁缓冲区的所有摆渡数据的数量是否达到预设数量。
14.通过上述技术方案,判断所述应用层文件无锁缓冲区的所有摆渡数据的数量是否达到预设数量,若达到预设数量,则以将预设数量对应的大数据转存到文件后落地到高io性能固态磁盘,由于磁盘写小数据的性能远远低于写连续大数据的性能,因此,本方案提升了后端文件io消费能力。
15.在一种可能实现的方式中,所述若达到设定数据累计量,则将所述应用层文件无锁缓冲区的所述所有摆渡数据转存到文件后落地到所述高io性能固态磁盘,包括:若达到预设数量,则确定所述应用层文件无锁缓冲区的摆渡数据中的完整的摆渡数据;将所述应用层文件无锁缓冲区的所有完整的摆渡数据转存到文件后落地至所述高io性能固态磁盘。
16.通过上述技术方案,在应用层文件无锁缓冲区的所有摆渡数据的数量达到预设数量后,仅对该应用层文件无锁缓冲区的所有完整的摆渡数据进行文件转存后落地至高io性能固态磁盘操作,保证了落地文件的完整性。
17.在一种可能实现的方式中,所述从内核缓冲区持续读取摆渡数据,包括:从socket非阻塞缓冲区持续读取摆渡数据。
18.通过上述技术方案,内核缓冲区为socket非阻塞缓冲区,从内核socket非阻塞缓冲区持续读取摆渡数据,然后直接将读取的摆渡数据写入到应用层网络数据包无锁缓冲区,将数据写入后不需要等待后端消费数据的结果,持续从内核缓冲区读取数据,从而提高内核缓冲区消费数据的效率。
19.在一种可能实现的方式中,还包括:当从所述应用层网络数据包无锁缓冲区读取的摆渡数据为转发文件数据时,调用进程间非阻塞的通讯接口将从所述应用层网络数据包无锁缓冲区读取的摆渡数据转发至相应的后台服务端。
20.通过上述技术方案,本方案调用进程间非阻塞的通讯接口将转发类型的摆渡数据进行转发,在数据发送端将转发类型的摆渡数据发送至相应的后台服务端后,不需要等待后台服务端的响应,提高了摆渡数据的传输效率。
21.第二方面,本申提供一种数据单向传输装置,采用如下技术方案:一种数据单向传输装置,包括:数据读取模块,用于从内核缓冲区持续读取摆渡数据,并将从内核缓冲区读取的摆渡数据写入应用层网络数据包无锁缓冲区;其中,所述内核缓冲区用于缓存外网端单元通过单向光纤隔离单元发送的摆渡数据;数据获取模块,用于从所述应用层网络数据包无锁缓冲区持续读取摆渡数据;数据落地模块,用于当从所述应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从所述应用层网络数据包无锁缓冲区读取的摆渡数据落地到高io性能固态磁盘。
22.第三方面,本技术提供一种内网端单元,采用如下的技术方案:一种内网端单元,该内网端单元包括:至少一个处理器;存储器;至少一个应用程序,其中所述至少一个应用程序被存储在存储器中并被配置为由
至少一个处理器执行,所述至少一个应用程序配置用于:执行上述数据单向传输方法。
23.第四方面,本技术提供一种计算机可读存储介质,采用如下技术方案:一种计算机可读存储介质,包括:存储有能够被处理器加载并执行上述单向数据传输方法的计算机程序。
24.第五方面,本技术提供一种单向隔离光闸系统,采用如下技术方案:外网端单元,用于获取摆渡数据;如上述所述的内网端单元;与所述外网端单元和所述内网端单元连接的单向光纤隔离单元,用于将外网端单元的摆渡数据单向传输至所述内网端单元。
25.在一种可能实现的方式中,所述外网端单元还用于:接收摆渡数据,并提取摆渡数据的关键字信息;将所述关键字信息与预设的病毒库中的病毒关键字信息匹配;若所述关键字信息与所述病毒关键字信息相匹配,则丢弃摆渡数据;若所述关键字信息与所述病毒关键字信息不匹配,则将发送的摆渡数据至所述内网端单元。
26.通过采用上述技术方案,外网端单元在发送摆渡数据至内网端单元之前,对待传输的摆渡数据的安全性进行监测,当确定待传输的摆渡数据的关键字信息与病毒库中的关键字不匹配时,将发送摆渡数据至所述内网端单元;否则将摆渡数据丢弃,本方案增强了传输至内网端单元的摆渡数据的安全性。
27.综上所述,本技术包括以下至少一种有益技术效果:1.内网端单元设置应用层网络数据包无锁缓冲区,可同时进行摆渡数据的读操作和写操作,没有等待时间,极大提高了从内核缓冲区消费摆渡数据的效率,消除了内核缓冲区数据溢出情况发生的可能性,提高了摆渡数据的稳定性;当从应用层网络数据包无锁缓冲区读取摆渡数据后,将该摆渡数据落地到高io性能固态硬盘,由于采用高io性能固态硬盘,提高了文件磁盘io的速率,进而能够提高消费应用层网络数据包缓冲区的数据的效率。
28.2.在内网端单元中增设应用层文件无锁缓冲区,用于缓存从应用层网络数据包无锁缓冲区中读取到的摆渡数据,当应用层文件无锁缓冲区的所有摆渡数据的数据累计量达到设定数据累计量时,将所有摆渡数据转存到文件后落地到高io性能固态磁盘,写入高io性能固态磁盘的数据为相对大容量文件,避免了多次连续的将小数据写入高io性能固态磁盘造成的耗时长的问题的发生,导致后端文件io消费慢,主要因为磁盘写小数据的性能远远低于写连续大数据的性能,本方案提高了文件io性能,使网络io和文件磁盘io速率达到一个动态平衡,避免丢包的情况发生。
附图说明
29.图1是本技术实施例中一种数据单向传输方法对应的方案所适用的硬件组成框架的结构示意图;图2是本技术实施例中一种数据单向传输方法的流程示意图;图3是本技术实施例中一种数据交互示意图;图4是本技术实施例中一种数据单向传输装置的结构示意图;图5是本技术实施例中一种内网端单元的结构示意图。
具体实施方式
30.以下结合附图1-附图5对本技术作进一步详细说明。
31.本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本技术的范围内都受到专利法的保护。
32.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
33.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
34.因此为了消除摆渡数据丢失的可能性,一般的处理策略是降低数据摆渡速率来换取数据单向传输的稳定性,特别是文件数据的单向传输,接收端还需要把接收到的文件数据包重组还原落地成文件,这样接收端就会有网络io和文件磁盘io操作,而目前绝大多数硬件设备的磁盘其io的性能和吞吐量是远远不如网络io的,单向光闸需要协议剥离落地成文件来单向摆渡传输,所以单向光闸离不开文件数据的摆渡传输。并且,一般情况下接收端还要对应用层的网络数据包缓冲区的生产或消费的操作进行加锁操作,实现操作保护,容易造成接收端不能及时生产或消费摆渡数据,从而影响接收端接收消费发送端发过来的摆渡数据的速度,最终影响单向光闸的传输速率和稳定性。
35.本技术在内网端单元设置应用层网络数据包无锁缓冲区,可同时进行摆渡数据的读操作和写操作,没有等待时间,极大提高了从内核缓冲区消费摆渡数据的效率,消除了内核缓冲区数据溢出情况发生的可能性,提高了摆渡数据的稳定性;当从应用层网络数据包无锁缓冲区读取摆渡数据后,将该摆渡数据落地到高io性能固态硬盘,由于采用高io性能固态硬盘,提高了文件磁盘io的速率,进而能够提高消费应用层网络数据包缓冲区的数据的效率。
36.为了便于理解,先对本技术的数据单向传输方法对应的方案所适用的硬件组成框架进行介绍,请参考图1,图1为本技术实施例提供的一种数据单向传输方法对应的方案所适用的硬件组成框架的结构示意图。
37.由图1可知,该硬件组成框架可以包括:外网端单元110、内网端单元120以及用于将外网端单元110的数据单向传输至内网端单元120的单向光纤隔离单元130。
38.其中外网端单元110可以包括:处理器、存储器、收发器以及总线,处理器、存储器、收发器均通过总线完成相互间的通信。外网端单元110设置有数据摆渡发送端模块、业务服务模块,其中该业务服务模块包括:ftp同步单元、邮件代理单元,业务服务模块抓取业务数据,并将业务数据发送至外网端单元110的数据摆渡发送端模块,外网端单元110的数据摆渡发送端模块接收到该业务数据后,利用单向光纤隔离单元130进行数据传输。可选的,数据摆渡发送端模块根据私有协议组织报文以udp传输协议发送至内网端单元120。
39.单向光纤隔离单元130,是利用光模块的分管器镜像从物理上来实现数据的单向传输特性,保证没有任务反向从内网端单元120传输至外网端单元110的可能。可以理解的是,外网端单元110的数据通过单向传输的单向光纤隔离单元130与内网端单元120数据摆
渡通讯,且采用udp协议进行传输。
40.内网端单元120可以包括:处理器、存储器、收发器以及总线,处理器、存储器、收发器均通过总线完成相互间的通信。
41.外网端单元110和内网端单元120之间通过单向光纤隔离单元130实现单向通讯连接。内网端单元120从内核缓冲区持续读取摆渡数据,并将从内核缓冲区读取的摆渡数据写入应用层网络数据包无锁缓冲区;其中,内核缓冲区用于缓存外网端单元通过单向光纤隔离单元130发送的摆渡数据;从应用层网络数据包无锁缓冲区持续读取摆渡数据;当从应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从应用层网络数据包无锁缓冲区读取的摆渡数据落地到高io性能固态磁盘。本实施例将需要执行落地操作的摆渡数据落地到高io性能的固态硬盘,能够提升摆渡数据的传输效率,进而消除摆渡数据的丢包率。
42.本技术实施例提供了一种数据单向传输方法,由内网端单元执行,参考图2,图2是本技术实施例中一种数据单向传输方法的流程示意图,该方法包括:步骤s110:从内核缓冲区持续读取摆渡数据,并将从内核缓冲区读取的摆渡数据写入应用层网络数据包无锁缓冲区;其中,内核缓冲区用于缓存外网端单元通过单向光纤隔离单元130发送的摆渡数据。
43.步骤s120:从应用层网络数据包无锁缓冲区持续读取摆渡数据。
44.本实施例中,内网端单元可以通过自身预先安装的数据摆渡接收软件实现摆渡数据的处理。内网端单元中的数据摆渡接收软件利用数据接收线程从内核缓冲区持续的读取摆渡数据,将从内核缓冲区读取到的摆渡数据写入应用层网络数据包无锁缓冲区,内核缓冲区用于缓存外网端单元通过单向光纤隔离单元发送的摆渡数据。本实施例应用层网络数据包无锁缓冲区没有加锁解锁操作,将其作为接收到数据的缓冲区,应用层网络数据包无锁缓冲区可以是udp数据ringbuf缓冲区,当然还可以是其他的无锁缓冲区,本实施例不再进行限定,只要能实现本实施例的目的均在本技术的保护范围之内;接收线程接收到摆渡数据后,只管放到该缓冲区即可,再利用数据分发线程从该缓冲区去除数据,没有任何锁和等待操作,巧妙和高效的实现了两个线程间的数据传输,提高了数据从内核缓冲区收取消费的效率和速度,消除了内核缓冲区溢出丢包的可能性,避免了相关技术缓冲区竞争保护的锁操作,会让socket内核缓冲区的接收数据包接口与文件io等消费接口耦合在一起,降低从内核缓冲区中消费数据的效率的情况发生。
45.步骤s130:当从应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从应用层网络数据包无锁缓冲区读取的摆渡数据落地到高io性能固态磁盘。
46.本步骤中判断从应用层网络数据包无锁缓冲区读取的摆渡数据是落地文件数据还是转发文件数据。可以理解的是,内网端单元和外网端单元进行udp通讯是预先设置好私有通讯协议的,包括数据类型,其中,数据类型一种是需要落地的文件数据,一种是不需要落地直接转发到后台服务软件的数据,私有通讯协议当然还可以包括:任务id、目的服务模块、时间戳、传输方式、包的序号、文件包个数,文件名、数据的总长度、冗余数据等等,外网端单元发送给内网端单元的数据报文都是按照私有通讯协议组织好的数据报文。
47.如果是落地文件数据,则将从应用层网络数据包无锁缓冲区读取的摆渡数据落地
到高io性能固态磁盘。由于采用高io性能固态硬盘,提高了文件磁盘io的速率,进而能够提高消费应用层网络数据包缓冲区的数据的效率。
48.进一步的,在另一种可实现的实施方式中,数据单向传输方法还包括:步骤s140(附图未示出):当从应用层网络数据包无锁缓冲区读取的摆渡数据为转发文件数据时,调用进程间非阻塞的通讯接口将从应用层网络数据包无锁缓冲区读取的摆渡数据转发至相应的后台服务端。
49.具体地,当如果是转发文件数据,调用非阻塞的进程间通讯接口发送给相应的后台服务端,比如具有ftp文件同步模块的后台服务端或者邮件代理模块的后台服务端,然后继续循环从应用层网络数据包无锁缓冲区中消费数据出来,而后台服务端收到转发文件数据后,则跟进转发文件数据进行相应的业务处理。可见,本实施例调用非阻塞的进程间通讯接口将摆渡数据转发至相应的后台服务端,不用等待后台服务端的响应,直接将摆渡数据进行转发操作,调用非阻塞的进程间通讯接口的通信效率较高。
50.进一步的,为了进一步提高文件io性能,使网络io和文件磁盘io速率达到一个动态平衡,避免丢包的情况发生,步骤s130还包括步骤s131(附图未示出)、步骤s132(附图未示出)、步骤s133(附图未示出),其中:步骤s131:当从应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从应用层网络数据包无锁缓冲区读取的摆渡数据取出并写入应用层文件无锁缓冲区;其中,当从应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,调用应用层网络数据包无锁缓冲区的put接口存到应用层文件无锁缓冲区中,并循环从应用层网络数据包无锁缓冲区消费数据出来,put数据为无锁无等待操作;该应用层文件无锁缓冲区可以是文件数据ringbuf缓冲区。
51.步骤s132:判断应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定的数据累计量。
52.本步骤为了确定应用层文件无锁缓冲区的所有put数据是否为达到设定的数据累积量,该数据累积量可根据用户的实际需求进行设置,例如,该数据累积量可以是摆渡数据的数量、还可以是摆渡数据的数据长度是否构成完整数据的量,当然还可以是其他数量,本实施例不再进行限定,只要是能够实现本实施例的目的即可。
53.步骤s133:若达到设定的数据累计量,则将应用层文件无锁缓冲区的所有摆渡数据转存到文件后落地到高io性能固态磁盘,其中,所有摆渡数据包括从应用层网络数据包无锁缓冲区读取的摆渡数据。
54.若未达到数据累积量,则持续从应用层网络数据包无锁缓冲区消费摆渡数据并存入应用层文件无锁缓冲区,直至达到该数据累积量;然后,将满足条件的摆渡数据转存到文件后落地到高io性能固态磁盘。
55.具体的,应用层文件无锁缓冲区同时有摆渡文件写入和摆渡文件消费,数据分发线程通过网络io接收到的数据,而文件数据处理任务则使用文件io消费数据,但是应用层文件无锁缓冲区的缓存大小是固定的,若网络io性能比文件io性能大,就会出现应用层文件无锁缓冲区的数据溢出的情况,对应摆渡业务上就存在丢包情况,所以内网端单元采用高io性能固态磁盘,使网络io的速率和文件io的速率相差不大,达到一个动态平衡,这样就
不会出现丢包,可见,写入高io性能固态磁盘的数据为相对大容量文件,提高了文件io性能,使网络io和文件磁盘io速率达到一个动态平衡,避免丢包的情况发生。
56.可以理解的是,无论是内网端单元使用高io性能的硬件提高文件io的性能,或者降低外网端数据摆渡模块的udp发包速率,都是为了在内网端的数据摆渡模块的后端应用层网络数据包无锁缓冲区的生产消费的动态平衡,最终实现单向光闸的高速高稳定性的传输。
57.进一步的,将从应用层网络数据包无锁缓冲区读取的摆渡数据取出并写入应用层文件无锁缓冲区,包括:根据从应用层网络数据包无锁缓冲区读取的摆渡数据,得到文件名信息、数据长度信息、数据总长度信息、文件数据包总数、当前包序号;将从应用层网络数据包无锁缓冲区读取的摆渡数据写入与文件名信息对应的应用层文件无锁缓冲区;对应的,判断应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定的数据累计量,包括:判断文件名信息对应的应用层文件无锁缓冲区的所有摆渡数据的数据长度是否构成数据总长度。
58.其中,本实施例从读取的摆渡数据中提取包头信息,对包头信息进行解析,得到文件名信息、数据长度信息、数据总长度信息、文件数据包总数、当前包序号。具体地,从应用层网络数据包无锁缓冲区读取摆渡数据,当不存在与摆渡数据对应的文件名信息的应用层文件无锁缓冲区时,自动建文件名信息对应的应用层文件无锁缓冲区。可以理解是,同一文件名信息对应的摆渡数据均存储至该文件名信息对应的应用层文件无锁缓冲区。
59.具体地,根据摆渡数据的数据长度信息与数据总长度信息,判断相同文件名对应的应用层文件无锁缓冲区内所有摆渡数据的数据长度是否构成数据总长度。对于本技术实施例,数据长度信息用于表示摆渡数据的长度,数据总长度信息用于表示完整摆渡数据的总长度。例如当摆渡数据a的长度信息为20-65,完整摆渡数据的总长度信息为0-100时,由于20-65为0-100的一部分,数据长度信息与数据总长度信息不相同,因此确定摆渡数据不是完整摆渡数据;当数据长度信息与数据总长度信息相同时,则确定摆渡数据为完整摆渡数据。
60.可以理解的是,当本实施例循环从应用层文件无锁缓冲区中循环get消费数据出来,然后判断该数据对应的文件数据是否接收齐全,如果接收齐全,调用文件io进行文件落地操作,以确定是否是完整数据,保证了落地文件的完整性。
61.在另一种可实现的情况中,还可以是根据文件数据包总数、当前包序号确定应用层文件无锁缓冲区存储的摆渡数据是否构成完整的数据。通过解析摆渡数据的包头信息,得到文件数据包总数和当前包序号,判断应用层文件无锁缓冲区的所有文件名信息相匹配的摆渡数据的数量是否达到预设数量,若达到预设数量,则将文件名信息相匹配,且摆渡数据的数量达到预设数量的摆渡数据写入高io性能固态硬盘,避免了多次连续的将小数据写入高io性能固态硬盘造成耗时长的情况。
62.进一步的,判断应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定的数据累计量,包括:判断应用层文件无锁缓冲区的所有摆渡数据的数量是否达到预设数量。
63.具体地,判断应用层文件无锁缓冲区的所有摆渡数据的数量是否达到预设数量。达到预设数量,则以将预设数量对应的大数据转存到文件后落地到高io性能固态磁盘,由
于磁盘写小数据的性能远远低于写相对大容量文件的性能,因此,本方案提升了后端文件io消费能力。
64.进一步的,若达到设定数据累计量,则将应用层文件无锁缓冲区的所有摆渡数据转存到文件后落地到高io性能固态磁盘,包括:若达到预设数量,则确定应用层文件无锁缓冲区的摆渡数据中的完整的摆渡数据;将应用层文件无锁缓冲区的所有完整的摆渡数据转存到文件后落地至高io性能固态磁盘。
65.本实施例中,当达到设定数据累计量后,先确定应用层文件无锁缓冲区中的完整的摆渡数据,将完整的摆渡数据落转存到文件然后落地,保证了落地文件的完整性。
66.进一步的,从内核缓冲区持续读取摆渡数据,包括:从socket非阻塞缓冲区持续读取摆渡数据。
67.其中,实际上内核的socket非阻塞缓冲区也是类似一个ringbuf的数据结构,加大这个接收缓冲区的大小,也是为了让其接收数据生产、消费有更大的动态缓冲区间,进而极大降低突发因素引起cpu调度异常而来不及消费缓冲区的数据,进而导致的缓冲区溢出丢包的可能性。
68.具体地,内网端单元接收到外网端单元发送的业务数据后,将业务数据写入内核socket非阻塞缓冲区,从内核socket非阻塞缓冲区持续读取摆渡数据,然后直接将读取的摆渡数据写入到应用层网络数据包无锁缓冲区,将数据写入后不需要等待后端消费数据的结果,持续从内核缓冲区读取数据,从而提高内核缓冲区消费数据的效率。
69.进一步地,本实施例中内核缓冲区的大小设置为200mb。具体的,本实施例将内核缓冲区的大小设置为最大值200mb,提高了内核缓冲区的容量,进而提高了写入的数据总量,消除了摆渡数据在内核缓冲区发生丢包的可能性,能够在摆渡数据数量较大时,提高了接收端的应用层软件一定的缓冲区数据接收消费的时限。
70.请参考图3,图3为本技术实施例提供的一种数据交互的示意图,本技术实施例中,内外网均设置有业务服务模块比如从外网文件服务器以及外网邮件服务器,通过内端处理系统、外网端处理系统以及单向光纤隔离单元组成,通过协议隔离、数据落地的形式以信息“摆渡”的方式实现数据交换。外网端单元通过单向光纤隔离单元发送摆渡数据经过udp协议到达内网端单元;摆渡数据通过内网端的光网口进入内网端单元的内核socket缓冲区;内网端单元从内核缓冲区循环读取摆渡数据,并将从内核缓冲区读取的摆渡数据写入应用层网络数据包无锁缓冲区,应用层网络数据包无锁缓冲区具体可以是udp数据ringbuf缓冲区;从udp数据ringbuf缓冲区持续读取摆渡数据;判断数据报文是转发类型的报文还是文件落地报文,如果是转发类型的数据,调用非阻塞的进程间通讯接口发送给相应的后台服务端进行相应的业务处理;如果是需要落地的文件类型数据,就调用udp数据ringbuf缓冲区的put接口存到文件数据ringbuf中,然后直接继续循环从udp数据ringbuf中消费数据出来。(ringbuf的put数据和get数据的操作都是无锁无等待操作);循环从文件数据ringbuf中循环get消费数据报文出来,然后判断该数据报文对应的文件数据是否接收齐全,如果接收齐全,调用文件io进行文件落地操作至高io性能固态磁盘。如果该数据报文对应的文件数据还没接收完,直接返回继续循环get消费数据报文。
71.上述实施例从方法流程的角度介绍一种数据单向传输方法,下述实施例从虚拟模块或者虚拟单元的角度介绍了一种数据单向传输装置,方法与装置相互照应,具体详见下
述实施例。
72.本技术实施例提供一种数据单向传输装置,请参考图4,图4为本技术实施例提供的一种数据单向传输装置400的结构示意图,包括:数据读取模块410、数据获取模块420和落地模块430,其中,数据读取模块410,用于从内核缓冲区持续读取摆渡数据,并将从内核缓冲区读取的摆渡数据写入应用层网络数据包无锁缓冲区;其中,内核缓冲区用于缓存外网端单元通过单向光纤隔离单元发送的摆渡数据;数据获取模块420,用于从应用层网络数据包无锁缓冲区持续读取摆渡数据;落地模块430,用于当从应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从应用层网络数据包无锁缓冲区读取的摆渡数据落地到高io性能固态磁盘。
73.在一种可实现的实施方式中,落地模块430,包括:写入单元,用于当从应用层网络数据包无锁缓冲区读取的摆渡数据为落地文件数据时,将从应用层网络数据包无锁缓冲区读取的摆渡数据取出并写入应用层文件无锁缓冲区;判断单元,用于判断应用层文件无锁缓冲区的所有摆渡数据的数据累计量是否达到设定的数据累计量;落地单元,用于若达到设定的数据累计量,则将应用层文件无锁缓冲区的所有摆渡数据转存到文件后落地到高io性能固态磁盘,其中,所有摆渡数据包括从应用层网络数据包无锁缓冲区读取的摆渡数据。
74.在一种可实现的实施方式中,写入单元,包括:信息获取子单元,用于根据从应用层网络数据包无锁缓冲区读取的摆渡数据,得到文件名信息、数据长度信息、数据总长度信息、文件数据包总数、当前包序号;第一写入子单元,用于将从应用层网络数据包无锁缓冲区读取的摆渡数据写入与文件名信息对应的应用层文件无锁缓冲区;对应的,判断单元,包括:第一判断子单元,用于判断文件名信息对应的应用层文件无锁缓冲区的所有摆渡数据的数据长度是否构成数据总长度。
75.在一种可实现的实施方式中,判断单元,包括:第二判断子单元,用于判断应用层文件无锁缓冲区的所有摆渡数据的数量是否达到预设数量。
76.在一种可实现的实施方式中,写入单元,包括:完整数据确定子单元,用于若达到预设数量,则确定应用层文件无锁缓冲区的摆渡数据中的完整的摆渡数据;第二写入子单元,用于将应用层文件无锁缓冲区的所有完整的摆渡数据转存到文件后落地至高io性能固态磁盘。
77.在一种可实现的实施方式中,读取模块410,具体用于:从socket非阻塞缓冲区持续读取摆渡数据。
78.在一种可实现的实施方式中,还包括:转发模块,用于当从应用层网络数据包无锁缓冲区读取的摆渡数据为转发文件数
据时,调用进程间非堵塞的通讯接口将从应用层网络数据包无锁缓冲区读取的摆渡数据转发至相应的后台服务端。
79.下述实施例提供了一种内网端单元,与上述方法部分相互照应,具体详见下述实施例。
80.本技术实施例中提供了一种内网端单元,如图5所示,图5所示的内网端单元120包括:处理器121和存储器123。其中,处理器121和存储器123相连,如通过总线122相连。可选地,内网端单元120还可以包括收发器124。需要说明的是,实际应用中收发器124不限于一个,该内网端单元120的结构并不构成对本技术实施例的限定。
81.处理器可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器121也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
82.总线可包括一通路,在上述组件之间传送信息。总线可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
83.存储器可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
84.存储器用于存储执行本技术方案的应用程序代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,以实现前述方法实施例所示的内容。
85.其中,内网端单元包括但不限于:移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。还可以为服务器等。图5示出的内网端单元仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
86.本技术实施例提供的一种内网端单元适用于上述方法实施例。此处不再进行赘述。下述实施例提供了一种单向隔离光闸系统,具体详见下述实施例。
87.外网端单元,用于获取摆渡数据;如上述的内网端单元;与外网端单元和内网端单元连接的单向光纤隔离单元,用于将外网端单元的摆渡数据单向传输至内网端单元。
88.进一步的,为了保证摆渡数据的安全性,外网端单元还用于:接收摆渡数据,并提
取摆渡数据的关键字信息;将关键字信息与预设的病毒库中的病毒关键字信息匹配;若关键字信息与病毒关键字信息相匹配,则丢弃摆渡数据;若关键字信息与病毒关键字信息不匹配,则将发送的摆渡数据至内网端单元。
89.具体的,接收从外网文件服务器以及外网邮件服务器通过外网端服务软件抓取的业务数据,该业务数据作为摆渡数据;提取摆渡数据的关键字信息具体可以包括:通过解析读取的摆渡数据的数据部分,提取关键字信息,例如在提取关键字信息时常常采用自带的extract_tags方法,在遍历摆渡数据内容时,获得关键字信息;也可以提前在摆渡数据的包头信息中设置一个字节用来表示该摆渡数据的关键字信息。且,预设的病毒关键字信息包括常见携带病毒的关键字信息库,能够通过关键字信息对比,确定摆渡数据是否携带病毒。
90.当外网端的摆渡数据写入外网端内核缓冲区之前,对摆渡数据的安全性进行监测,当确定摆渡数据的关键字信息与病毒库中的关键字不匹配时,将发送的摆渡数据至所述内网端单元;否则将摆渡数据丢弃,增强了摆渡数据的安全性。
91.本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。与现有技术相比,本技术实施例中,内网端单元设置应用层网络数据包无锁缓冲区,可同时进行摆渡数据的读操作和写操作,没有等待时间,极大提高了从内核缓冲区消费摆渡数据的效率,消除了内核缓冲区数据溢出情况发生的可能性,提高了摆渡数据的稳定性;当从应用层网络数据包无锁缓冲区读取摆渡数据后,将该摆渡数据落地到高io性能固态硬盘,由于采用高io性能固态硬盘,提高了文件磁盘io的速率,进而能够提高消费应用层网络数据包缓冲区的数据的效率。
92.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
93.以上仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献