发明内容
第一方面,本发明提供一种文件检测方法,用以解决现有技术中文件模块执行文件检测过程中资源占用较高的缺陷,实现文件的高效检测。
本发明提供一种文件检测方法,包括:
接收第一文件的检测请求;其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;
根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,所述第一检测微服务用于对文件进行预设检测类型的检测,所述第一检测微服务包括多个能够独立完成检测的子服务;
根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;
调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
根据本发明提供的一种文件检测方法,所述第一文件包括多个文件;所述第一检测微服务包括多个检测微服务;
相应的,所述根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务,包括:
所述多个检测微服务中的任意一个检测微服务,根据检测顺序获取文件或根据调用顺序从前一个检测微服务的子服务获取文件;其中,所述检测顺序用于描述所述多个文件被检测的先后顺序,所述调用顺序用于描述所述多个检测微服务被调用的先后顺序;
判断所述任意一个检测微服务是否存在处于“空闲状态”的子服务;
在存在处于“空闲状态”的子服务的情况下,为所获取的文件分配所述处于“空闲状态”的子服务,直至为所有已获取的文件分配所述处于“空闲状态”的子服务或所有处于“空闲状态”的子服务均已被分配。
根据本发明提供的一种文件检测方法,在不存在处于“空闲状态”的子服务的情况下,采用“最近最少使用算法”为所获取的文件分配子服务。
根据本发明提供的一种文件检测方法,所述检测顺序根据所述多个文件各自的检测请求时间确定,或根据所述多个文件各自的优先级确定。
根据本发明提供的一种文件检测方法,在所述根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务之前,方法还包括:
在需要为检测微服务添加子服务的情况下,根据所接收到的所述检测微服务中的子服务的注册请求,注册所述检测微服务的子服务,以使得所述检测微服务的子服务能够向文件提供预设检测类型的检测服务。
根据本发明提供的一种文件检测方法,方法还包括:
在检测微服务中的子服务处于“活跃状态”的情况下,向所述检测微服务的子服务发送保活探测请求;
在接收到所述检测微服务的子服务所回复的活跃状态消息后,根据所述活跃状态消息确定所述检测微服务的子服务是否处于活跃状态;其中,所述活跃状态消息是所述检测微服务的子服务根据所述保活探测请求生成的;
或,
在检测微服务中的子服务处于“活跃状态”的情况下,在接收到所述检测微服务的子服务周期性发送的保活消息后,根据所述保活消息将所述检测微服务的子服务维持在活跃状态。
第二方面,本发明还提供一种文件检测方法,方法包括:
接收第一文件;根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;
发送第一文件的检测请求,以使得微服务管理器根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果;其中,所述第一检测微服务用于对文件进行预设检测类型的检测,所述第一检测微服务包括多个能够独立完成检测的子服务;
接收所述第一文件的检测结果。
第三方面,本发明还提供一种文件检测装置,包括:业务模块和微服务管理器;
所述微服务管理器,用于执行上述第一方面任一项所述的文件检测方法的步骤;
所述业务模块,用于执行上述第二方面所述的文件检测方法的步骤。
第四方面,本发明还提供一种跨域传输系统,包括业务模块、微服务管理器以及检测微服务;其中,所述业务模块包括文件接收单元与查询接口;所述微服务管理器包括检测请求接收单元、检测微服务确定单元、子服务确定单元以及子服务调用单元;所述检测微服务包括子服务;
所述文件接收单元用于接收第一文件;
所述查询接口用于根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;
检测请求接收单元用于接收第一文件的检测请求;
检测微服务确定单元用于根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,所述第一检测微服务用于对文件进行预设检测类型的检测,所述第一检测微服务包括多个能够独立完成检测的子服务;
子服务确定单元用于根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;
子服务调用单元用于调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
第五方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面或第二方面任一项所述文件检测方法的步骤。
第六方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面或第二方面任一种所述文件检测方法的步骤。
第七方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,其特征在于,所述指令在被执行时用于实现如上述第一方面或第二方面任一项所述文件检测方法的步骤。
本发明提供的一种文件检测方法、装置、电子设备、程序及存储介质,通过为第一文件分配对应的第一检测微服务中的第一子服务,并调用所述第一子服务对第一文件进行检测,减少了业务模块执行文件检测的资源占用,实现了文件的高效检测。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有技术中,前置服务器为外部网络中的数据源,后置服务器为内部网络中的数据的目的端,跨域传输设备从前置服务器接收文件后,发送给各业务模块,各业务模块分别启动检测引擎对接收到的文件进行检测,并将通过检测的文件转发至后置服务器。随着业务种类扩充,检测引擎数量增加,将出现设备负载过高资源不足的问题。
图1为本发明的系统部署示意图,如图1所示,针对上述问题,本发明提出基于微服务的文件过滤方案,将检测引擎归类整合为独立服务(即微服务),通过微服务管理器进行管理,并向业务模块提供服务调用,自适应地分配了系统资源,解决了跨域传输设备上的大规模文件检测过程中系统资源占用较高的问题。
下面结合图1-图9描述本发明的一种文件检测方法、装置、电子设备、程序及存储介质。
图2为本发明提供的文件检测方法的流程图之一,该方法应用于微服务管理器,如图2所示,该方法包括:
S21、接收第一文件的检测请求;其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型。
具体地,业务模块接收到第一文件后,向微服务管理器请求对应检测类型的检测服务,例如对于数据库文件,相应检测类型可以为文本提取、类型检测、病毒检测、内容检测等。需要说明的是,第一文件可以包括多个文件,此时相应的检测请求也为多个。
可以理解的是业务模块可以有多个子模块,用于处理不同类型的业务数据,例如可以包括文件业务模块、邮件业务模块、数据库业务模块等。
微服务管理器接收业务模块发出的关于第一文件的检测请求,用于执行后续检测。
S22、根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,所述第一检测微服务用于对文件进行预设检测类型的检测,所述第一检测微服务包括多个能够独立完成检测的子服务。
具体地,微服务管理器中提供多种预设检测类型的检测微服务,用于以接口的形式向业务模块提供服务,对文件进行预设检测类型的检测。每一预设检测类型的检测微服务包括一个或多个能够独立完成检测的子服务,用于扩展提升检测能力,具体的子服务数量可以根据系统资源以及检测负荷大小进行预先设置。
根据第一文件的检测请求中携带的第一文件对应的检测类型,从多种预设检测类型的检测微服务中确定对应检测类型的第一检测微服务。
S23、根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务。
具体地,检测微服务中包括多个能独立完成预设检测类型的子服务。根据第一检测微服务中的子服务的状态信息,为第一文件分配第一检测微服务中状态可用的子服务。
子服务的状态信息用于记录子服务的工作状况,便于微服务管理器进行管理。例如状态信息可以包括“空闲状态”、“检测状态”、“下线状态”三种状态,“空闲状态”意味着子服务当前没有执行检测,可被调用;“检测状态”意味着子服务正在执行检测;“下线状态”意味着子服务异常,状态不可用。当然,子服务状态也可以直接分为“空闲状态”与“非空闲状态”,还可以直接分为“活跃状态”(即空闲状态或检测状态)与“非活跃状态”,具体状态信息可按需求设置,此处不作限制。
S24、调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
具体地,微服务管理器以接口形式调用第一检测微服务中的第一子服务对第一文件进行检测,第一子服务生成检测结果后,将检测结果返回至业务模块。检测结果中可以包含:检测服务类型、文件信息、检测结果、字符串信息等内容。其中,检测结果只是一个代表检测通过与否的数值。字符串则记录检测的详细信息,用于向业务模块反馈,以便记录在威胁日志中。字符串例如:“类型doc/docx禁止”、“检测到xxx病毒”等等。
本实施例中,通过为第一文件分配对应的第一检测微服务中的第一子服务,并调用所述第一子服务对第一文件进行检测,减少了业务模块执行文件检测的资源占用,实现了文件的高效检测。
基于上述实施例,在一个实施例中,所述第一文件包括多个文件;所述第一检测微服务包括多个检测微服务;
相应的,所述根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务,包括:
所述多个检测微服务中的任意一个检测微服务,根据检测顺序获取文件或根据调用顺序从前一个检测微服务的子服务获取文件;其中,所述检测顺序用于描述所述多个文件被检测的先后顺序,所述调用顺序用于描述所述多个检测微服务被调用的先后顺序;
判断所述任意一个检测微服务是否存在处于“空闲状态”的子服务;在存在处于“空闲状态”的子服务的情况下,为所获取的文件分配所述处于“空闲状态”的子服务,直至为所有已获取的文件分配所述处于“空闲状态”的子服务或所有处于“空闲状态”的子服务均已被分配。
具体地,第一文件的多个文件需要进行检测,检测顺序描述了多个文件被检测的先后顺序。第一文件所对应的第一检测微服务中包括多个检测微服务,调用顺序描述了所述多个检测微服务被调用对所述多个文件进行检测的先后顺序。
对于第一检测微服务中首个被调用的检测微服务,根据检测顺序获取第一文件中的待检测文件进行检测。对于第一检测微服务中的非首个被调用的检测微服务,则根据调用顺序从前一个检测微服务的子服务中获取待检测文件。
获取文件后,判断当前检测微服务的子服务中是否存在“空闲状态”的子服务,若存在,则按检测顺序为获取到的待检测文件分配处于“空闲状态”的子服务。可以理解的是当获取的待检测文件均分配完毕,或者“空闲状态”的子服务分配完毕,则无法继续分配,需要等待再次出现待检测文件或“空闲状态”的子服务。
例如,第一文件中包括文件1、文件2两个文件,需要进行A、B、C、D四项文件检测,四项检测中每项检测微服务有3个子服务,且子服务均为“空闲状态”。微服务管理器确定检测检测顺序为:检测文件1---文件2,调用顺序为:A---B---C---D。则先为文件1分配子服务A1进行检测,为文件2分配A2检测,此时待检测文件分配完毕,子服务A3保持“空闲状态”;A项检测完毕后,为文件1分配子服务B1进行检测,为文件2分配B2检测,此时待检测文件分配完毕,子服务B3保持“空闲状态”,并依次类推直至A、B、C、D四项文件检测完毕。
又例如,第一文件中包括文件1-8共八个文件需要进行A、B、C、D四项文件检测,四项检测中每项检测微服务有2个子服务,且子服务均为“空闲状态”。微服务管理器确定检测检测顺序为:检测文件1---文件2---文件3---文件4---文件5---文件6---文件7---文件8,调用顺序为:A---B---C---D。则先为文件1分配子服务A1进行检测,为文件2分配A2检测,此时A项检测的“空闲状态”子服务分配完毕,文件3-8则等待出现“空闲状态”的A项检测子服务。文件1、文件2的A项检测完毕后,微服务管理器为文件1分配子服务B1进行检测,为文件2分配B2检测,同时子服务A1、A2释放为“空闲状态”,微服务管理器则为文件3分配子服务A1进行检测,为文件4分配A2检测,此时A项检测的“空闲状态”子服务分配完毕,文件5-8则等待出现“空闲状态”的A项检测子服务。后续步骤依次类推直至第一文件中的八个文件的A、B、C、D四项检测执行完毕。可以理解的是,当出现文件3、文件4的A项检测执行完毕,而文件1、文件2还在执行B项检测,则文件3、文件4同样需要等待B项检测的子服务释放为“空闲状态”。
本实施例中,根据第一文件中的多个文件的检测顺序、第一检测微服务的多个子服务的调用顺序结合子服务的状态信息,准确高效地调度了检测资源。
基于上述任一实施例,在一个实施例中,在不存在处于“空闲状态”的子服务的情况下,采用“最近最少使用算法”为所获取的文件分配子服务。
具体地,以第四检测微服务为例进行说明,第四检测微服务不存在处于“空闲状态”的子服务则说明第四检测微服务处于满负荷状态,其所有子服务均处于执行检测状态。此时采用“最近最少使用算法”(LRU)为所获取的文件分配子服务。即,将检测顺序最靠前(“最近”)的未分配的文件匹配给第四子服务排队进行检测,其中,第四子服务为第四检测微服务的所有子服务中已分配到的文件最少的子服务(“最少”)。
本实施例中,在不存在处于“空闲状态”的子服务的情况下,以“最近最少使用”为原则为所获取的文件分配子服务,均衡地调度子服务,分摊请求压力,提高了检测资源的利用率。
基于上述任一实施例,在一个实施例中,所述检测顺序根据所述多个文件各自的检测请求时间确定,或根据所述多个文件各自的优先级确定。
具体地,检测顺序可以根据多个文件各自的检测请求时间确定,也就是检测请求时间在前的文件检测顺序靠前,检测请求时间在后的文件检测顺序靠后。
检测顺序还可以根据多个文件各自的优先级确定,先检测优先级较高的文件,后检测优先级较低的文件。例如,数据库文件A的优先级为3,邮件文件B的优先级为5,则先检测文件B,后检测文件A。
本实施例中,检测顺序根据多个文件各自的检测请求时间确定或根据所述多个文件各自的优先级确定,按业务需求执行检测,提高了检测效率,同时满足了不同业务的差异化检测性能需求。
基于上述任一实施例,在一个实施例中,在所述根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务之前,方法还包括:
在需要为检测微服务添加子服务的情况下,根据所接收到的所述检测微服务中的子服务的注册请求,注册所述检测微服务的子服务,以使得所述检测微服务的子服务能够向文件提供预设检测类型的检测服务。
具体地,子服务在初次启动或后续新增等需要为检测微服务添加子服务的情况下,需要向微服务管理器提交注册请求,注册请求中包括子服务的检测类型和子服务的标识信息(UUID),子服务的检测类型用于确定子服务可以执行检测的具体种类,子服务的标识信息用于区分相同检测类型或不同检测类型之间的多个子服务。
检测微服务在需要添加子服务的情况下向微服务管理器提交注册请求便于微服务管理器对子服务进行管理,使得所述检测微服务的子服务能够向文件提供预设检测类型的检测服务。
本实施例中,通过接收检测微服务中的子服务的注册请求,方便对子服务进行管理调度,提高调度效率。
基于上述任一实施例,在一个实施例中,方法还包括:
在检测微服务中的子服务处于“活跃状态”的情况下,向所述检测微服务的子服务发送保活探测请求;
在接收到所述检测微服务的子服务所回复的活跃状态消息后,根据所述活跃状态消息确定所述检测微服务的子服务是否处于活跃状态;其中,所述活跃状态消息是所述检测微服务的子服务根据所述保活探测请求生成的;
或,
在检测微服务中的子服务处于“活跃状态”的情况下,在接收到所述检测微服务的子服务周期性发送的保活消息后,根据所述保活消息将所述检测微服务的子服务维持在活跃状态。
具体地,微服务管理器可以主动向子服务发送请求,以确定子服务状态:微服务管理器向检测微服务的当前记录为“活跃状态”的子服务发送保活探测请求,检测微服务的子服务在接收到保活探测请求后,根据自身的状态生成活跃状态消息并发送给微服务管理器,微服务管理器在接收到第三检测微服务的子服务所回复的活跃状态消息后即可确定检测服务的子服务的活跃状态。
微服务管理器还可以被动接收子服务发送的保活消息,以确定子服务的活跃状态:
检测微服务的子服务周期性地向微服务管理器发送保活消息,微服务管理器根据保活消息将检测微服务的当前记录为“活跃状态”的子服务继续维持为活跃状态。活跃状态是指子服务为“空闲状态”,可以被调用,或者为“检测状态”,也就是正在执行检测。可以理解的是,超过的预设时间未收到保活消息,则判断第三检测微服务的子服务为“下线状态”。
本实施例中,通过向第三检测微服务的子服务发送保活探测请求或接收第三检测微服务的子服务周期性发送的保活消息,确定了第三检测微服务的活跃状态,便于对子服务进行准确分配。
基于上述任一实施例,在一个实施例中,所述微服务管理器通过服务调用器确定所述第一检测微服务中的子服务的状态信息;所述服务调用器中记录有各子服务的路径信息。
具体地,服务调用器用于记录并维护子服务的调用路径,微服务管理器可以根据服务调用器记录的子服务的路径信息向子服务发送保活探测请求,用于确定子服务的状态。另外还可以根据服务调用器记录的子服务的路径信息调用相应子服务执行检测任务。
基于上述任一实施例,在一个实施例中,所述服务调用器中统计有所有子服务的服务信息。
具体地,服务调用器统计有所有子服务的服务信息,例如服务类别、子服务数量、请求数、阻断数等,并以JSON形式将信息记录在数据库中,最终用于WebUI展示分析。例如,可以根据子服务数量,确定平台系统资源是否够用;根据阻断数量、检测数量,判断业务使用是否正常;结合威胁日志,判断业务是否正常。
基于上述任一实施例,在一个实施例中,所述接收第一文件的检测请求,包括:
接收业务模块通过ZeroMQ消息队列发送的所述第一文件的检测请求。
具体地,ZeroMQ消息队列能够存储、管理检测请求,实现检测请求的顺序投递。对于检测请求较多,请求量超出系统承载能力的情况,ZeroMQ还能够作为一个中转站,减小微服务管理器的处理压力。
基于上述任一实施例,在一个实施例中,所述调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果,包括:
通过RPC接口调用第一检测微服务中的第一子服务对所述第一文件进行检测。
具体地,基于Protocol自定义协议实现的RPC方法,定义了文件数据的安全检测的RPC通讯协议。通过该协议,可以实现子服务的调用。其具体的实现方式不受编程语言限制,例如C、C++、JAVA、Python等语言。
另外,Protocol自定义协议字段可以包含:全路径文件名、服务类型、子服务的标识信息(UUID)、标志位信息(用于多类别查询,标识检测服务类型)、文件类型信息(可选)、文件别名信息(可选)、查询结果等。上述查询结果可以包括:执行成功、默认允许(标识策略属性,例如,仅允许docx通过,其它类型禁止)、默认禁止(标识策略属性,例如,仅禁止docx文件,其它类型允许)、白名单命中(表示配置了默认允许时,命中的结果,用于应用模块报威胁日志用)、黑名单命中(表示配置了默认禁止时,命中的结果,用于应用模块报威胁日志用)、超时、错误。
本实施例中,通过RPC接口调用第一检测微服务中的第一子服务对所述第一文件进行检测,实现了检测服务的调用,减少了业务模块执行文件检测的资源占用。
图3为本发明提供的文件检测方法的流程图之二,该方法应用于业务模块,如图3所示,该方法包括:
S31、接收第一文件;根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型。
具体地,跨域传输设备的文件接收模块在接收到前置服务器发送的数据后进行处理得到第一文件,并发送给业务模块。业务模块在接收到第一文件后,根据第一文件的格式生成第一文件的检测请求,检测请求中包括第一文件所需要进行检测的类型,第一文件的检测类型可以为一种或多种。例如,确定第一文件是格式为“CSV”的数据库文件,则第一文件的检测类型可以是类型过滤、病毒过滤、内容过滤。
第一文件可以包括多个文件,此时相应的检测请求也为多个。
业务模块可以有多个子模块,用于处理不同类型的业务数据,例如可以包括文件业务模块、邮件业务模块、数据库业务模块等。
S32、发送第一文件的检测请求,以使得微服务管理器根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果;其中,所述第一检测微服务用于对文件进行预设检测类型的检测,所述第一检测微服务包括多个能够独立完成检测的子服务。
具体地,业务模块向微服务管理器发送第一文件的检测请求,第一文件的检测请求中携带有第一文件请求检测的检测类型信息,以便于微服务管理器根据第一文件的检测请求,确定与所述第一文件对应的第一检测微服务,为第一文件分配第一检测微服务中的第一子服务,并调用所述第一检测微服务中的第一子服务对所述第一文件进行检测。
微服务管理器具体确定与所述第一文件对应的第一检测微服务、为第一文件分配第一检测微服务中的第一子服务以及调用所述第一检测微服务中的第一子服务对所述第一文件进行检测的方法请参照之前实施例中的描述,此处不再赘述。
S33、接收所述第一文件的检测结果。
具体地,业务模块接收微服务管理器返回的第一文件的检测结果,根据检测结果确定文件是否符合规范,是否对文件进行跨域数据传输。
本实施例中,通过接收第一文件,根据所述第一文件的格式生成所述第一文件的检测请求,并发送给微服务管理器使得微服务管理器根据所述第一文件的检测请求,调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果,减少了业务模块执行文件检测的资源占用,实现了文件的高效检测。
基于上述任一实施例,在一个实施例中,所述根据所述第一文件的格式生成所述第一文件的检测请求,包括:
根据所述第一文件的格式通过查询接口确定所述第一文件所对应的检测类型;
根据所述第一文件所对应的检测类型生成所述第一文件的检测请求;其中,所述查询接口根据文件格式及安全策略组合封装了相应检测类型的检测微服务。
具体地,查询接口能够根据文件格式,并结合安全策略确定相应的检测类型、检测顺序,以便生成相应检测类型的检测请求。例如,对于文件内容过滤的场景,安全策略为需要对文本内容过滤,对于纯文本格式文件例如txt、htm等,则查询接口确定其仅需进行内容过滤。对于办公文档文件例如ppt、excel等,则查询接口确定需要先进行文本提取,然后再进行内容过滤。
本实施例中,通过查询接口根据文件格式及安全策略对检测微服务进行二次封装,业务模块可以通过调用查询接口自动确定检测类型,提高了文件检测的效率。
基于上述任一实施例,在一个实施例中,所述查询接口设置为阻塞接口或非阻塞接口。
具体地,图4为本发明提供的文件检测方法的业务模块、微服务管理器、子服务的交互示意图,如图4所示,各个业务模块通过二次封装的查询接口确定文件的检测类型,并通过微服务管理器分配及调用的相应检测类型的检测微服务中的子服务对文件进行检测。查询接口可以设置为阻塞接口或非阻塞接口以支持业务模块调用子服务对第一文件进行检测检测。
其中,阻塞接口:即每次仅允许执行单个文件的单项的检测,一个文件的所有检测项检测完毕后,才允许执行下一个文件的检测。
阻塞接口应用示例如下:图5为本发明提供的一种文件检测方法中阻塞接口模式下文件检测的时序示意图,如图5所示,业务模块根据文件1的文件格式通过查询接口确定需要进行A、B、C、D四项检测,并向微服务管理器发送A、B、C、D四项检测的检测请求。微服务管理器接收到文件1的检测请求后,确定子服务A0、B0、C0、D0为“空闲状态”,则微服务管理器分别调用子服务A0、B0、C0、D0对文件1按顺序进行检测,文件1调用D0检测完毕后,下一个文件才可以通过二次封装的查询接口调用子服务进行检测。
非阻塞接口:即每次允许执行多个文件的检测,一个文件的某项检测完成后释放该检测的子服务接口,该检测的子服务接口可立刻用于其他待检测文件进行检测。非阻塞接口能支持多个文件的同步顺序检测,提高了第一文件包括多个子文件情况下的检测效率。
非阻塞接口应用示例如下:图6为本发明提供的一种文件检测方法中非阻塞接口模式下文件检测的时序示意图之一,如图5所示,业务模块根据文件1、文件2、文件3、文件4的格式通过查询接口确定需要进行A、B、C、D四项检测,并向微服务管理器请求A、B、C、D四项检测。微服务管理器接收到文件1、文件2、文件3、文件4的检测请求后,确定子服务A0、B0、C0、D0为“空闲状态”。则A0先对文件1进行检测,文件1的A0检测完毕后依次进行B0、C0、D0检测。文件2在确定文件1检测完毕后A0释放为“空闲状态”,则进入A0检测,并依次在文件1进行B0、C0、D0检测完毕后,依次进入B0、C0、D0检测。同理,文件3在文件2的A0检测完毕后进入A0检测,文件4在文件3的A0检测完毕后进入A0检测。
对于检测微服务中的子服务为多个的情况,非阻塞接口应用的另一示例如下:图7是本发明提供的一种文件检测方法中非阻塞接口模式下文件检测的时序示意图之二,如图6所示,A、B、C、D四项检测每种检测微服务包含2个子服务。有文件1-8共八个文件需要进行A、B、C、D四项检测。则非阻塞接口调用安排如下:文件1先调用A0进行检测,文件2先调用A1进行检测,检测完毕后文件1依次进行B0、C0、D0检测,文件2依次进行B1、C1、D1检测。文件3在确定文件1检测完毕后,A0释放为“空闲状态”,则进入A0检测,并依次在文件1进行B0、C0、D0检测完毕后,依次进入B0、C0、D0检测。文件4在确定文件2检测完毕后,A1释放为“空闲状态”,则进入A1检测,并依次在文件2进行B1、C1、D1检测完毕后,依次进入B1、C1、D1检测,并依次类推文件5-8先后进行检测。可以理解的是文件7、8进入检测后各检测微服务达到最大负荷状态,微服务利用率达到最高。
本实施例中,通过阻塞接口、非阻塞接口调度确定了文件的检测过程,提高了文件检测效率以及检测资源利用率。
本发明还提供一种文件检测装置,下文描述的文件检测装置与上文描述的文件检测方法可相互对应参照。
图8是本发明提供的一种文件检测装置的结构示意图,如图8所示,该装置包括业务模块81和微服务管理器82;所述微服务管理器82,用于执行之前实施例所描述的微服务管理器执行的文件检测方法的步骤;所述业务模块81,用于执行之前实施例所描述的业务模块执行的文件检测方法的步骤。
具体地,业务模块81用于接收第一文件;根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;发送第一文件的检测请求,以使得微服务管理器根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果;其中,所述检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;接收所述第一文件的检测结果。
微服务管理器82用于接收第一文件的检测请求;其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
业务模块81执行的文件检测方法的步骤以及微服务管理器82执行的文件检测方法的细节请参照之前实施例的记载,此处不再赘述。
本实施例中,基于微服务进行文件检测,将检测引擎归类整合为独立服务(即微服务),通过微服务管理器进行管理,并向业务模块提供服务调用,自适应地分配了系统资源,解决了跨域传输设备上的大规模文件检测过程中系统资源占用较高的问题。
本发明还提供一种跨域传输系统,图9是本发明提供的一种跨域传输系统的结构示意图,如图9所示,该跨域传输系统包括业务模块81、微服务管理器82以及检测微服务83;其中,所述业务模块81包括文件接收单元811与查询接口812;所述微服务管理器82包括检测请求接收单元821、检测微服务确定单元822、子服务确定单元823以及子服务调用单元824;所述检测微服务83包括子服务831;
所述文件接收单元811用于接收第一文件;
所述查询接口812用于根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;
检测请求接收单元821用于接收第一文件的检测请求;
检测微服务确定单元822用于根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,所述第一检测微服务用于对文件进行预设检测类型的检测,所述第一检测微服务包括多个能够独立完成检测的子服务;
子服务确定单元823用于根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;
子服务调用单元824用于调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
具体地,跨域传输系统中在接收到前置服务器发送的数据进行处理,并将处理后的数据利用业务模块81、微服务管理器82以及检测微服务83进行检测,根据检测结果确定文件是否符合规范,是否对文件进行跨域数据传输。业务模块81、微服务管理器82以及检测微服务83的具体结构及执行的文件检测方法请参照前述实施例,此处不再赘述。
本实施例中,基于微服务进行文件检测,将检测引擎归类整合为独立服务(即微服务),通过微服务管理器进行管理,并向业务模块提供服务调用,自适应地分配了系统资源,解决了跨域传输设备上的大规模文件检测过程中系统资源占用较高的问题。
本发明还提供一种电子设备,图10为本发明提供的电子设备的结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(CommunicationsInterface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行之前实施例所描述的文件检测方法,该方法包括:接收第一文件的检测请求;其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
或执行之前实施例所描述的文件检测方法,该方法包括:接收第一文件;根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;发送第一文件的检测请求,以使得微服务管理器根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果;其中,所述检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;接收所述第一文件的检测结果。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行之前实施例所描述的文件检测方法,该方法包括:接收第一文件的检测请求;其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
或执行之前实施例所描述的文件检测方法,该方法包括:接收第一文件;根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;发送第一文件的检测请求,以使得微服务管理器根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果;其中,所述检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;接收所述第一文件的检测结果。
本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行之前实施例所描述的文件检测方法,该方法包括:接收第一文件的检测请求;其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;其中,检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果。
或执行之前实施例所描述的文件检测方法,该方法包括:接收第一文件;根据所述第一文件的格式生成所述第一文件的检测请求,其中,所述第一文件的检测请求包括所述第一文件所对应的检测类型;发送第一文件的检测请求,以使得微服务管理器根据所述第一文件的检测请求,确定与所述第一文件对应的第一检测微服务;根据所述第一检测微服务中的子服务的状态信息,为所述第一文件分配所述第一检测微服务中的第一子服务;调用所述第一检测微服务中的第一子服务对所述第一文件进行检测,并返回所述第一文件的检测结果;其中,所述检测微服务用于对文件进行预设检测类型的检测,所述检测微服务包括多个能够独立完成检测的子服务;接收所述第一文件的检测结果。
以上所描述的实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。