CN114095487A - 一种远程任务执行方法、装置及存储介质 - Google Patents
一种远程任务执行方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114095487A CN114095487A CN202010752708.8A CN202010752708A CN114095487A CN 114095487 A CN114095487 A CN 114095487A CN 202010752708 A CN202010752708 A CN 202010752708A CN 114095487 A CN114095487 A CN 114095487A
- Authority
- CN
- China
- Prior art keywords
- remote
- task
- client
- remote task
- session
- 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
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000013515 script Methods 0.000 claims description 89
- 238000012790 confirmation Methods 0.000 claims description 7
- 238000004886 process control Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- 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]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- 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/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开一种远程任务执行方法,包括:获取待执行的远程任务;根据所述远程任务的主机信息,确认执行所述远程任务的客户端;获取所述远程任务的会话资源;基于所述会话资源执行所述远程任务;本申请还公开一种存储介质和远程任务执行装置,通过本申请公开的远程任务执行方法、存储介质和装置,可以提升远程任务执行的稳定性。
Description
技术领域
本申请涉及大数据技术领域,尤其涉及一种远程任务执行方法、装置及存储介质。
背景技术
目前很多抽取、转换、加载(Extract Transform Load,ETL)工具都提供了调用远程脚本,通常是将支持安全外壳协议(Secure Shell,SSH)的客户端连接到远程主机,远程执行任务,并等待任务结果返回客户端。但相关技术中,远程任务执行的稳定性较低,如何提升远程任务执行的稳定性,是需要解决的技术问题。
发明内容
本申请实施例提供一种远程任务执行方法、装置及存储介质,可以提升远程任务执行的稳定性。
本申请实施例的技术方案是这样实现的:
获取待执行的远程任务;
根据所述远程任务的主机信息,确认执行所述远程任务的客户端;
获取所述远程任务的会话资源;
基于所述会话资源执行所述远程任务。
上述方案中,所述确认执行所述远程任务的客户端包括:
在已经创建与所述主机信息对应的客户端的情况下,确认所述已经创建的客户端为执行所述远程任务的客户端;
或者,在不存在与所述主机信息对应的客户端的情况下,创建与所述主机信息对应的客户端,确认所创建的客户端为执行所述远程任务的客户端。
上述方案中,所述获取所述远程任务的会话资源包括:
在会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量小于第一阈值的情况下,创建与所述远程任务对应的会话,获取所述远程任务的会话资源。
或者,在会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量大于或等于第一阈值的情况下,若待处理任务队列的长度小于第二阈值,将所述远程任务存储至所述待处理任务队列,等待获取所述远程任务的会话资源。
上述方案中,所述基于所述会话资源执行所述远程任务包括:
创建可用的信道,以及与所述远程任务对应的文件;
基于所述信道执行所述文件中远程任务对应的脚本;
存储执行所述脚本的过程中输出的日志文件。
上述方案中,所述基于所述会话资源执行所述远程任务还包括:
将所述脚本的进程控制符PID存储至PID文件中。
上述方案中,所述方法还包括:
基于所述PID文件中对应所述脚本的PID,确认所述远程任务的执行情况。
本申请还提供一种远程任务执行装置,所述装置包括:
第一获取模块,用于获取待执行的远程任务;
确认模块,用于根据所述远程任务的主机信息,确认执行所述远程任务的客户端;
第二获取模块,用于获取所述远程任务的会话资源;
执行模块,用于基于所述会话资源执行所述远程任务。
上述方案中,所述确认模块还用于:
在已经创建与所述主机信息对应的客户端的情况下,确认所述已经创建的客户端为执行所述远程任务的客户端;
或者,在不存在与所述主机信息对应的客户端的情况下,创建与所述主机信息对应的客户端,确认所创建的客户端为执行所述远程任务的客户端。
上述方案中,所述第二获取模块还用于:
在会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量小于第一阈值的情况下,创建与所述远程任务对应的会话,获取所述远程任务的会话资源;
或者,在所述会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量大于或等于第一阈值的情况下,若待处理任务队列的长度小于第二阈值,将所述远程任务存储至所述待处理任务队列,等待获取所述远程任务的会话资源。
上述方案中,所述执行模块还用于:
创建可用的信道,以及与所述远程任务对应的文件;
基于所述信道执行所述文件夹中远程任务对应的脚本;
存储执行所述脚本的过程中输出的日志文件。
上述方案中,所述执行模块还用于:
将所述脚本的进程控制符PID存储至PID文件中。
上述方案中,所述确认模块还用于:
基于所述PID文件中对应所述脚本的PID,确认所述远程任务的执行情况。
本申请实施例提供的远程任务执行方法、装置及存储介质,通过获取待执行的远程任务;根据所述远程任务的主机信息,确认执行所述远程任务的客户端;所述远程任务的会话资源;基于所述会话资源执行所述远程任务。通过获取的远程任务的会话资源执行所述远程任务,避免在执行任务的过程中连接不稳定导致执行远程任务失败的问题,提升了远程任务执行的稳定性。
附图说明
图1为本申请实施例提供的远程任务执行方法的可选流程示意图一;
图2为本申请实施例提供的基于会话资源执行远程任务的可选流程示意图;
图3为本申请实施例提供的一种远程任务执行方法的交互示意图;
图4为本申请实施例提供的远程任务执行方法的可选流程示意图二;
图5为本申请实施例提供的执行远程任务的可选流程示意图;
图6为本申请实施例提供的远程任务执行装置的可选结果示意图一;
图7为本申请实施例提供的远程任务执行装置的可选结果示意图二。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
Actor模型是1973年提出的一个分布式并发编程模式,在Erlang语言中得到广泛支持和使用。在AKKA中可以认为一个Actor模型就是一个容器,用来存储状态、行为、邮箱Mailbox、子Actor、Supervisor策略。Actor之间并不直接通信,而是通过邮件来互通有无。Actor模型的本质就是消息传递,作为一种计算实体,Actor与原子类似。参与者是一个运算实体,回应接收到的消息,同时并行的发送有限数量的消息给其他参与者、创建有限数量的新参与者、指定接收到下一个消息时的行为。
Actor模型推崇的哲学是“一切皆是参与者”,与面向对象编程的“一切皆是对象”类似,但面向对象编程通常是顺序执行的,而Actor模型则是并行执行的。一个Actor指的是一个最基本的计算单元,能够接受一个消息并基于它执行计算。这个理念也很类似面向对象语言中:一个对象接收一个消息(方法调用),然后根据接收的消息执行。Actors之间相互隔离,它们并不相互共享内存。这点区别于上述的对象,也就是说,一个Actor能维持一个私有的状态,并且这个状态不可能被另一个Actor所改变。
很多ETL工具都提供了调用远程脚本的工具,如Kettle、Informatica、Teradata等。调用远程脚本已经成为ETL工具必不可少的能力,且使用非常广泛。
调用远程脚本主要有两种实现方式:
1)远程客户端使用SSH远程登录至目标主机,调用所述目标主机上的脚本,实现远程调用脚本的功能。
2)通过在远程节点上部署客户端,服务器将任务发送至所述客户端,所述客户端接到任务后,执行远程脚本,并将执行后的结果返回至服务器。
上述方式2)对目标主机存在较大的入侵,通常不采用,而是使用方式1)实现调用远程脚本。
相关技术中,通常使用开源将Java安全通道(Java Secure Channel,Jsch)库提供的SSH客户端连接到目标主机,然后调用SFTPClient的exec()方法,远程执行任务,并等待任务的执行结果返回。
但远程执行任务时通常使用长连接,在远程执行任务的过程中,连接一直存在。并且,在执行任务的过程中,网络难免会出现一些波动,进而会造成远程执行任务的连接不稳定,部分情况会造成连接失败,影响对任务执行结果的监控。
相关技术中,目标主机的一个任务就会存在对应的一个连接,一台目标主机能够提供的远程任务的数目受限于目标主机的SSH服务器(SSH Server)的配置,并且较多的连接也会造成目标主机压力过大,影响其他业务的正常使用。
远程任务在执行的过程中,由于客户端与目标主机的连接不稳定等问题,导致客户端无法获取到所述远程任务的相关日志,在任务退出后,也无法及时查看到相应的错误码,造成使用困扰,也不便于问题定位。
基于目前远程任务执行方法中存在的问题,本申请提出一种远程任务执行方法,能够解决现有技术方案中无法解决的技术难题和缺点。
图1示出了本申请实施例提供的远程任务执行方法的可选流程示意图一,将根据各个步骤进行说明。
步骤S101,获取待执行的远程任务。
在一些实施例中,服务器获取待执行的远程任务包括:服务器获取与所述服务器建立连接的至少一个主机的全部远程任务,和/或与所述至少一个主机的全部远程任务对应的脚本。
在一些实施例中,获取待执行的远程任务,可以由服务器中的分配符(Allocator)管理器执行。
步骤S102,根据所述远程任务的主机信息,确认执行所述远程任务的客户端。
在一些实施例中,服务器根据所述远程任务的主机信息,确认执行所述远程任务的客户端包括:在已经创建与所述主机信息对应的客户端的情况下,确认所述已经创建的客户端为执行所述远程任务的客户端;或者,在不存在与所述主机信息对应的客户端的情况下,创建与所述主机信息对应的客户端,确认所创建的客户端为执行所述远程任务的客户端。
在一些实施例中,创建与所述主机信息对应的客户端包括:调用命令创建与所述主机信息对应的客户端。
在一些实施例中,至少一个客户端与所述主机信息对应,所述至少一个客户端与所述主机信息对应包括:所述至少一个客户端执行所述主机信息所属的目标主机的远程任务。
在另一些实施例中,在确认执行所述远程任务的客户端的情况下,所述方法还包括:从服务器的内存中获取与所述主机信息对应的客户端(Client)管理器。
在一些实施例中,所述主机信息包括:主机名(Host)、主机的用户名(User)、与主机的用户名对应的密码(Password)和主机与服务器连接的端口号(Port)中至少一种。
在一些实施例中,服务器中的Allocator管理器执行步骤S102的操作。
在一些实施例中,服务器中的Allocator管理器与至少一个主机连接,管理所述至少一个主机的全部远程任务。所述管理所述至少一个主机的全部远程任务至少包括以下一种:添加远程任务、删除远程任务和确认远程任务的执行情况。服务器中的Client管理器的数量和与Allocator管理器连接的至少一个主机的数量相等,每一个Client管理器均与一个主机对应,所述Client管理器管理与所述Client管理器对应主机的全部远程任务。
在一些实施例中,所述客户端可以是服务器内部的任务执行器(Ececutor),还可以是服务器外部的客户端,通过SSH远程登录至所述服务器。所述任务执行器或者服务器外部的客户端,用于安装或执行目标主机的任务,在目标主机上异步执行并监控任务执行情况。
步骤S103,获取所述远程任务的会话资源。
在一些实施例中,服务器获取所述远程任务的会话资源包括:在会话队列(Session Queue)中存在与所述远程任务对应的会话资源的情况下,获取与所述远程任务对应的会话资源;或者,在会话队列中不存在与所述远程任务对应的会话资源,且会话队列中的会话数量小于第一阈值的情况下,创建与所述远程任务对应的会话,获取所述远程任务的会话资源;或者,在会话队列中不存在与所述远程任务对应的会话资源,且会话队列中的会话数量大于或等于第一阈值的情况下,若待处理任务队列的长度小于第二阈值,将所述远程任务存储至所述待处理任务队列,等待获取所述远程任务的会话资源。
在一些实施例中,所述创建与所述远程任务对应的会话包括:创建所述服务器与执行所述远程任务的客户端的会话,和/或创建所述服务器与执行所述远程任务的客户端之间的信道。
在一些实施例中,在会话队列中不存在与所述远程任务对应的会话资源,且会话队列中的会话数量大于或等于第一阈值,且待处理任务队列的长度大于或等于第二阈值的情况下,服务器报告错误信息,将所述远程任务的执行状态标记为“异常”。
在一些实施例中,所述第一阈值表征正常执行状态下,会话队列中会话数量的最大值;所述第二阈值表征正常执行状态下,待处理任务队列中任务数量的最大值。所述第一阈值和/或第二阈值可以根据实际需要灵活设置。
在一些实施例中,服务器中的Client管理器获取所述远程任务的会话资源,执行步骤S103的操作。
步骤S104,基于所述会话资源执行所述远程任务。
在一些实施例中,服务器基于所述会话资源执行所述远程任务包括步骤S201至步骤S204,图2示出了本申请实施例提供的基于会话资源执行远程任务的可选流程示意图,将根据各个步骤进行说明。
步骤S201,创建可用的信道以及与所述远程任务对应的文件。
在一些实施例中,服务器基于所述会话资源创建可用的信道,以及与所述远程任务对应的文件包括:服务器调用命令创建信道,并判断所述信道是否可以使用,在所述信道可以使用的情况下,服务器创建与所述远程任务对应的文件目录和文件夹。
在一些实施例中,服务器通过调用命令判断所述信道是否可以使用。
在一些实施例中,服务器创建与所述远程任务对应的文件目录和文件夹还包括:服务器将与所述远程任务对应的脚本插入至服务器中的本地脚本运行模块包括的Script.sh文件中。
在一些实施例中,服务器将与所述远程任务对应的脚本进行封装后,将所述封装的脚本插入至服务器中的本地脚本运行模块包括的Script.sh文件中。
在一些实施例中,服务器内部的任务执行器(Ececutor),或者服务器外部的客户端,创建可用的信道以及与所述远程任务对应的文件。
步骤S202,基于所述信道执行所述文件中远程任务对应的脚本。
在一些实施例中,客户端基于所述信道执行所述文件中远程任务对应的脚本包括:任务执行器或者服务器外部的客户端,基于步骤S201中创建的可用信道,在目标主机上异步执行所述远程任务对应的脚本。
步骤S203,存储执行所述脚本的过程中输出的日志文件。
在一些实施例中,所述客户端存储执行所述脚本的过程中输出的日志文件包括:客户端在执行所述远程任务对应的脚本的过程中,将所述脚本的进程控制符PID存储至PID文件中,和/或,客户端在执行所述远程任务对应的脚本的过程中,将所述执行所述脚本的过程中输出的日志文件存储至目标主机中。
在一些实施例中,在所述PID文件中不存在所述脚本的PID的情况下,服务器从所述目标主机中获取并存储执行所述脚本的过程中输出的日志文件。
在一些实施例中,服务器中的Allocator管理器获取并存储所述日志文件。
步骤S204,基于所述PID文件中对应所述脚本的PID,确定所述远程任务的执行情况。
在一些实施例中,服务器基于所述目标主机中PID文件中对应所述脚本的PID,判断所述远程任务的执行情况包括:在所述PID文件中存在对应所述脚本的PID的情况下,确定所述远程任务未执行完成;或者,在上述PID文件中不存在对应所述脚本的PID的情况下,确定所述远程任务执行完成,服务器获取并存储执行所述脚本的过程中输出的日志文件。
在另一些实施例中,服务器以第一时间阈值为周期查看所述PID文件中对应所述脚本的PID是否存在,进而确定所述远程任务的执行情况。
如此,通过本申请实施例提供的远程任务执行方法,可以使至少一个客户端之间通过远程任务的会话资源实现共享目标主机的远程任务,进一步实现连接复用,同时,在所述至少一个客户端之间共享远程任务的情况下,所述至少一个客户端可以执行至少一个远程任务,因此客户端的数量不会随着远程任务数量的增加对应呈线性增长,实现降低与所述目标主机和/或服务器的SSH连接数量,降低了目标主机和/或服务器的负载的目的。本申请实施例提供的远程任务执行方法中,通过存储执行所述脚本的过程中输出的日志文件,将远程任务的执行结果存放在目标主机上,服务器可以向目标主机查询和/或获取相应的远程任务的执行结果,不会出现由于连接不稳定造成的任务状态丢失和/或日志丢失的情况,同时,服务器获取的日志也便于排除问题与定位问题。
图3示出了本申请实施例提供的一种远程任务执行方法的交互示意图,图4示出了本申请实施例提供的一种远程任务执行方法的可选流程示意图二,将结合图3和图4进行说明。
步骤S301,分配符管理器获取远程程序脚本。
在一些实施例中,服务器中的Allocator管理器获取需要执行的远程程序脚本,包括:Allocator管理器获取与所述Allocator管理器建立连接的至少一个主机的全部远程任务,和/或与所述至少一个主机的全部远程任务对应的需要执行的脚本。如图3所示,所述Allocator管理器从至少一个主机中的目标主机中获取关键字和远程任务。
在一些实施例中,所述方法还包括:查询是否存在客户端,具体包括:服务器中的Allocator管理器根据所述远程任务的主机信息中Host和User作为关键字,查询是否存在已经创建的连接客户端。在存在已经创建的客户端的情况下,从所述服务器的内存中取出与所述客户端对应的Client管理器;在不存在已经创建的客户端的情况下,创建客户端。
在一些实施例中,所述方法还可以包括:服务器创建客户端管理器。如图3所示,所述Allocator管理器创建客户端管理器,并将从所述目标主机中获取的关键字和远程任务发送至所述客户端管理器。
步骤S302,客户端管理器获取连接目标主机的会话。
在一些实施例中,Client管理器在获得所述远程任务的情况下,从所述Client管理器内部的Session Queue中获取会话资源,在所述Session Queue中的会话数小于第一阈值的情况下,执行步骤S303;在所述Session Queue中的会话数大于或等于第一阈值的情况下,执行步骤S305。
步骤S303,任务执行器执行远程任务。
在一些实施例中,服务器中的任务执行器执行任务包括:服务器创建服务器与目标主机之间的会话,和/或服务器与任务执行器之间的会话,并创建与所述会话对应的信道,开始执行外部远程任务。
在一些实施例中,如图3所示,任务执行器接入所述服务器的情况下,所述任务执行器根据所述会话队列中会话的顺序执行外部远程任务;在没有空闲的任务执行器或者没有可用的会话的情况下,所述客户端管理器向所述任务执行器发送拒绝指令,并认为任务执行失败。
步骤S304,任务执行器查看远程任务执行状态。
在一些实施例中,服务器中的任务执行器查看任务执行状态包括:所述任务执行器以第一时间阈值为周期查看所述远程任务的执行状态,在所述远程任务执行完成的情况下,结束流程;在所述远程任务未执行完成的情况下,以第一时间阈值为周期查看所述远程任务的执行状态,直至所述远程任务执行完成,结束流程。
步骤S305,客户端管理器判断脚本待处理队列是否超过第二阈值。
在一些实施例中,在所述Session Queue中的会话数大于或等于第一阈值的情况下,服务器中的Client管理器判断脚本待处理队列中的待处理任务是否超过第二阈值,在所述待处理任务未超过第二阈值的情况下,执行步骤S306;在所述待处理任务超过第二阈值的情况下,执行步骤S307。
步骤S306,客户端管理器将所述远程任务放入脚本待执行队列。
在一些实施例中,在所述待处理任务未超过第二阈值的情况下,服务器中的Client管理器将所述远程任务放入脚本待执行队列中,等待执行所述远程任务,在存在可用的Session的情况下,根据步骤S303至步骤S304执行所述远程任务。
步骤S307,服务器报告错误信息。
在一些实施例中,所述待处理任务超过第二阈值的情况下,所述脚本待处理队列已满,所述远程任务无法添加至所述脚本待处理任务并执行,服务器报告错误信息,并结束流程。
如图3所示,所述服务器报告错误信息还可以包括:服务器认为所述无法添加至所述脚本的任务执行失败。
在一些实施例中,所述步骤S303具体包括步骤S401至步骤S406,图5示出了本申请实施例提供的执行远程任务的可选流程示意图,将根据各个步骤进行说明。
步骤S401,服务器初始化连接,创建信道。
在一些实施例中,服务器从Session Queue中获得与所述远程任务对应的Session,并创建目标主机与服务器之间的Channel,和/或服务器与执行所述远程任务的客户端之间的Channel。
步骤S402,服务器判断信道是否可用。
在一些实施例中,服务器判断所述Channel是否可用,在所述Channel可用使用的情况下,执行步骤S403;在所述Channel不可使用的情况下,返回步骤S401。
步骤S403,服务器创建文件夹,拷贝对应脚本。
在一些实施例中,服务器创建文件夹,拷贝对应脚本包括:服务器创建与所述远程任务对应的文件目录与文件夹,拷贝与所述远程任务对应的脚本,并将所述脚本插入至服务器中本地脚本运行模块的Script文件夹中。
步骤S404,服务器执行脚本并将执行的PID存入文件夹中。
在一些实施例中,服务器执行脚本并将执行的PID存入文件夹中包括:服务器在执行所述远程任务对应的脚本的过程中,将所述脚本的PID存储至PID文件中。
步骤S405,服务器判断PID是否存在。
在一些实施例中,服务器判断PID是否存在包括:服务器以第一时间阈值为周期,查看所述远程任务对应的PID是否存在,在所述远程任务对应的PID存在的情况下,确认所述远程任务未执行完成,服务器继续以第一时间阈值为周期查看所述远程任务的PID是否存在;在所述远程任务对应的PID不存在的情况下,所述远程任务执行完成,执行步骤S406。
步骤S406,服务器获取日志文件内容。
在一些实施例中,服务器获取日志文件内容包括:获取执行所述脚本的过程中输出的日志文件,并将所述日志文件传输给所述Allocator管理器。
如此,通过本申请实施例提供的远程任务执行方法,至少一个客户端之间可以共享目标主机的远程任务,实现连接复用,客户端的数量不会随着远程任务数量的增加对应呈线性增长,降低与所述目标主机和/或服务器的SSH连接数量,降低了目标主机和/或服务器的负载;服务器内部不同模块的角色定义交互清晰,整体结构性、可维护性及代码可读性更高;远程任务的执行结果存放在目标主机上,本申请实施例提供的远程任务方法中,服务器周期性查询和/或获取相应的远程任务的执行结果,不会出现由于连接不稳定造成的任务状态丢失和/或日志丢失的情况,便于排除问题与定位问题。
图6示出了本申请实施例提供的一种远程任务执行装置的可选结构示意图一,将根据各个部分进行说明。
在一些实施例中,远程任务执行装置500包括:第一获取模块501、确认模块502、第二获取模块503和执行模块504。
所述第一获取模块501,用于获取待执行的远程任务。
在一些实施例中,所述第一获取模块501可以是服务器中的Allocator管理器。
所述确认模块502,用于根据所述远程任务的主机信息,确认执行所述远程任务的客户端。
在一些实施例中,所述确认模块502可以是服务器中的Client管理器。
所述第二获取模块503,用于获取所述远程任务的会话资源。
在一些实施例中,所述第二获取模块503可以是服务器中的Client管理器。
所述执行模块504,用于基于所述会话资源执行所述远程任务。
在一些实施例中,所述执行模块可以说服务器中的任务执行器。
所述确认模块502,用于在已经创建与所述主机信息对应的客户端的情况下,确认所述已经创建的客户端为执行所述远程任务的客户端;
或者,在不存在与所述主机信息对应的客户端的情况下,创建与所述主机信息对应的客户端,确认所创建的客户端为执行所述远程任务的客户端。
所述第二获取模块503,还用于在会话队列中不存在与所述远程任务对应的会话资源,且会话队列中的会话数量小于第一阈值的情况下,创建与所述远程任务对应的会话,获取所述远程任务的会话资源;
或者,在会话队列中不存在与所述远程任务对应的会话资源,且会话队列中的会话数量大于或等于第一阈值的情况下,若待处理任务队列的长度小于第二阈值,将所述远程任务存储至所述待处理任务队列,等待获取所述远程任务的会话资源。
所述执行模块504,还用于创建可用的信道,以及与所述远程任务对应的文件;执行所述远程任务对应的脚本;存储执行所述脚本的过程中输出的日志文件。
所述执行模块504,还用于将所述脚本的进程控制符PID存储至PID文件中。
所述确认模块502,还用于基于所述PID文件中对应所述脚本的PID,确认所述远程任务的执行情况。
图7示出了本申请实施例提供的一种远程任务执行装置的可选结构示意图二,将根据各个部分进行说明。
Allocator管理器601,用于对所有远程任务进行统一管理。对目标主机的所有任务进行统一管理。所述对远程任务进行统一管理包括以下至少一种:添加任务、删除任务、查看任务的执行状态。
客户端管理器6021:每台目标主机对应一个Client管理器,管理所有到此主机的外部程序任务,其内部会初始化与之对应的Session Queue会话队列来共享会话。其中,在目标主机的总数量为N的情况下,所述装置包括客户端管理器6021,……,客户端管理器602k,……,客户端管理器602N;其中k=1,2,……,N。
在一些实施例中,Client管理器6021的地址可以是(10.1.1.1:22@user1);所述Client管理器602N的地址可以是(10.1.1.3:22@userN)。
会话队列6031,用于共享目标主机的会话,可以对SSH连接进行复用。
在一些实施例中,每一个会话队列对应一个Client管理器,每一个Client管理器与一台目标主机对应。其中,在目标主机的总数量为N的情况下,所述装置包括会话队列6031,……,会话队列603k,……,会话队列603N;其中k=1,2,……,N。
任务执行器6041,用于安装和/或执行目标主机的任务,在目标主机上异步执行并监控远程任务的执行情况。其中,在与所述目标主机对应的任务执行器总数量为M的情况下,所述装置包括任务执行器6041,……,任务执行器604m,……,任务执行器604M;其中m=1,2,……,M。
本地脚本运行模块6051,用于运行指定在目标主机上运行的内容,其存放路径以tmp+User+作业执行UUID为组合,该目录下存放为4个文件包括:
Script.sh,用于对执行脚本进行封装后的整体脚本执行文件;所述Script.sh的路径可以是/tmp/user1/UUID/Scripts.sh。
Output,用于存放执行脚本过程中的日志输出,所述Output的路径可以是/tmp/user1/UUID/Output。
Pid,用于存放执行脚本的进程号,所述Pid的路径可以是/tmp/user1/UUID/Pid。
Code,用于存放最后脚本执行结束后的返回码。具体返回码参照LinuxShell返回码;所述Code的路径可以是/tmp/user1/UUID/code。
所述本地脚本运行模块可以与任务执行器一一对应,在所述本地脚本运行模块与任务执行器一一对应的情况下,所述装置600包括本地脚本运行模块6051,……,本地脚本运行模块605m,……,本地脚本运行模块605M。
如此,本申请实施例提供的任务执行装置,采用Actor模型,角色定义交互清晰,相比于其他实现方式,其整体结构性、可维护性、代码可读性较高,使用基于事件的Actor模型梳理远程任务调用逻辑。所有事件包括:创建远程文件;存放用户指定脚本内容;执行脚本并记录PID;轮询查询任务执行情况;查询脚本返回码及相关日志;任务终止功能。所有事件构成了整个的业务流程。使得整体结构对应关系较为清晰且合理。一个Allocator管理器纳管所有任务;以主机与对应用户名为唯一标识构建Client管理器;每个Client管理器中又设置了可以连接复用的Session Queue。通过层层的设计,将整个ETL远程任务调度的业务场景全覆盖。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序命令相关的硬件来完成,前述的程序可以存储于一存储介质中,所述前述的存储介质包括:移动存储设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种远程任务执行方法,其特征在于,所述方法包括:
获取待执行的远程任务;
根据所述远程任务的主机信息,确认执行所述远程任务的客户端;
获取所述远程任务的会话资源;
基于所述会话资源执行所述远程任务。
2.根据权利要求1所述的方法,其特征在于,所述确认执行所述远程任务的客户端包括:
在已经创建与所述主机信息对应的客户端的情况下,确认所述已经创建的客户端为执行所述远程任务的客户端;
或者,在不存在与所述主机信息对应的客户端的情况下,创建与所述主机信息对应的客户端,确认所创建的客户端为执行所述远程任务的客户端。
3.根据权利要求1所述的方法,其特征在于,所述获取所述远程任务的会话资源包括:
在会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量小于第一阈值的情况下,创建与所述远程任务对应的会话,获取所述远程任务的会话资源;
或者,在会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量大于或等于第一阈值的情况下,若待处理任务队列的长度小于第二阈值,将所述远程任务存储至所述待处理任务队列,等待获取所述远程任务的会话资源。
4.根据权利要求1所述的方法,其特征在于,所述基于所述会话资源执行所述远程任务包括:
创建可用的信道,以及与所述远程任务对应的文件;
基于所述信道执行所述文件中远程任务对应的脚本;
存储执行所述脚本的过程中输出的日志文件。
5.根据权利要求4所述的方法,其特征在于,所述基于所述会话资源执行所述远程任务还包括:
将所述脚本的进程控制符PID存储至PID文件中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于所述PID文件中对应所述脚本的PID,确认所述远程任务的执行情况。
7.一种远程任务执行装置,其特征在于,所述装置包括:
第一获取模块,用于获取待执行的远程任务;
确认模块,用于根据所述远程任务的主机信息,确认执行所述远程任务的客户端;
第二获取模块,用于获取所述远程任务的会话资源;
执行模块,用于基于所述会话资源执行所述远程任务。
8.根据权利要求7所述的装置,其特征在于,所述确认模块还用于:
在已经创建与所述主机信息对应的客户端的情况下,确认所述已经创建的客户端为执行所述远程任务的客户端;
或者,在不存在与所述主机信息对应的客户端的情况下,创建与所述主机信息对应的客户端,确认所创建的客户端为执行所述远程任务的客户端。
9.根据权利要求7所述的装置,其特征在于,所述第二获取模块还用于:
在会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量小于第一阈值的情况下,创建与所述远程任务对应的会话,获取所述远程任务的会话资源;
或者,在所述会话队列中不存在与所述远程任务对应的会话资源,且所述会话队列中的会话数量大于或等于第一阈值的情况下,若待处理任务队列的长度小于第二阈值,将所述远程任务存储至所述待处理任务队列,等待获取所述远程任务的会话资源。
10.根据权利要求7所述的装置,其特征在于,所述执行模块还用于:
创建可用的信道,以及与所述远程任务对应的文件;
基于所述信道执行所述文件夹中远程任务对应的脚本;
存储执行所述脚本的过程中输出的日志文件。
11.根据权利要求10所述的装置,其特征在于,所述执行模块还用于:
将所述脚本的进程控制符PID存储至PID文件中。
12.根据权利要求11所述的装置,其特征在于,所述确认模块还用于:
基于所述PID文件中对应所述脚本的PID,确认所述远程任务的执行情况。
13.一种存储介质,存储有可执行程序,其特征在于,所述可执行程序被处理器执行时,实现权利要求1至6任一项所述的远程任务执行方法。
14.一种远程任务执行装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,其特征在于,所述处理器运行所述可执行程序时执行如权利要求1至6任一项所述的远程任务执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010752708.8A CN114095487B (zh) | 2020-07-30 | 2020-07-30 | 一种远程任务执行方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010752708.8A CN114095487B (zh) | 2020-07-30 | 2020-07-30 | 一种远程任务执行方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114095487A true CN114095487A (zh) | 2022-02-25 |
CN114095487B CN114095487B (zh) | 2024-03-19 |
Family
ID=80295033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010752708.8A Active CN114095487B (zh) | 2020-07-30 | 2020-07-30 | 一种远程任务执行方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114095487B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1321296A (zh) * | 1998-10-02 | 2001-11-07 | 国际商业机器公司 | 通过会话虚拟机进行会话式计算 |
US20020156932A1 (en) * | 2001-04-20 | 2002-10-24 | Marc Schneiderman | Method and apparatus for providing parallel execution of computing tasks in heterogeneous computing environments using autonomous mobile agents |
CN1473443A (zh) * | 2000-11-06 | 2004-02-04 | ����ɭ�绰�ɷ�����˾ | 用于为多媒体会话中提供的业务协调计费的方法和设备 |
CN102223363A (zh) * | 2010-04-16 | 2011-10-19 | 阿瓦雅公司 | 在管理通信会话的图形界面中生成持续会话的系统和方法 |
CN102404370A (zh) * | 2010-09-17 | 2012-04-04 | 捷达世软件(深圳)有限公司 | 流程整合服务器及其支援多客户端多环境开发的方法 |
CN105473196A (zh) * | 2013-05-20 | 2016-04-06 | 微软技术许可有限责任公司 | 向远程游戏环境中的游戏标题的资源分配 |
CN105743964A (zh) * | 2014-12-29 | 2016-07-06 | 三星电子株式会社 | 用于使用虚拟装置驱动器共享资源的方法及其电子装置 |
CN108255589A (zh) * | 2017-08-29 | 2018-07-06 | 平安科技(深圳)有限公司 | 任务调度方法及服务器 |
US20180217886A1 (en) * | 2017-01-30 | 2018-08-02 | Microsoft Technology Licensing, Llc | Object-oriented remote procedure calls for browser applications |
CN110268388A (zh) * | 2017-01-30 | 2019-09-20 | 微软技术许可有限责任公司 | 推迟对远程对象的调用请求 |
CN110704173A (zh) * | 2019-09-29 | 2020-01-17 | 深圳前海环融联易信息科技服务有限公司 | 任务调度方法、调度系统、电子设备及计算机存储介质 |
CN111083226A (zh) * | 2019-12-19 | 2020-04-28 | 成都智蜂网科技有限责任公司 | 一种远程任务处理系统及方法 |
-
2020
- 2020-07-30 CN CN202010752708.8A patent/CN114095487B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1321296A (zh) * | 1998-10-02 | 2001-11-07 | 国际商业机器公司 | 通过会话虚拟机进行会话式计算 |
CN1473443A (zh) * | 2000-11-06 | 2004-02-04 | ����ɭ�绰�ɷ�����˾ | 用于为多媒体会话中提供的业务协调计费的方法和设备 |
US20020156932A1 (en) * | 2001-04-20 | 2002-10-24 | Marc Schneiderman | Method and apparatus for providing parallel execution of computing tasks in heterogeneous computing environments using autonomous mobile agents |
CN102223363A (zh) * | 2010-04-16 | 2011-10-19 | 阿瓦雅公司 | 在管理通信会话的图形界面中生成持续会话的系统和方法 |
CN102404370A (zh) * | 2010-09-17 | 2012-04-04 | 捷达世软件(深圳)有限公司 | 流程整合服务器及其支援多客户端多环境开发的方法 |
CN105473196A (zh) * | 2013-05-20 | 2016-04-06 | 微软技术许可有限责任公司 | 向远程游戏环境中的游戏标题的资源分配 |
CN105743964A (zh) * | 2014-12-29 | 2016-07-06 | 三星电子株式会社 | 用于使用虚拟装置驱动器共享资源的方法及其电子装置 |
US20180217886A1 (en) * | 2017-01-30 | 2018-08-02 | Microsoft Technology Licensing, Llc | Object-oriented remote procedure calls for browser applications |
CN110268388A (zh) * | 2017-01-30 | 2019-09-20 | 微软技术许可有限责任公司 | 推迟对远程对象的调用请求 |
CN108255589A (zh) * | 2017-08-29 | 2018-07-06 | 平安科技(深圳)有限公司 | 任务调度方法及服务器 |
CN110704173A (zh) * | 2019-09-29 | 2020-01-17 | 深圳前海环融联易信息科技服务有限公司 | 任务调度方法、调度系统、电子设备及计算机存储介质 |
CN111083226A (zh) * | 2019-12-19 | 2020-04-28 | 成都智蜂网科技有限责任公司 | 一种远程任务处理系统及方法 |
Non-Patent Citations (1)
Title |
---|
苑文建;: "一种支持Java应用中计算按需远程执行的方法研究", 信息与电脑(理论版), no. 23 * |
Also Published As
Publication number | Publication date |
---|---|
CN114095487B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5826269A (en) | Electronic mail interface for a network server | |
US11940965B2 (en) | Data migration method and apparatus | |
JP4637842B2 (ja) | クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知 | |
CN112491606B (zh) | 一种基于ansible的自动化部署业务系统高可用集群的方法 | |
WO2016184175A1 (zh) | 数据库处理方法及装置 | |
CN113626286A (zh) | 多集群实例处理方法、装置、电子设备及存储介质 | |
CN112291298B (zh) | 异构系统的数据传输方法、装置、计算机设备和存储介质 | |
US20210256593A1 (en) | Coordination process restart device and coordination process restart method | |
WO2024016624A1 (zh) | 多集群访问方法和系统 | |
CN110990076A (zh) | 一种基于责任链模式实现的热插拔组件链调用方法 | |
US9026839B2 (en) | Client based high availability method for message delivery | |
CN109697112B (zh) | 分布式集约化一站式作业系统和实现方法 | |
CN110138753B (zh) | 分布式消息服务系统、方法、设备及计算机可读存储介质 | |
CN114168179A (zh) | 微服务管理方法、装置、计算机设备和存储介质 | |
US8982902B1 (en) | Backup server architecture in a VoIP system | |
CN114095487B (zh) | 一种远程任务执行方法、装置及存储介质 | |
CN111078322A (zh) | 服务器及基于k8s集群的公共配置参数配置方法及系统 | |
CN116521338A (zh) | 消息队列的管控方法、装置、计算机设备和存储介质 | |
CN111352900A (zh) | 一种虚拟化应用文件访问方法、装置、服务器及存储介质 | |
CN111625323A (zh) | 分布式任务处理方法、装置、设备及计算机可读存储介质 | |
CN113254226B (zh) | 用于非对称业务场景的非对称分布式锁系统及实现方法 | |
CN109002263A (zh) | 存储容量的调整方法及装置 | |
CN105827567B (zh) | 服务管控方法及能力开放平台 | |
US8144842B2 (en) | Unified messaging gateway device for providing operation during a network failure | |
CN113448775A (zh) | 多源异构数据备份方法及装置 |
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 |