CN112367205A - 一种对http调度请求的处理方法及调度*** - Google Patents
一种对http调度请求的处理方法及调度*** Download PDFInfo
- Publication number
- CN112367205A CN112367205A CN202011260187.0A CN202011260187A CN112367205A CN 112367205 A CN112367205 A CN 112367205A CN 202011260187 A CN202011260187 A CN 202011260187A CN 112367205 A CN112367205 A CN 112367205A
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- scheduling system
- http
- scheduling
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0246—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
- H04L41/0253—Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using browsers or web-pages for accessing management information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及金融科技(Fintech)领域,公开一种对HTTP调度请求的处理方法及调度***,调度***基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求。在对执行平台进行运维的过程中,通过引入调度***,运用调度***来对HTTP请求进行下发,如此可以避免直接在执行平台上进行操作,从而提高运维效率,且可灵活地对运维过程进行调整,也更易满足运维需求。
Description
技术领域
本申请实施例涉及金融科技(Fintech)领域,尤其涉及一种对HTTP调度请求的处理方法及调度***。
背景技术
随着计算机技术的发展,越来越多的技术(例如:大数据或云计算)应用在金融领域,传统金融业正在逐步向金融科技转变,在大数据技术的背景下,需要通过各运维平台进行***管理。
目前,对于多个运维平台进行配置时,一般是通过HTTP请求分别在各个运维平台进行操作。
然而,现有的HTTP请求在执行过程中,需要提前将请求头、请求体定义好,若在运行过程中需要对请求头或者请求体中的参数进行替换,只能提前配置好进行替换;若没有提前配置,则需要等到运行结束后再进行配置,以便下次进行替换。
综上,现有的HTTP调度方案是直接在各个运维平台上进行操作,且只能支持定义时候的参数配置,而无法实现参数的多阶段替换。
发明内容
本申请提供一种对HTTP调度请求的处理方法及调度***,用以实现配置项在多个阶段的更新,使得调度过程可更加灵活。
第一方面,本申请实施例提供一种对HTTP调度请求的处理方法,该方法包括:调度***基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述第一HTTP调度请求用于指示所述第一执行平台执行所述第一任务;所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述配置项是以变量赋值方式设置的;所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求;所第二HTTP调度请求用于指示所述第二执行平台执行所述第二任务;所述任务工作流定义有所述第一任务执行后触发所述第二任务。
基于该方案,在对执行平台进行运维的过程中,通过引入调度***,运用调度***来对HTTP请求进行下发,如此可以避免直接在执行平台上进行操作,从而提高运维效率;此外,在调度***基于任务工作流所定义的任务执行顺序对第一执行平台进行运维的过程中,在尚未执行到第二任务时,若调度***接收到对第二任务的配置修改指令,调度***则可基于该配置修改指令对任务工作流中所定义的第二任务进行修改,并基于修改后的第二任务向第二执行平台发送第二HTTP请求。本申请的方案可通过额外增加的调度***来对HTTP请求进行下发,实现运维的目的;此外,在使用调度***进行运维时,还可以在任务工作流执行的过程中,基于接收到的配置修改指令来对尚未被执行到的任务进行修改,如此针对某一任务工作流,则可以达到灵活地、按需地对其进行实时修改和调整的目的,而无需务必等到运维任务按照旧版本的配置参数执行结束后、还需要重新调整参数并再次执行,才能满足调整的目的,因此本申请的方案具有灵活地对运维过程进行调整的特点,也更易满足运维需求。
在一种可能实现的方法中,所述调度***基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求,包括:所述调度***基于任务工作流中的第一任务,确定第一HTTP调度请求的类型为直连加轮询模式;所述调度***向第一执行平台发送所述第一HTTP调度请求,所述第一HTTP调度请求携带直连加轮询模式的类型标识;所述调度***向第二执行平台发送第二HTTP调度请求之前,还包括:所述调度***接收所述第一执行平台发送的第一任务标识;所述第一任务标识是所述第一执行平台接收到所述第一HTTP调度请求后生成的;所述调度***向所述第一执行平台发送携带所述第一任务标识的第三HTTP调度请求;所述第三HTTP请求用于获取所述第一执行平台对所述第一HTTP调度请求的处理状态;所述调度***接收所述第一执行平台对所述第一任务的第一执行结果。
基于该方案,对于运维过程中一些复杂、耗时的任务,所引入的调度***可支持对该类型任务的调度,也即在调度***确定任务工作流中的第一任务为复杂、耗时的任务时,则调度***可确定本次下发至第一执行平台的第一HTTP调度请求的类型为直连加轮询模式,并在下发的第一HTTP调度请求中携带直连加轮询模式的类型标识,如此,在第一执行平台接收到第一HTTP调度请求后,可生成第一任务标识并将该第一任务标识发送至调度***,相应的,调度***可接收到该第一任务标识,进一步的,调度***可凭借该第一任务标识、周期性地向第一执行平台发送第三HTTP调度请求,以获取第一执行平台对第一HTTP调度请求的处理状态,最终,调度***可获取到第一任务平台对第一任务的第一执行结果。该方式中可通过所引入的调度***来实现对复杂、耗时任务的直接调度,调度过程中,调度***凭借执行平台返回的任务标识而可以对执行平台对任务的执行结果进行轮询,且该方式还支持在错误恢复时的断点续查或者重新发起请求的操作,从而提高运维效率。
在一种可能实现的方法中,所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求,包括:所述调度***在所述第一任务执行后,接收所述第一执行平台对所述第一任务的第一执行结果;所述调度***按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格;所述调度***在确定所述第二任务需使用第一结果值,则从所述设定表格获取所述第一结果值,并基于所述第一结果值生成所述第二HTTP调度请求,以向第二执行平台发送所述第二HTTP调度请求;所述第一结果值是各结果值中的至少一个。
基于该方案,在调度***基于任务工作流执行第一任务的过程中,调度***可接收到第一执行平台对第一任务的第一执行结果,并按照第一任务的输出字典从第一执行结果中提取各结果值并存储至设定表格;进一步的,在调度***执行第一任务的过程中,若同时接收到对第二任务的配置修改指令,且该配置修改指令用于指示第二任务在下发过程中需要使用到第一结果值,则调度***可从设定表格中获取第一结果值对任务工作流中预先定义好的第二任务进行修改,并生成第二HTTP调度请求,而后将该第二HTTP调度请求发送至第二执行平台。该方式中的调度***提供了一种对执行结果进行统一处理的方法,即按照任务的输出字典的方式从执行结果中获取各结果值并存储至设定表格,使得某执行平台的执行结果可被其他执行平台识别和调用,而不是仅仅只能供本执行平台使用,实现了执行结果能在多个执行平台中共享使用,也即该方式中的调度***支持当前任务在尚未被执行时,依然可基于其他任务的执行结果再次进行配置,而无需务必按照预先定义好的参数进行HTTP调度请求的下发,该方式可以根据已执行任务的执行结果来评估并实时调整后续未执行任务的参数,贴合任务调度的实际过程,提高任务调度的效率。
在一种可能实现的方法中,所述第一执行结果中的各结果值通过JSON格式表示;所述调度***按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格,包括:所述调度***确定所述第一执行结果中的第二结果值对应的输出变量名;所述第二结果值是各结果值中的任一个;所述调度***基于jq表达式的字段提取规则从所述第一执行结果中确定所述输出变量名对应的输出变量值;所述调度***确定所述第二结果值具有的输出变量名与输出变量值的对应关系,并将所述对应关系存储至设定表格。
基于该方案,鉴于大部分的执行平台在将任务执行结束后均是通过JSON格式进行执行结果的输出,因此,关于任务的输出字典,可以按照key-value的方式进行设置,其中,key对应于输出变量名,value以jq表达式的形式记录输出变量值,如此,即使各个执行平台对执行结果的表现方式不同,但是在某一执行平台所对应的任务需要基于另一执行平台的执行结果时,则该执行平台可以快速地基于另一平台的任务的输出字典中的结果值对该任务进行配置。
在一种可能实现的方法中,所述调度***接收所述第一执行平台对所述第一任务的第一执行结果;所述调度***按照设定格式提取所述第一执行结果中的设定参数值;所述调度***根据所述设定参数值确定所述第一任务是否成功执行。
基于该方案,在调度***将对应于第一任务的第一HTTP调度请求发送至第一执行平台后,调度***可接收到第一执行平台对第一任务的第一执行结果,随后,调度***可按照设定格式从第一执行结果中提取设定参数值,并根据设定参数值确定第一任务是否成功执行。该方式可在每一个执行结果返回的时候,通过从执行结果中提取设定参数值,并将设定参数值与预设的判断表达式进行比较,由于判断表达式包括有多种形式所表示的成功标识,如此可快速确定任务的执行状态是否为成功。
在一种可能实现的方法中,所述配置修改指令中包括变量名和变量值;所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项,包括:使用正则表达式的方式,确定所述变量名在所述任务工作流中的各位置信息,并记录出包含所述变量名及所述各位置信息的元数据;每个位置信息包括变量名的起始位置和变量名的结束位置;所述各位置信息中至少包括一个位置信息位于所述第二任务中;针对每个元数据中的每个位置信息,生成替换数据,所述替换数据包括将所述位置信息、所述变量值和所述变量名的长度差值及所述变量值;针对每个替换数据,将所述任务工作流中所述位置信息的所述变量名替换为所述变量值。
基于该方案,在调度***根据接收到配置修改指令对任务工作流中的第二任务的配置项进行修改时,通过使用正则表达式的方式,确定配置修改指令中的变量名在任务工作流中的各位置信息,然后将任务工作流中的各个位置对应的变量名替换为配置修改指令中的变量值。该方式具有一次扫描,一次替换的优点,可以提高运维效率。
在一种可能实现的方法中,所述配置项是以变量赋值方式设置的,包括以下任一种:预设文本、其他任务的变量名的输出值和本任务的变量名的输出值。
基于该方案,在调度***对任务工作流中预先定义好的任务的配置项进行修改时,由于配置项是以变量赋值方式设置的,因此,可以将变量设置为预设的文本,或者其他任务的变量名的输出值,或者本任务的变量名的输出值。该方式具有灵活赋值的优点,对任务的修改也更易满足调度需求。
第二方面,本申请实施提供一种调度***,该调度***包括:发送单元,用于基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述第一HTTP调度请求用于指示所述第一执行平台执行所述第一任务;处理单元,用于根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述配置项是以变量赋值方式设置的;所述发送单元,还用于在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求;所第二HTTP调度请求用于指示所述第二执行平台执行所述第二任务;所述任务工作流定义有所述第一任务执行后触发所述第二任务。
基于该方案,在对执行平台进行运维的过程中,通过引入调度***,运用调度***来对HTTP请求进行下发,如此可以避免直接在执行平台上进行操作,从而提高运维效率;此外,在调度***基于任务工作流所定义的任务执行顺序对第一执行平台进行运维的过程中,在尚未执行到第二任务时,若调度***接收到对第二任务的配置修改指令,调度***则可基于该配置修改指令对任务工作流中所定义的第二任务进行修改,并基于修改后的第二任务向第二执行平台发送第二HTTP请求。本申请的方案可通过额外增加的调度***来对HTTP请求进行下发,实现运维的目的;此外,在使用调度***进行运维时,还可以在任务工作流执行的过程中,基于接收到的配置修改指令来对尚未被执行到的任务进行修改,如此针对某一任务工作流,则可以达到灵活地、按需地对其进行实时修改和调整的目的,而无需务必等到运维任务按照旧版本的配置参数执行结束后、还需要重新调整参数并再次执行,才能满足调整的目的,因此本申请的方案具有灵活地对运维过程进行调整的特点,也更易满足运维需求。
在一种可能实现的方法中,所述调度***还包括接收单元;所述发送单元,具体用于:基于任务工作流中的第一任务,确定第一HTTP调度请求的类型为直连加轮询模式;向第一执行平台发送所述第一HTTP调度请求,所述第一HTTP调度请求携带直连加轮询模式的类型标识;所述接收单元,用于接收所述第一执行平台发送的第一任务标识;所述第一任务标识是所述第一执行平台接收到所述第一HTTP调度请求后生成的;所述发送单元,还用于向所述第一执行平台发送携带所述第一任务标识的第三HTTP调度请求;所述第三HTTP请求用于获取所述第一执行平台对所述第一HTTP调度请求的处理状态;所述接收单元,还用于接收所述第一执行平台对所述第一任务的第一执行结果。
基于该方案,对于运维过程中一些复杂、耗时的任务,所引入的调度***可支持对该类型任务的调度,也即在调度***确定任务工作流中的第一任务为复杂、耗时的任务时,则调度***可确定本次下发至第一执行平台的第一HTTP调度请求的类型为直连加轮询模式,并在下发的第一HTTP调度请求中携带直连加轮询模式的类型标识,如此,在第一执行平台接收到第一HTTP调度请求后,可生成第一任务标识并将该第一任务标识发送至调度***,相应的,调度***可接收到该第一任务标识,进一步的,调度***可凭借该第一任务标识、周期性地向第一执行平台发送第三HTTP调度请求,以获取第一执行平台对第一HTTP调度请求的处理状态,最终,调度***可获取到第一任务平台对第一任务的第一执行结果。该方式中可通过所引入的调度***来实现对复杂、耗时任务的直接调度,调度过程中,调度***凭借执行平台返回的任务标识而可以对执行平台对任务的执行结果进行轮询,且该方式还支持在错误恢复时的断点续查或者重新发起请求的操作,从而提高运维效率。
在一种可能实现的方法中,所述调度***还包括接收单元;所述接收单元,用于在所述第一任务执行后,接收所述第一执行平台对所述第一任务的第一执行结果;所述处理单元,还用于:按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格;在确定所述第二任务需使用第一结果值,则从所述设定表格获取所述第一结果值,并基于所述第一结果值生成所述第二HTTP调度请求,以向第二执行平台发送所述第二HTTP调度请求;所述第一结果值是各结果值中的至少一个。
基于该方案,在调度***基于任务工作流执行第一任务的过程中,调度***可接收到第一执行平台对第一任务的第一执行结果,并按照第一任务的输出字典从第一执行结果中提取各结果值并存储至设定表格;进一步的,在调度***执行第一任务的过程中,若同时接收到对第二任务的配置修改指令,且该配置修改指令用于指示第二任务在下发过程中需要使用到第一结果值,则调度***可从设定表格中获取第一结果值对任务工作流中预先定义好的第二任务进行修改,并生成第二HTTP调度请求,而后将该第二HTTP调度请求发送至第二执行平台。该方式中的调度***提供了一种对执行结果进行统一处理的方法,即按照任务的输出字典的方式从执行结果中获取各结果值并存储至设定表格,使得某执行平台的执行结果可被其他执行平台识别和调用,而不是仅仅只能供本执行平台使用,实现了执行结果能在多个执行平台中共享使用,也即该方式中的调度***支持当前任务在尚未被执行时,依然可基于其他任务的执行结果再次进行配置,而无需务必按照预先定义好的参数进行HTTP调度请求的下发,该方式可以根据已执行任务的执行结果来评估并实时调整后续未执行任务的参数,贴合任务调度的实际过程,提高任务调度的效率。
在一种可能实现的方法中,所述第一执行结果中的各结果值通过JSON格式表示;所述处理单元,具体用于:确定所述第一执行结果中的第二结果值对应的输出变量名;所述第二结果值是各结果值中的任一个;基于jq表达式的字段提取规则从所述第一执行结果中确定所述输出变量名对应的输出变量值;确定所述第二结果值具有的输出变量名与输出变量值的对应关系,并将所述对应关系存储至设定表格。
基于该方案,鉴于大部分的执行平台在将任务执行结束后均是通过JSON格式进行执行结果的输出,因此,关于任务的输出字典,可以按照key-value的方式进行设置,其中,key对应于输出变量名,value以jq表达式的形式记录输出变量值,如此,即使各个执行平台对执行结果的表现方式不同,但是在某一执行平台所对应的任务需要基于另一执行平台的执行结果时,则该执行平台可以快速地基于另一平台的任务的输出字典中的结果值对该任务进行配置。
在一种可能实现的方法中,所述调度***还包括接收单元;所述接收单元,用于接收所述第一执行平台对所述第一任务的第一执行结果;所述处理单元,还用于:按照设定格式提取所述第一执行结果中的设定参数值;根据所述设定参数值确定所述第一任务是否成功执行。
基于该方案,在调度***将对应于第一任务的第一HTTP调度请求发送至第一执行平台后,调度***可接收到第一执行平台对第一任务的第一执行结果,随后,调度***可按照设定格式从第一执行结果中提取设定参数值,并根据设定参数值确定第一任务是否成功执行。该方式可在每一个执行结果返回的时候,通过从执行结果中提取设定参数值,并将设定参数值与预设的判断表达式进行比较,由于判断表达式包括有多种形式所表示的成功标识,如此可快速确定任务的执行状态是否为成功。
在一种可能实现的方法中,所述配置修改指令中包括变量名和变量值;所述处理单元,具体用于:使用正则表达式的方式,确定所述变量名在所述任务工作流中的各位置信息,并记录出包含所述变量名及所述各位置信息的元数据;每个位置信息包括变量名的起始位置和变量名的结束位置;所述各位置信息中至少包括一个位置信息位于所述第二任务中;针对每个元数据中的每个位置信息,生成替换数据,所述替换数据包括将所述位置信息、所述变量值和所述变量名的长度差值及所述变量值;针对每个替换数据,将所述任务工作流中所述位置信息的所述变量名替换为所述变量值。
基于该方案,在调度***根据接收到配置修改指令对任务工作流中的第二任务的配置项进行修改时,通过使用正则表达式的方式,确定配置修改指令中的变量名在任务工作流中的各位置信息,然后将任务工作流中的各个位置对应的变量名替换为配置修改指令中的变量值。该方式具有一次扫描,一次替换的优点,可以提高运维效率。
在一种可能实现的方法中,所述配置项是以变量赋值方式设置的,包括以下任一种:预设文本、其他任务的变量名的输出值和本任务的变量名的输出值。
基于该方案,在调度***对任务工作流中预先定义好的任务的配置项进行修改时,由于配置项是以变量赋值方式设置的,因此,可以将变量设置为预设的文本,或者其他任务的变量名的输出值,或者本任务的变量名的输出值。该方式具有灵活赋值的优点,对任务的修改也更易满足调度需求。
第三方面,本申请实施例提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面任一实现方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一实现方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种可能的***架构示意图;
图2为本申请实施例提供的一种对HTTP调度请求的处理方法;
图3为本申请实施例提供的一种调度***;
图4为本申请实施例提供的一种计算设备的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
目前,在一些运维场景中,需要技术人员手动地在多个运维平台上进行配置,从而实现运维的目标。然而当将该方式应用于复杂程度高的运维场景时,此时需要技术人员持续关注运维过程,这显然不够人性化,且成本高。
针对上述技术问题,本申请提供一种可能的***架构示意图,如图1所示,该架构中包括调度***110和执行平台120。作为示例,根据功能可对执行平台进行分类,如图1中所示的执行平台1201,执行平台1202和执行平台1203,它们可分别用于执行不同的功能。
其中,调度***110用于根据预先定义的任务工作流、且结合实际运维过程中接收到的配置修改指令,从而向各个执行平台发送HTTP调度请求。如此,在预先定义的任务工作流全部执行完毕后,也即说明本次的运维目标得到实现。
执行平台120中包括多个不同功能的执行平台,各个执行平台在接收到调度***110发送的HTTP调度请求后,可在本地进行相关参数的配置,最后通过多个执行平台之间的相互配合可实现运维目标。
针对上述技术问题和图1所示的架构,本申请实施例提供一种对HTTP调度请求的处理方法,如图2所示,该方法可由图1所示的调度***执行,包括以下步骤:
步骤201,调度***基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述第一HTTP调度请求用于指示所述第一执行平台执行所述第一任务。
在本步骤中,任务工作流是针对特定的运维目标而预先定义好的,不同的运维目标对应不同的任务工作流,每个任务工作流中可包括各执行平台对应的各任务以及各任务间的执行顺序。本申请实施例在通过调度***实现运维目标的过程中,对于任务工作流中的各个任务,调度***可基于任务而向任务对应的执行平台发送HTTP调度请求,如调度***可基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求,该第一HTTP调度请求用于指示该第一平台执行该第一任务。
步骤202,所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述配置项是以变量赋值方式设置的。
在本步骤中,在调度***向第一执行平台发送用于执行第一任务的第一HTTP调度请求的过程中,调度***还可同期接收到配置修改指令,该配置修改指令用于指示调度***对任务工作流中第二任务的配置项进行修改,因此,调度***可根据该配置修改指令修改第二任务的配置项,其中,配置项是以变量赋值方式设置的。如此的话,在预先定义好的任务工作流中的某一任务尚未被真正执行时,调度***还可以基于配置修改指令来对该任务进行修改,这样可更加贴合运维目标,因为配置修改指令是可根据前期任务在实时执行过程中产生的执行结果进行下发的,从而本申请实施例的调度***具有边执行边调整任务的优点。
步骤203,所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求。
在本步骤中,由于任务工作流中预先定义有第一任务执行完毕后触发执行第二任务的设置,因此在第一任务执行完毕后,调度***可基于修改后的第二任务向第二执行平台发送第二HTTP调度请求,该第二HTTP调度请求用于指示该第二执行平台执行修改后的第二任务。
基于该方案,在对执行平台进行运维的过程中,通过引入调度***,运用调度***来对HTTP请求进行下发,如此可以避免直接在执行平台上进行操作,从而提高运维效率;此外,在调度***基于任务工作流所定义的任务执行顺序对第一执行平台进行运维的过程中,在尚未执行到第二任务时,若调度***接收到对第二任务的配置修改指令,调度***则可基于该配置修改指令对任务工作流中所定义的第二任务进行修改,并基于修改后的第二任务向第二执行平台发送第二HTTP请求。本申请的方案可通过额外增加的调度***来对HTTP请求进行下发,实现运维的目的;此外,在使用调度***进行运维时,还可以在任务工作流执行的过程中,基于接收到的配置修改指令来对尚未被执行到的任务进行修改,如此针对某一任务工作流,则可以达到灵活地、按需地对其进行实时修改和调整的目的,而无需务必等到运维任务按照旧版本的配置参数执行结束后、还需要重新调整参数并再次执行,才能满足调整的目的,因此本申请的方案具有灵活地对运维过程进行调整的特点,也更易满足运维需求。
以下将结合实施例对上述一些步骤进行说明。
在对一些简单场景进行运维时,即使让技术人员在各个执行平台上进行任务工作流中的任务的配置下发,也比较容易实现。然而,在将该方式应用于一些复杂程度高的运维场景时,则显得不够人性化,以及还会产生较大程度的资源消耗,其原因在于:复杂程度高的运维场景中,其中某个/些任务在执行平台进行执行的过程中会相当耗时。此时,若继续采用人工的方式来进行运维,则容易产生不必要的人力资源浪费。例如,DCN(Data CenterNode,数据中心节点)扩容的场景即为一种复杂程度高的运维场景。其中,在对DCN进行扩容的过程中,往往需要调用主机管理平台、容器管理平台、网络管理平台、数据库管理平台、应用发布平台等多个执行平台,通常这些执行平台可提供HTTP接口来操作。然而,这些执行平台可提供的操作,如创建资源、执行发布等任务,通常需要耗费很长的时间才能完成。
为此,本申请实施例基于调度***可提供一种直连加轮询模式,以自动化地对耗时很久的任务进行执行,且还支持重试时的断点续查或重新发起请求的功能,而无需人工在各个执行平台上进行耗时很久的任务的配置下发了。
在上述步骤201的一个实施中,调度***在对任务工作流中的第一任务进行运维之前,也即在调度***将第一任务通过第一HTTP调度请求发往第一执行平台之前,调度***可先确定第一任务的类型,然后基于所确定出的任务类型,匹配出第一HTTP调度请求的类型。若第一任务的类型为耗时很久的类型,则确定第一HTTP调度请求的类型为直连加轮询模式,随后,调度***可向第一执行平台发送第一HTTP调度请求,且该第一HTTP调度请求中携带有直连加轮询的类型标识。相应的,第一执行平台可接收到该第一HTTP调度请求,确定其中包含直连加轮询的类型标识,因此,第一执行平台可首先生成第一任务标识并将该第一任务标识发送至调度***,然后第一执行平台可对第一任务进行执行。相应的,此时调度***可接收到该第一任务标识,随后,调度***可周期性地向第一执行平台发送携带有该第一任务标识的第三HTTP调度请求,该第三HTTP调度请求用于获取第一执行平台对第一HTTP调度请求的处理状态,也即获取第一执行平台对第一任务的执行进度。相应的,第一执行平台可周期性地接收到调度***发送的第三HTTP调度请求,且在第一执行平台每一次接收到该第三HTTP调度请求时,第一执行平台都会向调度***发送一次自己对第一任务的第一执行结果。
需要说明,如此,调度***通过该种直连加轮询模式的调度请求的方式,可以自动化地获取到执行平台对耗时较久的任务的执行进度。
此外,若调度***在某次接收到的第一执行结果中包括了第一执行平台对第一任务执行失败的结论,则在错误恢复时,本申请实施例还支持重试时的断点续查或者重新发起调度请求的功能。换句话说,在错误恢复时,调度***可支持跳过发送第一HTTP调度请求的操作,而直接向第一执行平台发送第三HTTP调度请求进行轮询,或者调度***可支持发起一次全新的调度请求,本申请不做具体限定。
在本申请的某些实施例中,第一HTTP调度请求的类型还可为直连模式,以及可为轮询模式,本申请不做具体限定。
在使用调度***进行运维时,其中涉及到的执行平台可能为多个,如前述的例子中,针对DCN扩容场景的运维,可能涉及到的执行平台包括主机管理平台、容器管理平台、网络管理平台、数据库管理平台、应用发布平台等等,如调用主机管理平台可扩容虚拟机,调用容器管理平台可扩容容器,调用数据库管理平台可设置数据库,调用网络管理平台可添加网络策略。
为了可让任务工作流中的任务成为模板可以反复使用,因此本申请实施例中将构成任务的配置项采用变量赋值的方式进行设置。如一个HTTP调度请求中可包括请求地址,请求方法,请求头,请求数据,以及超时、成功标记等配置项,通过将该些配置项以变量赋值的方式进行设置,则后续只需要对配置项中的变量进行赋值,而无需每次都手动进行调度请求的配置。
在本申请的某些实施例中,轮询模式支持配置的配置项包括:请求方法poll_method、请求地址poll_req、请求头poll_header和请求数据poll_data;直连模式支持配置的配置项包括:请求方法main_data、请求地址main_req、请求头main_header和请求数据main_data。其中,在任一个配置项中,支持在当中使用${VAR}的规则定义一个变量;进一步地,对变量进行赋值的方式可包括:预设文本、其他任务的变量名的输出值和本任务的变量名的输出值。例如,对于参数${VAR},支持三种赋值方式:
1、文本方式:***直接使用该值替换;
2、${TASKID.VAR1}:即调度***会针对任务标识为TASKID的任务,获取其名字为VAR1的变量的输出值来替换;
3、${.VAR2}:即调度***会获取本任务中名字为VAR2的变量的输出值(通常是直连阶段的变量输出值)来替换。
需要说明,上述三种赋值方式具有灵活赋值的优点,对任务的修改也更易满足调度需求。
在本申请的某些实施例中,调度***对任务工作流中的某一任务对应的配置项中的变量进行赋值的时间节点可以包括:在定义任务工作流时,或者在触发任务工作流时,或者在任务工作流已经处于运行状态但仍未运行到该任务时。
在本申请的某些实施例中,关于上述三个时间节点中的任一时间节点,都支持对变量以上述三种赋值方式中的任一方式进行赋值。
例如,在实际赋值的过程中,可按照定义任务工作流、触发任务工作流和任务工作流已经运行的顺序,对变量的赋值依次进行覆盖。即,关于某一变量,如果存在定义时的值,则将定义时的值作为默认值;触发时,若接收到对该变量的赋值,则将该赋值作为有效值;如果任务工作流在运行过程中,若再次接收到对该变量的再次赋值,则将本次的赋值作为最终进行替换的值。如果没有某一节点的值,则忽略本次更新,不允许使用空值进行覆盖;如果三个节点都没有对变量的赋值,则抛出异常提示用户。
在本申请的某些实施例中,所述配置修改指令中包括变量名和变量值;所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项,包括:使用正则表达式的方式,确定所述变量名在所述任务工作流中的各位置信息,并记录出包含所述变量名及所述各位置信息的元数据;每个位置信息包括变量名的起始位置和变量名的结束位置;所述各位置信息中至少包括一个位置信息位于所述第二任务中;针对每个元数据中的每个位置信息,生成替换数据,所述替换数据包括将所述位置信息、所述变量值和所述变量名的长度差值及所述变量值;针对每个替换数据,将所述任务工作流中所述位置信息的所述变量名替换为所述变量值。
在对任务对应的配置项中的变量进行赋值时,本申请实施例提供了一种高效的算法,可避免低效地反复扫描和正则匹配。请参见下述的例子:
步骤1,定义正则表达式'\$\{(.+?)\}',表示匹配${VAR}并取出变量名VAR。
步骤2,使用步骤1中的正则表达式匹配一遍文本,则可以将文本中所有可匹配上的变量、以及变量在文本中的位置获取出来。由于一个变量在同一文本中可能会出现多次,因此本申请中可使用一个列表来存储位置信息,每个位置信息包括起点和终点两个坐标。
比如,使用步骤1中的正则表达式对一文本串为”/api/v1/test?t=${timestamp}&t2=${timestamp}&a=${a}”进行扫描、匹配之后,可得到如下包含变量名及变量名位置信息的元数据:
假设根据预设文本这一赋值方式,令变量名为timestamp和a可分别赋值为1597831032和1,则更新元数据为:
步骤3,对元数据进行处理,把val和每个pos进行组合,定义变量stepLen为val的长度和变量名长度之差,并按照位置信息的起点坐标进行排序,重新整理得到如下数据:
步骤4,使用上述数组即可对原数据进行替换,可直接在原始字符串src(或者它的副本)上进行修改。首先使用一个变量offset记录总体偏移值。遍历数组里的每一份数据,把pos起点和终点分别加上offset偏移,记为p_start和p_end(p_start=pos[0]+offset,p_end=pos[1]+offset)。每次迭代把src开头直到p_start的子串、val值、src从p_end直到结尾的子串拼起来,作为新的src字符串,并且把offset增加stepLen。迭代完毕之后,src即为替换后的字符串了:
/api/v1/test?t=1597831032&t2=1597831032&a=1
上述对变量进行赋值的方式具有一次扫描,一次替换的优点,可以提高运维效率。假设文本长度为l,总共有n个变量,本申请实施例中算法的复杂度是O(l+nlgn),对文本的遍历可以认为是2次。对比每个变量的进行一次正则替换的方法,需要遍历n*l次,因此本申请实施例的替换方式是更加高效的。
本申请实施例中通过使用调度***对各个执行平台下发配置,从而实现运维目标。由于该过程中涉及各个执行平台,因此难以保证各个平台在任务执行结束后所生成的执行结果的格式是统一的。
比如,一个问题是:调度***在判定执行平台对HTTP调度请求的执行结果是否为成功时,一些执行平台将执行结果返回至调度平台时的表现方式是:{"status":"ok","msg":"finished"},而另一些执行平台将执行结果返回至调度平台时的表现方式是:{"retCode":0,"message":"done!"}。对于前一种执行结果的表现方式,调度***需要确定status字段为ok时才认为执行平台对任务的执行结果是成功的,而对于后一种执行结果的表现方式,调度***需要确定retCode字段为0时才认为执行平台对任务的执行结果是成功的。也即,调度***在确定执行结果是否为成功时,需要根据各执行平台的特性来分别制定判定执行结果是否为成功的策略,这显然是比较耗时的工作。
再比如,又一个问题是:若下游的任务在执行过程中,需要使用到某一上游任务的执行结果,然而,用于执行该上游任务的执行平台关于任务在执行后生成的执行结果的表现方式并非可直接用于执行该下游任务的执行平台中,也即一个执行平台的输入依赖于另一个执行平台的输出,然而这两个执行平台之间的输入输出各异。举个例子,关于一个任务标识为TASK_A的任务,它被执行平台执行后生成的执行结果的表现方式为:{"retCode":0,"data":[{"ip":"10.1.1.1","id":1},{"ip":"10.1.1.2","id":2}]},而下游依赖该TASK_A任务的另一个任务标识为TASK_B的任务在被执行平台执行的过程中,执行平台需接收一个形如"10.1.1.1,10.1.1.2"的字符串,该过程中,由于表现方式的不同,用于执行TASK_A任务的执行平台的执行结果并非可直接用于执行TASK_B任务的执行平台,此时需要对TASK_A任务的输出进行转换。
为了解决上述两个问题,且考虑到绝大多数执行平台对执行结果的表现方式均为JSON格式,则本申请实施例中引入jq语法的表达式,如此可以形成一个通用的解决方案。
关于jq语法的使用过程,本申请实施例特举下述两个例子进行说明:
示例1、从{"status":"ok","msg":"finished"}获取status:
.status
解析:通过.操作符可以取出对象中的status字段。
示例2、从{"retCode":0,"data":[{"ip":"10.1.1.1","id":1},{"ip":"10.1.1.2","id":2}]}获取"10.1.1.1,10.1.1.2":
[.data[]|.ip]|join(",")
解析:首先,可先通过.data[]把多个包含ip和id的对象获取出来。对于每一个对象,可以通过.ip来获取具体的ip值。这两个过滤器通过一个管道|连接起来。由于结果是多个元素,可通过[]构造成一个数组返回。最后,为了转换成一个字符串,可用join函数,使用","作为分割符参数。
在本申请的某些实施例中,所述调度***接收所述第一执行平台对所述第一任务的第一执行结果;所述调度***按照设定格式提取所述第一执行结果中的设定参数值;所述调度***根据所述设定参数值确定所述第一任务是否成功执行。
针对上述两个问题中的第一个问题,也即根据执行结果判断请求是否成功,更详细地,对直连模式须判断请求是否成功,对轮询模式须判断请求是否成功或者结束。这里的判断表达式judge_exp可使用python语言的表达式来描述,使用assert eval(judge_exp)的计算进行判断。其中,判断表达式judge_exp用于表示一种设定格式,它当中包含的形如${VAR}的变量,可以用前述的正则表达式匹配变量的方式进行扫描和替换,要替换的值通过一个response_check_var字典提供,该字典的key为变量名VAR,value为jq表达式。
具体举例如下:
假设有个任务标识为TASK_B的任务对应的HTTP请求为直连加轮询模式,直连阶段返回形如{"status":0,"taskId":"abcd"},且预先定义需要判定status为0或者1才能认为请求成功,那么:
judge_exp可设置为:'${ret}==0or${ret}==1’;
response_check_var设置为:{"ret":".status"}。
如此,对于任务标识为TASK_B的任务,通过.status操作得到ret字段对应的值为0,然后,由于0符合了判断表达式judge_exp所表示的判断成功的要求,如此说明TASK_B的任务在本次的执行结果是成功。
在本申请的某些实施例中,所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求,包括:所述调度***接收所述第一执行平台对所述第一任务的第一执行结果;所述调度***按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格;所述调度***在确定所述第二任务需使用第一结果值,则从所述设定表格获取所述第一结果值,并基于所述第一结果值生成所述第二HTTP调度请求;所述第一结果值是各结果值中的至少一个。
在本申请的某些实施例中,所述调度***按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格,包括:所述调度***确定所述第一执行结果中的第二结果值对应的输出变量名;所述第二结果值是各结果值中的任一个;所述调度***基于jq表达式的字段提取规则从所述第一执行结果中确定所述输出变量名对应的输出变量值;所述调度***确定所述第二结果值具有的输出变量名与输出变量值的对应关系,并将所述对应关系存储至设定表格。
针对上述两个问题中的第二个问题,也即需要对执行平台的执行结果进行提取和转换。本申请实施例中为每个任务定义一个输出字典(OUTPUT),key为输出变量名,value为jq表达式,在任务执行完成后,可解析OUTPUT中的每一个变量对应的value,提取出数据之后,写入数据库。后续的任务可通过其他任务的变量名的输出值的赋值方式${TASKID.VAR}获取到上游任务的OUTPUT的VAR的值,用于替换后续任务中的变量;特别地,如果OUTPUT是在直连阶段产生,那么本任务的轮询阶段可以通过本任务的变量名的输出值的赋值方式${.VAR}获取到OUTPUT中的VAR变量值进行替换。
具体举例如下:
假设有个任务标识为TASK_B的任务对应的HTTP请求为直连加轮询模式,直连阶段返回形如{"status":0,"taskId":"abcd"},该任务的OUTPUT可定义为{"task_id":".taskId","ret_code":".status"},则当直连阶段完成之后,会把一条key为task_id,value为abcd和一条key为ret_code,value为0的数据写入数据库特定表。
接着,在TASK_B所标识的任务的轮询阶段,poll_data定义为{"id":"${poll_id}"},并且在触发时传入{"poll_id":"${.task_id}"},那么则可以在变量替换时把poll_data实例化成{"id":"abcd"}作为轮询的数据了。
或者,假设某个依赖于TASK_B所标识的任务的TASK_C所标识的任务是一个直连模式的任务,TASK_C所标识的任务的配置相中的main_data定义为{"from_upstream":"${upstream_id}"},并且在运行时传入{"upstream_id":"${TASK_B.task_id}"},那么就可以在变量替换时把main_data实例化成{"from_upstream_id":"abcd"}作为直连请求的数据了。
基于同样的构思,本申请实施例提供一种调度***,如图3所示,该调度***包括发送单元301和处理单元302:
发送单元301,用于基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述第一HTTP调度请求用于指示所述第一执行平台执行所述第一任务。
处理单元302,用于根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述配置项是以变量赋值方式设置的。
发送单元301,还用于在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求;所第二HTTP调度请求用于指示所述第二执行平台执行所述第二任务;所述任务工作流定义有所述第一任务执行后触发所述第二任务。
进一步的,对于该调度***,还包括接收单元303;发送单元301,具体用于:基于任务工作流中的第一任务,确定第一HTTP调度请求的类型为直连加轮询模式;向第一执行平台发送所述第一HTTP调度请求,所述第一HTTP调度请求携带直连加轮询模式的类型标识;接收单元303,用于接收所述第一执行平台发送的第一任务标识;所述第一任务标识是所述第一执行平台接收到所述第一HTTP调度请求后生成的;发送单元301,还用于向所述第一执行平台发送携带所述第一任务标识的第三HTTP调度请求;所述第三HTTP请求用于获取所述第一执行平台对所述第一HTTP调度请求的处理状态;接收单元303,还用于接收所述第一执行平台对所述第一任务的第一执行结果。
进一步的,对于该调度***,接收单元303,用于在所述第一任务执行后,接收所述第一执行平台对所述第一任务的第一执行结果;处理单元302,还用于:按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格;在确定所述第二任务需使用第一结果值,则从所述设定表格获取所述第一结果值,并基于所述第一结果值生成所述第二HTTP调度请求,以向第二执行平台发送所述第二HTTP调度请求;所述第一结果值是各结果值中的至少一个。
进一步的,对于该调度***,所述第一执行结果中的各结果值通过JSON格式表示;处理单元302,具体用于:确定所述第一执行结果中的第二结果值对应的输出变量名;所述第二结果值是各结果值中的任一个;基于jq表达式的字段提取规则从所述第一执行结果中确定所述输出变量名对应的输出变量值;确定所述第二结果值具有的输出变量名与输出变量值的对应关系,并将所述对应关系存储至设定表格。
进一步的,对于该调度***,接收单元303,用于接收所述第一执行平台对所述第一任务的第一执行结果;处理单元302,还用于:按照设定格式提取所述第一执行结果中的设定参数值;根据所述设定参数值确定所述第一任务是否成功执行。
进一步的,对于该调度***,所述配置修改指令中包括变量名和变量值;处理单元302,具体用于:使用正则表达式的方式,确定所述变量名在所述任务工作流中的各位置信息,并记录出包含所述变量名及所述各位置信息的元数据;每个位置信息包括变量名的起始位置和变量名的结束位置;所述各位置信息中至少包括一个位置信息位于所述第二任务中;针对每个元数据中的每个位置信息,生成替换数据,所述替换数据包括将所述位置信息、所述变量值和所述变量名的长度差值及所述变量值;针对每个替换数据,将所述任务工作流中所述位置信息的所述变量名替换为所述变量值。
进一步的,对于该调度***,所述配置项是以变量赋值方式设置的,包括以下任一种:预设文本、其他任务的变量名的输出值和本任务的变量名的输出值。
本申请实施例还提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器,可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本申请实施例中,存储器可以用于存储对HTTP调度请求的处理方法的程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行对HTTP调度请求的处理方法。
如图4所示,为本申请实施例提供的一种计算设备的示意图,该计算设备包括:
处理器401、存储器402、收发器403、总线接口404;其中,处理器401、存储器402与收发器403之间通过总线405连接;
所述处理器401,用于读取所述存储器402中的程序,执行上述对HTTP调度请求的处理方法;
处理器401可以是中央处理器(central processing unit,简称CPU),网络处理器(network processor,简称NP)或者CPU和NP的组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称ASIC),可编程逻辑器件(programmable logic device,简称PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,简称CPLD),现场可编程逻辑门阵列(field-programmable gate array,简称FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。
所述存储器402,用于存储一个或多个可执行程序,可以存储所述处理器401在执行操作时所使用的数据。
具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器402可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称RAM);存储器402也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称HDD)或固态硬盘(solid-state drive,简称SSD);存储器402还可以包括上述种类的存储器的组合。
存储器402存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作***:包括各种***程序,用于实现各种基础业务以及处理基于硬件的任务。
总线405可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
总线接口404可以为有线通信接入口,无线总线接口或其组合,其中,有线总线接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线总线接口可以为WLAN接口。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行短链接的生成与解析的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种对HTTP调度请求的处理方法,其特征在于,包括:
调度***基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述第一HTTP调度请求用于指示所述第一执行平台执行所述第一任务;
所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述配置项是以变量赋值方式设置的;
所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求;所第二HTTP调度请求用于指示所述第二执行平台执行所述第二任务;所述任务工作流定义有所述第一任务执行后触发所述第二任务。
2.如权利要求1所述的方法,其特征在于,所述调度***基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求,包括:
所述调度***基于任务工作流中的第一任务,确定第一HTTP调度请求的类型为直连加轮询模式;
所述调度***向第一执行平台发送所述第一HTTP调度请求,所述第一HTTP调度请求携带直连加轮询模式的类型标识;
所述调度***向第二执行平台发送第二HTTP调度请求之前,还包括:
所述调度***接收所述第一执行平台发送的第一任务标识;所述第一任务标识是所述第一执行平台接收到所述第一HTTP调度请求后生成的;
所述调度***向所述第一执行平台发送携带所述第一任务标识的第三HTTP调度请求;所述第三HTTP调度请求用于获取所述第一执行平台对所述第一HTTP调度请求的处理状态;
所述调度***接收所述第一执行平台对所述第一任务的第一执行结果。
3.如权利要求1所述的方法,其特征在于,所述调度***在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求,包括:
所述调度***在所述第一任务执行后,接收所述第一执行平台对所述第一任务的第一执行结果;
所述调度***按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格;
所述调度***在确定所述第二任务需使用第一结果值,则从所述设定表格获取所述第一结果值,并基于所述第一结果值生成所述第二HTTP调度请求,以向第二执行平台发送所述第二HTTP调度请求;所述第一结果值是各结果值中的至少一个。
4.如权利要求3所述的方法,其特征在于,所述第一执行结果中的各结果值通过JSON格式表示;
所述调度***按照所述第一任务的输出字典提取所述第一执行结果中的各结果值并存储至设定表格,包括:
所述调度***确定所述第一执行结果中的第二结果值对应的输出变量名;所述第二结果值是各结果值中的任一个;
所述调度***基于jq表达式的字段提取规则从所述第一执行结果中确定所述输出变量名对应的输出变量值;
所述调度***确定所述第二结果值具有的输出变量名与输出变量值的对应关系,并将所述对应关系存储至设定表格。
5.如权利要求1所述的方法,其特征在于,还包括:
所述调度***接收所述第一执行平台对所述第一任务的第一执行结果;
所述调度***按照设定格式提取所述第一执行结果中的设定参数值;
所述调度***根据所述设定参数值确定所述第一任务是否成功执行。
6.如权利要求1-5任一项所述的方法,其特征在于,所述配置修改指令中包括变量名和变量值;所述调度***根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项,包括:
使用正则表达式的方式,确定所述变量名在所述任务工作流中的各位置信息,并记录出包含所述变量名及所述各位置信息的元数据;每个位置信息包括变量名的起始位置和变量名的结束位置;所述各位置信息中至少包括一个位置信息位于所述第二任务中;
针对每个元数据中的每个位置信息,生成替换数据,所述替换数据包括将所述位置信息、所述变量值和所述变量名的长度差值及所述变量值;
针对每个替换数据,将所述任务工作流中所述位置信息的所述变量名替换为所述变量值。
7.如权利要求6所述的方法,其特征在于,所述配置项是以变量赋值方式设置的,包括以下任一种:预设文本、其他任务的变量名的输出值和本任务的变量名的输出值。
8.一种调度***,其特征在于,包括:
发送单元,用于基于任务工作流中的第一任务,向第一执行平台发送第一HTTP调度请求;所述任务工作流中包括各执行平台对应的各任务及各任务间的执行顺序;所述第一HTTP调度请求用于指示所述第一执行平台执行所述第一任务;
处理单元,用于根据接收的配置修改指令,修改所述任务工作流中第二任务的配置项;所述配置项是以变量赋值方式设置的;
所述发送单元,还用于在所述第一任务执行后,基于修改后的第二任务,向第二执行平台发送第二HTTP调度请求;所第二HTTP调度请求用于指示所述第二执行平台执行所述第二任务;所述任务工作流定义有所述第一任务执行后触发所述第二任务。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011260187.0A CN112367205B (zh) | 2020-11-12 | 2020-11-12 | 一种对http调度请求的处理方法及调度*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011260187.0A CN112367205B (zh) | 2020-11-12 | 2020-11-12 | 一种对http调度请求的处理方法及调度*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112367205A true CN112367205A (zh) | 2021-02-12 |
CN112367205B CN112367205B (zh) | 2023-04-18 |
Family
ID=74514426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011260187.0A Active CN112367205B (zh) | 2020-11-12 | 2020-11-12 | 一种对http调度请求的处理方法及调度*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112367205B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113344548A (zh) * | 2021-06-30 | 2021-09-03 | 深圳前海微众银行股份有限公司 | 一种工作流生成方法、装置、设备及存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102455941A (zh) * | 2010-10-29 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种基于范式的多任务调度方法、装置及通信终端 |
CN103838626A (zh) * | 2014-02-27 | 2014-06-04 | 华为技术有限公司 | 一种处理串行任务的数据处理装置及方法 |
CN104239148A (zh) * | 2013-06-06 | 2014-12-24 | 腾讯科技(深圳)有限公司 | 一种分布式任务调度方法及装置 |
CN107168789A (zh) * | 2016-03-08 | 2017-09-15 | 阿里巴巴集团控股有限公司 | 多任务的串行调度方法以及装置 |
CN107608774A (zh) * | 2017-09-08 | 2018-01-19 | 新智云数据服务有限公司 | 一种任务调度方法、装置、设备及存储介质 |
US20180024863A1 (en) * | 2016-03-31 | 2018-01-25 | Huawei Technologies Co., Ltd. | Task Scheduling and Resource Provisioning System and Method |
CN108319499A (zh) * | 2018-02-07 | 2018-07-24 | 麒麟合盛网络技术股份有限公司 | 任务调度方法及装置 |
CN109743390A (zh) * | 2019-01-04 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN109766196A (zh) * | 2018-12-18 | 2019-05-17 | 深圳云天励飞技术有限公司 | 一种任务调度方法、装置及设备 |
CN109901920A (zh) * | 2019-01-18 | 2019-06-18 | 中国平安财产保险股份有限公司 | 任务调度方法及装置、电子终端 |
CN110069572A (zh) * | 2019-03-19 | 2019-07-30 | 深圳壹账通智能科技有限公司 | 基于大数据平台的hive任务调度方法、装置、设备及存储介质 |
CN111510468A (zh) * | 2019-01-30 | 2020-08-07 | 杭州海康威视数字技术股份有限公司 | 计算任务的调度方法、装置、服务器及计算*** |
CN111831420A (zh) * | 2020-07-20 | 2020-10-27 | 北京百度网讯科技有限公司 | 用于任务调度的方法、装置、电子设备及计算机可读存储介质 |
-
2020
- 2020-11-12 CN CN202011260187.0A patent/CN112367205B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102455941A (zh) * | 2010-10-29 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种基于范式的多任务调度方法、装置及通信终端 |
CN104239148A (zh) * | 2013-06-06 | 2014-12-24 | 腾讯科技(深圳)有限公司 | 一种分布式任务调度方法及装置 |
CN103838626A (zh) * | 2014-02-27 | 2014-06-04 | 华为技术有限公司 | 一种处理串行任务的数据处理装置及方法 |
CN107168789A (zh) * | 2016-03-08 | 2017-09-15 | 阿里巴巴集团控股有限公司 | 多任务的串行调度方法以及装置 |
US20180024863A1 (en) * | 2016-03-31 | 2018-01-25 | Huawei Technologies Co., Ltd. | Task Scheduling and Resource Provisioning System and Method |
CN107608774A (zh) * | 2017-09-08 | 2018-01-19 | 新智云数据服务有限公司 | 一种任务调度方法、装置、设备及存储介质 |
CN108319499A (zh) * | 2018-02-07 | 2018-07-24 | 麒麟合盛网络技术股份有限公司 | 任务调度方法及装置 |
CN109766196A (zh) * | 2018-12-18 | 2019-05-17 | 深圳云天励飞技术有限公司 | 一种任务调度方法、装置及设备 |
CN109743390A (zh) * | 2019-01-04 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
WO2020140683A1 (zh) * | 2019-01-04 | 2020-07-09 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN109901920A (zh) * | 2019-01-18 | 2019-06-18 | 中国平安财产保险股份有限公司 | 任务调度方法及装置、电子终端 |
CN111510468A (zh) * | 2019-01-30 | 2020-08-07 | 杭州海康威视数字技术股份有限公司 | 计算任务的调度方法、装置、服务器及计算*** |
CN110069572A (zh) * | 2019-03-19 | 2019-07-30 | 深圳壹账通智能科技有限公司 | 基于大数据平台的hive任务调度方法、装置、设备及存储介质 |
CN111831420A (zh) * | 2020-07-20 | 2020-10-27 | 北京百度网讯科技有限公司 | 用于任务调度的方法、装置、电子设备及计算机可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113344548A (zh) * | 2021-06-30 | 2021-09-03 | 深圳前海微众银行股份有限公司 | 一种工作流生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112367205B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3842948B1 (en) | Method and apparatus for testing edge computing, device, and readable storage medium | |
CN109582301B (zh) | 基于任务调度***的业务处理方法、装置、设备及介质 | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN109361628B (zh) | 报文组装方法、装置、计算机设备和存储介质 | |
CN111752587B (zh) | 小程序的批量处理方法、装置、电子设备以及可读存储介质 | |
CN111026634A (zh) | 一种接口自动化测试***、方法、装置及存储介质 | |
CN110880100A (zh) | 业务审批的处理方法、装置及*** | |
CN109614271B (zh) | 多个集群数据一致性的控制方法、装置、设备及存储介质 | |
CN112559143A (zh) | 任务调度方法、***及计算设备 | |
JP4336363B2 (ja) | ビジネスプロセス実行方法、ビジネスプロセス実行システムおよびプログラム | |
CN111988429A (zh) | 算法调度方法以及*** | |
CN113094125B (zh) | 业务流程处理方法、装置、服务器及存储介质 | |
CN112367205B (zh) | 一种对http调度请求的处理方法及调度*** | |
WO2024139011A1 (zh) | 信息处理方法 | |
CN109508193B (zh) | 一种应用部署运行方法、装置、终端设备和介质 | |
CN106302125A (zh) | 一种对请求信息进行响应的方法、装置及*** | |
CN115328457A (zh) | 基于参数配置的表单页面实现方法和装置 | |
CN109150993B (zh) | 一种获取网络请求切面的方法、终端装置及存储介质 | |
CN114327673A (zh) | 一种任务启动方法、装置、电子设备及存储介质 | |
CN111190637B (zh) | 一种版本文件发布的管理方法、装置以及*** | |
CN112632559A (zh) | 漏洞自动验证方法、装置、设备及存储介质 | |
CN113448960A (zh) | 一种导入表格文件的方法和装置 | |
CN110928672A (zh) | 一种任务编排方法、装置、设备及存储介质 | |
CN112825044B (zh) | 任务执行方法、装置及计算机存储介质 | |
US11645125B2 (en) | Method and apparatus for executing workflow including functions written in heterogeneous programing language |
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 |