CN109828784B - 一种任务抓取方法及装置 - Google Patents
一种任务抓取方法及装置 Download PDFInfo
- Publication number
- CN109828784B CN109828784B CN201910108944.3A CN201910108944A CN109828784B CN 109828784 B CN109828784 B CN 109828784B CN 201910108944 A CN201910108944 A CN 201910108944A CN 109828784 B CN109828784 B CN 109828784B
- Authority
- CN
- China
- Prior art keywords
- annotation
- method code
- task
- custom
- program file
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了一种任务抓取方法及装置,其中,该方法包括:响应于程序文件中预设的任务抓取请求,从程序文件中查找关联有自定义注解的方法代码;程序文件中包括多个方法代码;程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;将查找出的关联有自定义注解的方法代码向注册中心发送。本申请实施例能够通过自动定位程序文件中的自定义注解,直接从程序文件中查找关联有自定义注解的方法代码,并将查找出的关联有自定义注解的方法代码向注册中心发送,从而可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
Description
技术领域
本申请涉及任务调度技术领域,具体而言,涉及一种任务抓取方法及装置。
背景技术
在一个程序文件中,包括了很多类(Class),每个类中包括了很多方法代码(Method)。在程序启动时,需要从所有方法代码中抓取出需要进行下一个处理逻辑的方法代码,发送到注册中心。目前现有的任务调度框架基本采用队列监听模式或者资源先行模式。
在队列监听模式和资源先行模式中,都需要人工事先配置需要抓取的方法代码的属性,在任务抓取时通过方法代码的属性抓取出需要进行下一个处理逻辑的方法代码。
发明内容
有鉴于此,本申请实施例的目的在于提供一种任务抓取方法及装置,能够通过标注在进行需要下一个处理逻辑的方法代码上的自定义注解自动抓取到这些方法代码,并自动上传到任务注册中心,从而可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
第一方面,本申请实施例提供了一种任务抓取方法,包括:
响应于程序文件中预设的任务抓取请求,从所述程序文件中查找关联有自定义注解的方法代码;所述程序文件中包括多个方法代码;所述程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;
将查找出的关联有自定义注解的方法代码向注册中心发送,所述注册中心用于储存查找出的所述关联有自定义注解的方法代码。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,其中,所述从所述程序文件中查找关联有自定义注解的方法代码,包括:
对所述程序文件进行全量扫描,以获取所述程序文件中每个方法代码的属性信息;
根据每个方法代码的属性信息,确定关联有自定义注解的方法代码。
结合第一方面,本申请实施例提供了第一方面的第二种可能的实施方式,其中,所述将查找出的关联有自定义注解的方法代码向注册中心发送,包括:
分别对每个所述关联有自定义注解的方法代码进行有效性验证;
将有效性验证结果为通过的关联有自定义注解的方法代码向注册中心发送。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第三种可能的实施方式,其中,所述分别对每个所述关联有自定义注解的方法代码进行有效性验证,包括:
针对每个关联有自定义注解的方法代码,检测该关联有自定义注解的方法代码的属性信息中是否包括固定注解;
针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括所述固定注解,则对该方法代码和/或该方法代码的所述固定注解进行有效性验证。
结合第一方面的第三种可能的实施方式,本申请实施例提供了第一方面的第四种可能的实施方式,其中,所述针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括所述固定注解,则对该方法代码和/或该方法代码的所述固定注解进行有效性验证,包括:
针对每个关联有自定义注解的方法代码,判断该方法代码是否符合第一预设语法规则,和/或判断该方法代码的所述固定注解是否符合第二预设语法规则;
针对每个关联有自定义注解的方法代码,若该方法代码符合所述第一预设语法规则,和/或该方法代码的所述固定注解符合所述第二预设语法规则,则确定该方法代码通过有效性验证。
结合第一方面,本申请实施例提供了第一方面的第五种可能的实施方式,其中,所述将查找出的关联有自定义注解的方法代码向注册中心发送,包括:
获取每个关联有自定义注解的方法代码分别对应的任务执行节点;
根据每个关联有自定义注解的方法代码和所述任务执行节点的对应关系,将关联有自定义注解的方法代码和所述任务执行节点,存储到任务集合列表中;
将所述任务集合列表向注册中心发送。
第二方面,本申请实施例提供了一种任务自动抓取装置,包括:
查找模块,用于响应于程序文件中预设的任务抓取请求,从所述程序文件中查找关联有自定义注解的方法代码;所述程序文件中包括多个方法代码;所述程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;
发送模块,用于将查找出的关联有自定义注解的方法代码向注册中心发送,所述注册中心用于储存查找出的所述关联有自定义注解的方法代码。
结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,其中,所述查找模块,具体采用下述方式从所述程序文件中查找关联有自定义注解的方法代码:
对所述程序文件进行全量扫描,以获取所述程序文件中每个方法代码的属性信息;
根据每个方法代码的属性信息,确定关联有自定义注解的方法代码。
结合第二方面,本申请实施例提供了第二方面的第二种可能的实施方式,其中,所述发送模块,具体采用下述方式将查找出的关联有自定义注解的方法代码向注册中心发送:
分别对每个所述关联有自定义注解的方法代码进行有效性验证;
将有效性验证结果为通过的关联有自定义注解的方法代码向注册中心发送。
结合第二方面的第二种可能的实施方式,本申请实施例提供了第二方面的第三种可能的实施方式,其中,所述发送模块,具体采用下述方式分别对每个所述关联有自定义注解的方法代码进行有效性验证:
针对每个关联有自定义注解的方法代码,检测该关联有自定义注解的方法代码的属性信息中是否包括固定注解;
针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括所述固定注解,则对该方法代码和/或该方法代码的所述固定注解进行有效性验证。
结合第二方面的第三种可能的实施方式,本申请实施例提供了第二方面的第四种可能的实施方式,其中,所述发送模块,具体采用下述方式对该方法代码和/或该方法代码的所述固定注解进行有效性验证:
针对每个关联有自定义注解的方法代码,判断该方法代码是否符合第一预设语法规则,和/或判断该方法代码的所述固定注解是否符合第二预设语法规则;
针对每个关联有自定义注解的方法代码,若该方法代码符合所述第一预设语法规则,和/或该方法代码的所述固定注解符合所述第二预设语法规则,则确定该方法代码通过有效性验证。
结合第二方面,本申请实施例提供了第二方面的第五种可能的实施方式,其中,所述发送模块,具体采用下述方式将查找出的关联有自定义注解的方法代码向注册中心发送:
获取每个关联有自定义注解的方法代码分别对应的任务执行节点;
根据每个关联有自定义注解的方法代码和所述任务执行节点的对应关系,将关联有自定义注解的方法代码和所述任务执行节点,存储到任务集合列表中;
将所述任务集合列表向注册中心发送。
第三方面,本申请实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面的第一种可能的实施方式至第五种可能的实施方式中任一种可能的实施方式中的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面的第一种可能的实施方式至第五种可能的实施方式中任一种可能的实施方式中的步骤。
本申请实施例提供的任务抓取方法及装置,开发人员首先只需要在编写程序源文件时,在需要抓取的方法代码上标注上自定义注解,且自定义注解的形式是固定的,在程序文件运行过程中的某一时刻需要抓取任务时,调用本申请实施例提供的任务抓取方法及装置对应的任务抓取程序。任务抓取程序在接收到任务抓取请求时,能够对整个程序文件进行扫描,自动定位程序文件中的自定义注解,直接从程序文件中查找出关联有自定义注解的方法代码;并将查找出的关联有自定义注解的方法代码向注册中心发送。
目前在任务抓取时,需要根据对方法代码配置的属性进行抓取,但属性会发生动态变化,对应的任务抓取程序也需要随之变化;
本申请所提供的任务抓取方法,可以根据对方法代码标注的自定义注解进行抓取,且自定义注解的形式不会发生变化;
采用本申请所提供的方法可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种任务抓取系统的结构示意图;
图2示出了本申请实施例所提供的一种任务抓取方法的流程图;
图3示出了本申请实施例所提供的任务抓取方法中,从程序文件中查找关联有自定义注解的方法代码的流程图;
图4示出了本申请实施例所提供的任务抓取方法中,分别对每个关联有自定义注解的方法代码进行有效性验证的流程图;
图5示出了本申请实施例所提供的一种任务抓取装置的结构示意图;
图6示出了本申请实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可以应用于面向对象的程序设计环境中,例如Java语言。在计算机领域中,应用程序部署在执行器中,应用程序提供很多方法对外提供服务。在任务调度过程中,目前现有的任务调度框架基本采用队列监听模式或者资源先行模式。
队列监听模式,是在不同的执行器(Executor)启动一个对队列服务器指定队列的监听程序,执行器通过队列中的消息来进行任务控制和参数传递。任务的编排组合关系通过队列中的消息来决定。这种模式很难将业务代码和编排逻辑区隔开来,并且编排逻辑依赖于队列服务器中的队列,当编排逻辑发生变化时,相应的代码需要经过调整才能满足业务需求。
资源先行模式,首先需要拥有能够处理任务运行资源(例如虚拟机)。例如在java中,常见的任务调度框架会首先拥有若干的虚拟机资源,将需要执行的任务编译打包成jar软件包,然后将这些jar软件包部署到这些虚拟机上,然后通过java命令启动jar软件包来完成业务操作。这种模式需要提前拥有虚拟机资源,使用不方便。
同时,在队列监听模式和资源先行模式中,都需要人工事先配置需要抓取的方法代码的属性(即超文本传输协议(HyperText Transfer Protocol,HTTP)访问所需的关键信息,包括执行器地址,应用端口,资源路径,访问方法,输入参数个数及内容等),在任务抓取时通过方法代码的属性抓取出需要进行下一个处理逻辑的方法代码。但方法代码的属性可能是动态变化的,配置过程比较繁琐,且当属性发生动态变化时,对应的任务抓取程序也需要随之进行修改,导致任务抓取效率低,使用不方便。
针对上述问题,本申请提供了一种任务抓取方法及装置,能够通过标注在进行需要下一个处理逻辑的方法代码上的自定义注解自动抓取到这些方法代码,并自动上传到任务注册中心,从而可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
在本申请实施例中,开发人员需要在应用程序上事先对需要进行下个处理逻辑的方法标注上自定义注解,且自定义注解的形式不会变化,因此在本申请实施例中,当应用程序运行到某一时刻需要任务抓取时,任务抓取程序启动,对整个应用程序进行全量扫描,将带有自定义注解的方法代码抓取出来,上传到注册中心即可。通过定位自定义注解的方式进行任务抓取,相较于通过方法属性进行任务抓取,可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找,简化了查找的流程。
为便于对本实施例进行理解,首先对本申请实施例所提供的一种任务抓取方法所作用的一种典型的任务抓取系统进行介绍,参见图1所示,该任务抓取系统包括:客户端11和服务器12;
客户端11和服务器12相互连接;
其中,客户端11中包括执行器111,执行器111中部署着应用程序;服务器12中包括注册中心121;
其中,应用程序中包括多个方法代码和任务抓取程序。
注册中心,是存储数据的一个中心节点。注册中心可以由基于分布式应用程序协调服务(Zookeeper)来实现。
目前的任务抓取方法是通过程序文件中的方法代码的属性进行抓取,且属性是动态变化的,如果属性发生变化,对应的任务抓取程序也要进行修改,任务抓取效率低,使用不方便。
而在本申请中,任务抓取是根据标注在方法代码上的自定义注解进行自动抓取的,自定义注解的形式不会变化,从而可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
参见图2所示,为本申请实施例提供的一种任务抓取方法的流程示意图,包括以下步骤:
S201:客户端中的任务抓取程序响应于程序文件中预设的任务抓取请求,从程序文件中查找关联有自定义注解的方法代码。
其中,程序文件中包括多个方法代码;程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解。
S202:将查找出的关联有自定义注解的方法代码向服务器中的注册中心发送。
其中,注册中心用于储存查找出的关联有自定义注解的方法代码。
在本申请实施例中,程序文件指的是编译后的应用程序。在程序文件中包括多个类,每个类中包括一个或多个方法代码。程序文件的开发人员在需要抓取的方法代码上事先标注了自定义注解。
在程序文件运行过程中,需要进行任务抓取时,即需要获取到需要进入下个处理逻辑的方法代码时,则可以调用本申请实施例提供的任务抓取方法对应的任务抓取程序。当任务抓取程序响应到程序文件中预设的任务抓取请求时,从程序文件中查找关联有自定义注解的方法代码。
在计算机领域中,注解,也叫元数据,是一种代码级别的说明。它是Java语言的软件开发工具包(Java Development Kit,JDK)1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。Java所有注解都继承了Annotation注解接口,也就是说Java使用Annotation接口代表注解元素。同时为了运行时能准确获取到注解的相关信息,Java在java.lang.reflect(反射包)下新增了AnnotatedElement(已注释元素接口),它主要用于表示目前正在Java虚拟机(Java Virtual Machine,JVM)中运行的程序中已使用注解的元素,通过该接口可以利用反射机制读取注解的信息。
在本申请实施例中,自定义注解指的是元注解(meta-annotation),元注解的作用就是负责注解其他注解。也即需要在其他注解的基础上添加自定义注解。
示例性地,本申请实施例中的自定义注解可以定义为@OnlineTask自定义注解,@OnlineTask注解具体可以定义为:
其中,
@Target(ElementType.METHOD)表示@OnlineTask自定义注解是标注在方法代码上的;
@Retention(RetentionPolicy.RUNTIME)表示@OnlineTask自定义注解是在程序运行时起作用的。
开发人员在方法代码上标注上本申请实施例提供的自定义注解,可以表明该方法代码是一个待抓取的任务。在一种可能的实施方式中,自定义注解中还可以包含方法代码的一些属性,例如该方法代码的用途。
下面开始详细介绍本申请实施例提供的任务抓取方法的具体实施方法。参见图3所示,步骤S201中,任务抓取程序在响应于程序文件中预设的任务抓取请求后,可以通过下述步骤从程序文件中查找关联有自定义注解的方法代码:
S301:对程序文件进行全量扫描,以获取程序文件中每个方法代码的属性信息。
例如在Java中,可以通过反射机制,对程序文件进行全量扫描,获取程序文件中每个方法代码的属性信息。例如,属性可以包括方法代码上的注解、注解里面的属性、方法的名称、方法的输入参数及个数、方法的返回值类型等。
其中,Java中的反射机制能够在运行状态中,对程序文件中的任意一个类,反射机制都能够获取到这个类的所有方法和属性。
S302:根据每个方法代码的属性信息,确定关联有自定义注解的方法代码。
例如,当通过反射机制获取到每个方法代码的属性信息后,可以通过判断每个方法代码的属性信息中是否包括自定义注解,来确定关联有自定义注解的方法代码。如果该方法代码的属性信息中包括自定义注解,则确定该方法代码为关联有自定义注解的方法代码。
在一种可能的情况中,通过上述方式确定出关联有自定义注解的方法代码后,该关联有自定义注解的方法代码可能不具备有效性。例如,方法代码关联的自定义注解没有标注在其他注解上,或者,方法代码中的某些信息不符合执行规则。因此,在执行步骤S202的时候,首先需要分别对每个关联有自定义注解的方法代码进行有效性验证;然后将有效性验证结果为通过的关联有自定义注解的方法代码向注册中心发送。
当本申请实施例的自定义注解需要添加在其他注解上时,参见图4所示,可以通过下述方式分别对每个关联有自定义注解的方法代码进行有效性验证:
S401:针对每个关联有自定义注解的方法代码,检测该关联有自定义注解的方法代码的属性信息中是否包括固定注解。
示例性地,固定注解可以为java框架提供的用来处理请求地址映射的@RequestMapping注解,@RequestMapping注解可以对外暴露超文本传输协议(HyperTextTransfer Protocol,HTTP)。
当关联有自定义注解的方法代码的属性信息中不包括固定注解时,则确定该关联有自定义注解的方法代码没有通过有效性验证。
S402:针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括固定注解,则对该方法代码和/或该方法代码的固定注解进行有效性验证。
在一种可能的实施方式中,当该方法代码的属性信息中包括固定注解时,通过下述方式对该方法代码进行有效性验证:
针对每个关联有自定义注解的方法代码,判断该方法代码是否符合第一预设语法规则。
示例性地,第一预设语法规则可以包括下述两种语法规则的一种或多种:
(1)方法代码的返回值必须是预设返回值类型,例如String(字符串);
(2)方法代码中的访问参数个数必须为0或1,当为1时,访问参数类型必须为预设访问参数类型,例如String;
(3)方法代码中的访问方法必须包含POST方法(可以向指定的资源提交要被处理的数据)。
在一种可能的实施方式中,当该方法代码的属性信息中包括固定注解时,通过下述方式对该方法代码的固定注解进行有效性验证:
针对每个关联有自定义注解的方法代码,判断该方法代码的固定注解是否符合第二预设语法规则。
示例性地,第二预设语法规则可以为:
固定注解@RequestMapping注解中的统一资源定位符(Uniform ResourceLocator,URL)路径必须以"/"字符为前缀,且URL路径中不含"\"字符。
当该方法代码符合第一预设语法规则,和/或该方法代码的固定注解符合第二预设语法规则时,则确定该方法代码通过有效性验证。
通过上述方式对方法代码进行有效性验证,可以保证向注册中心发送的方法代码都是符合执行规则的。
当该方法代码没有通过有效性验证时,可以记录没有通过有效性验证的原因,例如该方法代码的属性信息中不包括固定注解,或该方法代码没有满足第一预设语法规则,或该方法代码的固定注解中包括的统一资源定位符(URL)路径没有满足第二预设语法规则,方便开发人员排错。
在向注册中心发送方法代码的时候,可以先将每个方法代码整合起来,这个可以方便发送。在一种可能的实施方式中,在执行步骤S202时,可以将每个关联有自定义注解的方法代码封装成一个对象,对象的键(Key)的命名规则是方法代码的工程名称+URL路径,对象的值(Value)是方法代码的参数。将每个关联有自定义注解的方法代码都分别封装成一个对象后,将所有对象存储到任务集合列表中,然后将任务集合列表向注册中心发送。
在一种可能的实施方式中,当存储在注册中心的任务需要执行时,需要知道每个任务对应的任务执行节点,即可以在哪些执行器上执行。因此,在执行步骤S202时,还可以首先获取每个关联有自定义注解的方法代码分别对应的任务执行节点;根据每个关联有自定义注解的方法代码和任务执行节点的对应关系,将关联有自定义注解的方法代码和任务执行节点,存储到任务集合列表中;然后将任务集合列表向注册中心发送。
具体实现的时候,可以通过应用程序编程接口(Application ProgrammingInterface,API)获取到本申请实施例中的程序文件所在的执行器的IP地址、上下文(ServletContext,是一个全局的储存信息的空间)、端口号等信息,将这些信息作为任务执行节点,和查找出的关联有自定义注解的方法代码一起存储到任务集合列表中。
需要注意的是,在一种可能的情况下,同一个程序文件可能会同时部署在多个执行器上,每个执行器分别对应不同的任务执行节点,此时,每个执行器上的程序文件在执行任务抓取程序时,都可以将各自所在执行器对应的任务执行节点储存到任务集合列表中。
当注册中心接收到部署在各个执行器上的任务抓取程序传输的任务集合列表时,可以获取不同任务列表中,相同的方法代码对应的多个任务执行节点。
通过上述方式将方法代码和对应的任务执行节点都储存在注册中心后,使得在后续任务调度时,可以选择其中一个或多个任务执行节点执行该方法代码即可。
其中,注册中心是指存储数据的一个中心节点,在本申请实施例中,注册中心可以是分布式任务中心,分布式任务中心可以接收并存储客户端发送的任务信息。
本申请实施例通过自定义注解能够获取执行器中程序文件中的方法代码,即任务访问信息,并上传到分布式任务中心。这种自动化的抓取过程可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。而且任务自动抓取程序会对抓取的方法代码进行有效性验证,保证抓取的任务都是符合预设规则的。同时,本申请实施例提供的任务抓取方法对应的程序对具体业务代码是无侵入的,开发人员不用考虑适配、兼容等问题,使用方便。
本申请实施例通过自定义注解获取到程序文件中的各个方法代码,分别作为一个任务,并上传到注册中心时,还可以自动更新注册中心中的任务集合列表中的任务,即当上传的任务的键与原始任务集合列表中的某个任务的键一致时,自动更新原始任务集合列表中该任务的值;当上传的任务的键与原始任务集合列表中任务的键都不一致时,则将该任务存储到原始任务集合列表中,通过这两种方式可以自动更新注册中心中的任务集合列表中的任务。
本申请实施例提供的任务抓取方法,在接收到任务抓取请求时,能够通过自动定位程序文件中的自定义注解,直接从程序文件中查找关联有自定义注解的方法代码,并将查找出的关联有自定义注解的方法代码向注册中心发送,从而可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
上述内容对本申请提供的任务抓取方法进行了详细解释,下面提供一个具体实施例,来说明本申请最优选的使用流程:
具体实施例
本申请提供的任务抓取方法最优选的使用流程为:
开发人员在编写的程序文件中需要进行抓取的方法代码上标注本申请实施例提供的自定义注解;
客户端的程序文件在运行过程中,需要进行任务抓取时,向本申请实施例提供的任务抓取方法对应的任务抓取程序发送预设的任务抓取请求;
任务抓取程序响应于程序文件中预设的任务抓取请求,对程序文件进行全量扫描,以获取程序文件中每个方法代码的属性信息;根据每个方法代码的属性信息,确定关联有自定义注解的方法代码,进而从程序文件中查找关联有自定义注解的方法代码;程序文件中包括多个方法代码;程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;
任务抓取程序分别对每个关联有自定义注解的方法代码进行有效性验证;将有效性验证结果为通过的关联有自定义注解的方法代码分别封装成一个对象;
获取每个关联有自定义注解的方法代码分别对应的任务执行节点;
根据每个关联有自定义注解的方法代码和任务执行节点的对应关系,将关联有自定义注解的方法代码和任务执行节点,存储到任务集合列表中;
将任务集合列表向服务器中的注册中心发送。
基于同一发明构思,本申请实施例中还提供了与任务抓取方法对应的任务抓取装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述任务抓取方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,为本申请实施例提供的任务抓取装置的结构示意图,包括:
查找模块51,用于响应于程序文件中预设的任务抓取请求,从所述程序文件中查找关联有自定义注解的方法代码;所述程序文件中包括多个方法代码;所述程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;
发送模块52,用于将查找出的关联有自定义注解的方法代码向注册中心发送,所述注册中心用于储存查找出的所述关联有自定义注解的方法代码。
可选地,所述查找模块51,具体采用下述方式从所述程序文件中查找关联有自定义注解的方法代码:
对所述程序文件进行全量扫描,以获取所述程序文件中每个方法代码的属性信息;
根据每个方法代码的属性信息,确定关联有自定义注解的方法代码。
可选地,所述发送模块52,具体采用下述方式将查找出的关联有自定义注解的方法代码向注册中心发送:
分别对每个所述关联有自定义注解的方法代码进行有效性验证;
将有效性验证结果为通过的关联有自定义注解的方法代码向注册中心发送。
可选地,所述发送模块52,具体采用下述方式分别对每个所述关联有自定义注解的方法代码进行有效性验证:
针对每个关联有自定义注解的方法代码,检测该关联有自定义注解的方法代码的属性信息中是否包括固定注解;
针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括所述固定注解,则对该方法代码和/或该方法代码的所述固定注解进行有效性验证。
可选地,所述发送模块52,具体采用下述方式对该方法代码和/或该方法代码的所述固定注解进行有效性验证:
针对每个关联有自定义注解的方法代码,判断该方法代码是否符合第一预设语法规则,和/或判断该方法代码的所述固定注解是否符合第二预设语法规则;
针对每个关联有自定义注解的方法代码,若该方法代码符合所述第一预设语法规则,和/或该方法代码的所述固定注解符合所述第二预设语法规则,则确定该方法代码通过有效性验证。
可选地,所述发送模块52,具体采用下述方式将查找出的关联有自定义注解的方法代码向注册中心发送:
获取每个关联有自定义注解的方法代码分别对应的任务执行节点;
根据每个关联有自定义注解的方法代码和所述任务执行节点的对应关系,将关联有自定义注解的方法代码和所述任务执行节点,存储到任务集合列表中;
将所述任务集合列表向注册中心发送。
本申请实施例提供的任务抓取装置,在接收到任务抓取请求时,能够通过自动定位程序文件中的自定义注解,直接从程序文件中查找关联有自定义注解的方法代码,并将查找出的关联有自定义注解的方法代码向注册中心发送,从而可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任务抓取方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述任务抓取方法,从而可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
对应于本申请实施例提供的任务抓取方法,本申请实施例还提供了一种计算机设备,如图6所示,该设备包括存储器1000、处理器2000及存储在该存储器1000上并可在该处理器2000上运行的计算机程序,其中,上述处理器2000执行上述计算机程序时实现上述任务抓取方法的步骤。
具体地,上述存储器1000和处理器2000能够为通用的存储器和处理器,这里不做具体限定,当处理器2000运行存储器1000存储的计算机程序时,能够执行上述任务抓取方法,从而可以做到只给方法代码配置一次自定义注解,就可以多次利用该自定义注解进行查找。与现有技术中用户在每次进行查找之前都需要根据方法代码的属性调整查找策略相比,本申请实施例简化了查找的流程。
本申请实施例所提供的任务抓取方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的系统、装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求书所记载的保护范围为准。
Claims (9)
1.一种任务抓取方法,其特征在于,包括:
响应于程序文件中预设的任务抓取请求,从所述程序文件中查找关联有自定义注解的方法代码;所述程序文件中包括多个方法代码;所述程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;
将查找出的关联有自定义注解的方法代码向注册中心发送,所述注册中心用于储存查找出的所述关联有自定义注解的方法代码;
其中,所述将查找出的关联有自定义注解的方法代码向注册中心发送,包括:
获取每个关联有自定义注解的方法代码分别对应的任务执行节点;
根据每个关联有自定义注解的方法代码和所述任务执行节点的对应关系,将关联有自定义注解的方法代码和所述任务执行节点,存储到任务集合列表中;
将所述任务集合列表向注册中心发送。
2.根据权利要求1所述的方法,其特征在于,所述从所述程序文件中查找关联有自定义注解的方法代码,包括:
对所述程序文件进行全量扫描,以获取所述程序文件中每个方法代码的属性信息;
根据每个方法代码的属性信息,确定关联有自定义注解的方法代码。
3.根据权利要求1所述的方法,其特征在于,所述将查找出的关联有自定义注解的方法代码向注册中心发送,包括:
分别对每个所述关联有自定义注解的方法代码进行有效性验证;
将有效性验证结果为通过的关联有自定义注解的方法代码向注册中心发送。
4.根据权利要求3所述的方法,其特征在于,所述分别对每个所述关联有自定义注解的方法代码进行有效性验证,包括:
针对每个关联有自定义注解的方法代码,检测该关联有自定义注解的方法代码的属性信息中是否包括固定注解;
针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括所述固定注解,则对该方法代码和/或该方法代码的所述固定注解进行有效性验证。
5.根据权利要求4所述的方法,其特征在于,所述针对每个关联有自定义注解的方法代码,若该方法代码的属性信息中包括所述固定注解,则对该方法代码和/或该方法代码的所述固定注解进行有效性验证,包括:
针对每个关联有自定义注解的方法代码,判断该方法代码是否符合第一预设语法规则,和/或判断该方法代码的所述固定注解是否符合第二预设语法规则;
针对每个关联有自定义注解的方法代码,若该方法代码符合所述第一预设语法规则,和/或该方法代码的所述固定注解符合所述第二预设语法规则,则确定该方法代码通过有效性验证。
6.一种任务抓取装置,其特征在于,包括:
查找模块,用于响应于程序文件中预设的任务抓取请求,从所述程序文件中查找关联有自定义注解的方法代码;所述程序文件中包括多个方法代码;所述程序文件中所包括的多个方法代码中的至少一个方法代码关联有自定义注解;
发送模块,用于将查找出的关联有自定义注解的方法代码向注册中心发送,所述注册中心用于储存查找出的所述关联有自定义注解的方法代码;
其中,发送模块还用于:获取每个关联有自定义注解的方法代码分别对应的任务执行节点;
根据每个关联有自定义注解的方法代码和所述任务执行节点的对应关系,将关联有自定义注解的方法代码和所述任务执行节点,存储到任务集合列表中;
将所述任务集合列表向注册中心发送。
7.根据权利要求6所述的装置,其特征在于,所述查找模块,具体采用下述方式从所述程序文件中查找关联有自定义注解的方法代码:
对所述程序文件进行全量扫描,以获取所述程序文件中每个方法代码的属性信息;
根据每个方法代码的属性信息,确定关联有自定义注解的方法代码。
8.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至5任一所述的任务抓取方法的步骤。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至5任意一项所述的任务抓取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910108944.3A CN109828784B (zh) | 2019-02-03 | 2019-02-03 | 一种任务抓取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910108944.3A CN109828784B (zh) | 2019-02-03 | 2019-02-03 | 一种任务抓取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828784A CN109828784A (zh) | 2019-05-31 |
CN109828784B true CN109828784B (zh) | 2022-04-26 |
Family
ID=66863400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910108944.3A Active CN109828784B (zh) | 2019-02-03 | 2019-02-03 | 一种任务抓取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109828784B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750315B (zh) * | 2019-12-23 | 2020-06-02 | 武汉斗鱼鱼乐网络科技有限公司 | Android系统中的类加载方法、装置、设备和存储介质 |
CN112199092B (zh) * | 2020-09-17 | 2024-03-15 | 上海硬通网络科技有限公司 | 应用的开发方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893016A (zh) * | 2015-12-11 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 基于mvc架构的日志记录系统及方法 |
CN106302442A (zh) * | 2016-08-12 | 2017-01-04 | 广州慧睿思通信息科技有限公司 | 一种基于Java语言的网络通讯数据包解析方法 |
CN107220258A (zh) * | 2016-03-22 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 用于抓取应用页面的数据的方法、装置及终端 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282184B2 (en) * | 2016-09-16 | 2019-05-07 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
-
2019
- 2019-02-03 CN CN201910108944.3A patent/CN109828784B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893016A (zh) * | 2015-12-11 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 基于mvc架构的日志记录系统及方法 |
CN107220258A (zh) * | 2016-03-22 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 用于抓取应用页面的数据的方法、装置及终端 |
CN106302442A (zh) * | 2016-08-12 | 2017-01-04 | 广州慧睿思通信息科技有限公司 | 一种基于Java语言的网络通讯数据包解析方法 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109828784A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106559438B (zh) | 一种基于目标网络平台的程序上传方法和装置 | |
US8863126B2 (en) | Java virtual machine embedded in a native mobile application | |
EP3342145B1 (en) | Deep linking to mobile application states through programmatic replay of user interface events | |
US11385890B2 (en) | Shared software libraries for computing devices | |
KR20070049166A (ko) | 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템 | |
US7996840B2 (en) | Method, system, and apparatus for scheduling pattern based web services | |
CN111045717B (zh) | 获取项目依赖包的方法、装置、计算机设备及存储介质 | |
CN109828784B (zh) | 一种任务抓取方法及装置 | |
CN107203535B (zh) | 信息查询方法及装置 | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN112527459B (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
Vivian et al. | Rapid and efficient analysis of 20,000 RNA-seq samples with Toil | |
US7533383B2 (en) | Method, system, and apparatus for scheduling pattern based web services | |
CN110716786B (zh) | 一种页面展示方法、系统及存储介质 | |
EP2214099A1 (en) | Method for software package deployment in a network node | |
US11379294B1 (en) | Systems and methods for crash analysis using code version history | |
US20080115109A1 (en) | Enhanced Hover Help For Software Debuggers | |
CN116578282A (zh) | 代码生成方法、装置、电子设备及介质 | |
US20110321043A1 (en) | System, Method and Program Product for Native Interface Optimization of Read-Only Arrays | |
CN113342353B (zh) | 一种mock数据生成方法和装置 | |
CN114416165A (zh) | 一种接口发布方法、系统、计算机设备及存储介质 | |
CN110134904B (zh) | 一种页面检查方法、装置、设备及介质 | |
CN111273940B (zh) | 将程序文件上传至代码仓库的方法及装置 | |
CN112148419B (zh) | 云平台中镜像管理方法、装置、系统及存储介质 | |
JP5083197B2 (ja) | コンピュータ、記録媒体、および分散処理システム |
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 |