CN112199184A - 一种跨语言任务调度方法、装置、设备及可读存储介质 - Google Patents
一种跨语言任务调度方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112199184A CN112199184A CN202011203431.XA CN202011203431A CN112199184A CN 112199184 A CN112199184 A CN 112199184A CN 202011203431 A CN202011203431 A CN 202011203431A CN 112199184 A CN112199184 A CN 112199184A
- Authority
- CN
- China
- Prior art keywords
- task
- node
- upstream
- downstream
- cross
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 163
- 238000004891 communication Methods 0.000 claims abstract description 55
- 230000005540 biological transmission Effects 0.000 claims abstract description 30
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004883 computer application Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000013075 data extraction Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013486 operation strategy Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种跨语言任务调度方法、装置、设备及可读存储介质,该方法包括获取具有任务依赖关系的上游任务和下游任务;分配上游任务给上游节点,分配下游任务给下游节点;上游节点与下游节点对应不同编程语言;利用任务依赖关系,确定数据交换规则;在上游节点和下游节点之间,建立远程过程调用对应的通讯连接;利用通讯连接并结合数据交换规则,在上游节点和下游节点之间,进行跨语言的实时数据传输。该方法可满足分布式任务的调度和计算的情况下,便省去了单独存储中间结果数据,减少系统存储IO开销,能够加快任务执行效率。
Description
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种跨语言任务调度方法、装置、设备及可读存储介质。
背景技术
随着大数据技术的快速发展,海量数据的存储和计算过程越来越复杂,特别是在数据分析挖掘需求下,大量的数据分析计算任务都需要任务调度系统来进行。对于各个计算任务会采用不同的开发语言进行开发,例如sql节点完成数据抽题任务、python任务节点进行算法分析计算。是否能跨进程间进行高效数据交换,是任务计算效率的重要保证之一。
Azkaban(Linkedin开源的一个批量工作流任务调度器)、oozie(工作流调度用在Hadoop中,是一个运行相关的作业工作流系统)、airflow(可编程,调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行)等方案,都能完整实现分布式任务的调度和计算。但是,对于任务间的跨进程数据通讯,都采用了中间结果存储的形式,增加了系统存储io开销,导致任务处理效率。
综上所述,如何有效地解决任务间的跨进程、跨语言的数据通信等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种跨语言任务调度方法、装置、设备及可读存储介质,以实现跨语言的进程调度,使得两个不同编程语言对应的任务执行节点可直接进行实时数据传输,减少系统存储IO占用,提高任务执行效率。
为解决上述技术问题,本发明提供如下技术方案:
一种跨语言任务调度方法,包括:
获取具有任务依赖关系的上游任务和下游任务;
分配所述上游任务给上游节点,分配所述下游任务给下游节点;所述上游节点与所述下游节点对应不同编程语言;
利用所述任务依赖关系,确定数据交换规则;
在所述上游节点和所述下游节点之间,建立远程过程调用对应的通讯连接;
利用所述通讯连接并结合所述数据交换规则,在所述上游节点和所述下游节点之间,进行跨语言的实时数据传输。
优选地,分配所述上游任务给上游节点,包括:
利用分布式任务调度引擎,从注册中心选出所述上游节点,并将所述上游任务分配给所述上游节点。
优选地,从注册中心选出所述上游节点,包括:
从所述注册中心中,确定出与所述上游任务的任务类型对应执行节点;
从所述执行节点中选出一个可执行节点作为所述上游节点。
优选地,还包括:
以容器服务的形式,将执行任务的功能程序注册到所述注册中心,得到所述执行节点。
优选地,在所述上游节点和所述下游节点之间,建立远程过程调用对应的通讯连接,包括:
获取所述上游节点的上游IP地址,及所述下游节点的下游IP地址;
利用跨语言通信协议,建立所述上游IP地址与所述下游IP地址对应的所述通讯连接。
优选地,获取具有任务依赖关系的上游任务和下游任务,包括:
获取待执行的目标任务;
若所述目标任务的任务类型种类大于1,则将所述目标任务拆分为所述上游任务和所述下游任务。
优选地,利用所述任务依赖关系,确定数据交换规则,包括:
按照所述任务依赖关系,确定出所述上游节点和所述下游节点分别对应的数据输出标准接口;所述数据输出标准接口的规则定义包括输出的字段名称、字段类型,以及描述返回值的数据元信息;
将所述规则定义确定为所述数据交换规则。
一种跨语言任务调度装置,包括:
任务获取模块,用于获取具有任务依赖关系的上游任务和下游任务;
任务分配模块,用于分配所述上游任务给上游节点,分配所述下游任务给下游节点;所述上游节点与所述下游节点对应不同编程语言;
数据交换规则确定模块,用于利用所述任务依赖关系,确定数据交换规则;
通讯连接建立模块,用于在所述上游节点和所述下游节点之间,建立远程过程调用对应的通讯连接;
数据传输模块,用于利用所述通讯连接并结合所述数据交换规则,在所述上游节点和所述下游节点之间,进行跨语言的实时数据传输。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述跨语言任务调度方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述跨语言任务调度方法的步骤。
应用本发明实施例所提供的方法,获取具有任务依赖关系的上游任务和下游任务;分配上游任务给上游节点,分配下游任务给下游节点;上游节点与下游节点对应不同编程语言;利用任务依赖关系,确定数据交换规则;在上游节点和下游节点之间,建立远程过程调用对应的通讯连接;利用通讯连接并结合数据交换规则,在上游节点和下游节点之间,进行跨语言的实时数据传输。
在分配了具有任务依赖关系的上游任务和下游任务之后,便可利用该任务依赖关系,确定上游节点与下游节点之间的数据交换规则。建立上游节点与下游节点之间的远程过程调用对应的通讯连接。而后,便可直接基于该通讯连接集合数据交互规则,在上游节点和下游节点之间进行跨语言的实时数据传输。如此,便可满足分布式任务的调度和计算的情况下,便省去了单独存储中间结果数据,减少系统存储IO开销,能够加快任务执行效率。
相应地,本发明实施例还提供了与上述跨语言任务调度方法相对应的跨语言任务调度装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种跨语言任务调度方法的实施流程图;
图2为本发明实施例中一种任务依赖逻辑图;
图3为本发明实施例中一种数据交换通用格式逻辑图;
图4为本发明实施例中一种跨语言任务调度装置的结构示意图;
图5为本发明实施例中一种电子设备的结构示意图;
图6为本发明实施例中一种电子设备的具体结构示意图;
图7为本发明实施例中一种跨语言任务调度方法所应用的顶层架构图;
图8为本发明实施例中一种数据交换示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例中一种跨语言任务调度方法的流程图,该方法包括以下步骤:
S101、获取具有任务依赖关系的上游任务和下游任务。
其中,任务依赖关系即指在时间和资源上,存在相互依赖的关系。具体的,该任务依赖关系包括但不限于dependOn,finalizedBy和mustRunAfter。其中,dependOn,例如taskA dependOn task B,如果在任务B未完成的情况下,任务A无法进行其工作,换句话说任务A依赖于任务B;finalizedBy,例如task A finalizedBy task B,就是说每一次task A运行,task B都会紧随其后运行;mustRunAfter,例如,must Run task A After task B,即允许task B之前,必须允许task A。
在本实施例中,对于上游任务和下游任务的具体依赖关系,以及任务本身均不做限定。
具体的,可通过分布式任务调度系统获得上游任务和下游任务,也可通过对任务发布节点发布的任务进行拆分的方式,得到上游任务和下游任务。
在本发明的一种具体实施例方式,步骤S101获取具有任务依赖关系的上游任务和下游任务,包括:
步骤一、获取待执行的目标任务;
步骤二、若目标任务的任务类型种类大于1,则将目标任务拆分为上游任务和下游任务。
即,在得到待执行的目标任务之后,若该目标任务的任务类型种类大于1,为了更加便捷快速地完成目标任务,可基于任务类型对目标任务进行拆分,得到目标任务对应的子任务,即上游任务和下游任务。
举例说明,请参考图2,图2为本发明实施例中一种任务依赖逻辑图,其中具有依赖关系的相邻2个task即对应本文中的上游任务和下游任务。具体的,TaskID:1,TaskType:SQL,PreTasks:null,NextTasks:3;TaskID:2,TaskType:JAVA,PreTasks:null,NextTasks:3;TaskID:3,TaskType:SQL,PreTasks:1,2,NextTasks:4;TaskID:4,TaskType:PY,PreTasks:3,NextTasks:5;TaskID:5,TaskType:PY,PreTasks:3,NextTasks:null。
S102、分配上游任务给上游节点,分配下游任务给下游节点。
其中,上游节点与下游节点对应不同编程语言。
得到上游任务和下游任务之后,便可分配对应的执行节点。
在本实施例中,将即将处理该上游任务的执行节点称之为上游节点,将即将处理该下游节点的执行节点称之为下游节点。需要注意的是,上游节点与下游节点应当对应不同的编程语言。举例说明,若上游节点的编程语言为L1,下游节点的编程语言为L2,L1与L2不相同。
在本发明的一种具体实施例方式中,分配上游任务给上游节点,具体包括:利用分布式任务调度引擎,从注册中心选出上游节点,并将上游任务分配给上游节点。具体的,分布式任务调用引擎可为Presto,即Facebook开发的分布式数据查询引擎,Presto可对海量的数据进行快速地交互式分析。Presto进行任务调度计算的数据通过presto-sql进行定义获取,利用presto的分布式能力完成计算,对于数据处理的任务节点(执行节点),按照不同的任务类型以presto-sql用户自定义函数进行调用。具体的,可依据任务节点信息表(表1)、任务注册信息表(表2)和Job信息表(表3),查找相应的执行节点。
表1
表2
表3
关键字段 | 字段描述 |
JobID | 定时任务的唯一ID主键 |
Cron | 定时频率定义表达式 |
JobDesc | 任务描述信息 |
具体的,从注册中心选出上游节点,包括:
步骤一、从注册中心中,确定出与上游任务的任务类型对应执行节点;
步骤二、从执行节点中选出一个可执行节点作为上游节点。
其中,执行节点具有能够执行任务的功能程序。在本实施例中任务的任务类型可具体包括各种编程语言各自擅长的任务类型,例如Python对应的算法分析任务,sql对应的数据抽题任务。
也就是说,对于同一种任务类型,可预先设置多个对应的执行节点,在需要执行上游任务时,直接从若干个执行节点中选出一个可执行节点即可。其中,具体如何从对应任务类型的执行节点中选择出可执行节点,可具体参照负载均衡等技术进行。
这里仅详细说明了上游节点如何确定,对于下游节点的确定过程可参照于此,在此不再一一赘述。
在本发明的一种具体实施例方式中,执行节点指执行任务的功能程序以容器(docker)服务的形式注册到注册中心。也就是说,执行节点的产生过程,还可具体为以容器服务的形式,将执行任务的功能程序注册到注册中心,得到执行节点。Docker具体指一个开源的应用容器引擎,让开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。也就是说,利用Docker容器技术支持任务计算服务节点(执行节点)的水平扩展,通过服务注册机制便可自动发现新的服务节点。
S103、利用任务依赖关系,确定数据交换规则。
分配了执行节点之后,便可确定上游节点与下游节点之间的数据交换规则。
其中,数据交换规则即指在上游节点和下游节点之间进行数据传输的规则,基于不同的任务依赖关系,上游节点与下游节点进行数据传输方式也上有所不同。因此,在确定数据交换规则时,需任务依赖关系,确定该规则。例如,若上游任务与下游任务之间,数据传输仅为上游任务向下游任务传输数据,则数据交换规则,对应上游节点如何将以何种数据形式传输给下游节点;若数据传输为下游任务向上游任务传输数据,则数据交换规则,对应下游节点如何将以何种数据形式传输给上游节点;若需要数据互传,则数据交换规则,对应下游节点如何将以何种数据形式传输给上游节点,以及上游节点如何将以何种数据形式传输给下游节点。
在本发明的一种具体实施例方式中,步骤S103利用任务依赖关系,确定数据交换规则,包括:
步骤一、按照任务依赖关系,确定出上游节点和下游节点分别对应的数据输出标准接口;数据输出标准接口的规则定义包括输出的字段名称、字段类型,以及描述返回值的数据元信息;
步骤二、将规则定义确定为数据交换规则。
为便于描述,下面将上述两个步骤结合起来进行说明。
上下游任务的数据交换规则,对于每种类型的任务,执行节点的服务都定义数据输出标准接口。数据输出标准接口的规则定义输出的字段名称、字段类型,描述返回值的数据元信息。
可设置各类编程语言实现的业务服务(对应执行节点),默认实现由Thrift格式定义的数据交换结构,上下游之间的服务执行节点通过标准的Thrift协议格式交换数据。可保证业务代码不用关心具体数据的序列化转换逻辑,且在数据的网络传输上由于采用了高效编码定义,传输性能相比常规的JSON等格式效率更高。
举例说明,最终数据交换通用格式逻辑可参考图3,图3为本发明实施例中一种数据交换通用格式逻辑图。具体如下:
1、各类型执行节点的服务根据业务实现定义的Tschema推断出本次节点计算业务需要输出的数据Schema定义信息。
2、业务服务执行完计算任务后,执行节点实时获取将返回下游的数据,动态构造TRow数据结构,通过Thrift自动序列化二进制流。
3、业务执行节点服务根据task定义的任务类型,获取zookeeper注册的下游服务地址,通过tcp通讯实时调用下游执行节点服务,传送返回数据流。
4、下游节点监听到上游节点调用后,反序列化TRow数据和TSchema信息,获取数据调用本节点的业务服务模块。
执行节点间的Thrift数据交换格式文件定义(即数据交换规则)如下:
TTypeId用于描述字段的类型定义信息:
TColumnDesc用于描述返回列的定义信息:
TSchema用于描述返回数据的元信息:
struct TSchema{
1:required list<TColumnDesc>columns
}
TColumnValue用于描述返回列数据定义:
TRow用于描述返回行数据定义:
S104、在上游节点和下游节点之间,建立远程过程调用对应的通讯连接。
上游节点与下游节点之间要实现数据传输,还需建立通信连接。在本实施例中,可建立远程过程调用对应的通信连接。
其中,远程过程调用即rpc,具体指一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。也就是说,可直接将要就进行通讯的双方,分别看作客户端和服务器。即,建立了远程过程调用对应的通讯连接之后,请参考图8,上游节点与下游节点之间的数据传输,以客户端和服务器模式进行。
在本发明的一种具体实施例方式,步骤S104在上游节点和下游节点之间,建立远程过程调用对应的通讯连接,可具体包括:
步骤一、获取上游节点的上游IP地址,及下游节点的下游IP地址;
步骤二、利用跨语言通信协议,建立上游IP地址与下游IP地址对应的通讯连接。
其中,若上游节点以容器服务形式存在,则上游IP地址为容器IP,下游IP地址也可参照于此。也就是说,在运行任务之前,可在注册中心获取上游节点容器IP和下游节点容器IP,通过跨语言通信协议(thrift协议)建立通讯连接。其中,Thrift为一种接口描述语言和二进制通讯协议,被用来定义和创建跨语言的服务,被当作一个远程过程调用框架来使用。
需要注意的是,本发明实施例对于上述步骤S103和S104的执行顺序并不做限定,也就是说,在实际应用中可按照图1所示的先执行S103,后执行S104;也可以先执行S104,再执行S103;还可以并行执行S103和S104。
在建立好通信连接以及确定好数据交换规则之后,便可执行步骤S105的步骤。
S105、利用通讯连接并结合数据交换规则,在上游节点和下游节点之间,进行跨语言的实时数据传输。
由于存在数据交换规则,上游节点和下游节点之间可实现跨语言的数据传输;由于存在该通讯连接,上游节点和下游节点之间便可进行远程进程调用,使得上游节点与下游节点之间参照客户端服务器模式进行数据传输。二者相节点,便可在上游节点和下游节点之间,进行跨语言的实时数据传输。上游节点和下游节点直接进行实时数据传输,可减少占用系统存储IO,加快节点间的数据传输,可使得任务执行效率更高。
应用本发明实施例所提供的方法,获取具有任务依赖关系的上游任务和下游任务;分配上游任务给上游节点,分配下游任务给下游节点;上游节点与下游节点对应不同编程语言;利用任务依赖关系,确定数据交换规则;在上游节点和下游节点之间,建立远程过程调用对应的通讯连接;利用通讯连接并结合数据交换规则,在上游节点和下游节点之间,进行跨语言的实时数据传输。
在分配了具有任务依赖关系的上游任务和下游任务之后,便可利用该任务依赖关系,确定上游节点与下游节点之间的数据交换规则。建立上游节点与下游节点之间的远程过程调用对应的通讯连接。而后,便可直接基于该通讯连接集合数据交互规则,在上游节点和下游节点之间进行跨语言的实时数据传输。如此,便可满足分布式任务的调度和计算的情况下,便省去了单独存储中间结果数据,减少系统存储IO开销,能够加快任务执行效率。
为便于本领域技术人员理解和实现本发明实施例所提供的跨语言任务调度方法,下面详细说明如何实现该跨语言任务调度方法。
本发明实施例所提供的跨语言任务调度方法,其主要目的是为了解决分布式调度任务间跨进程高效数据交换,以填补相关技术存在的空缺和不足。在实际应用中,该方法可应用于如图7所示的架构中,即,任务调度平台采用presto-sql分布式计算引擎为计算提供分布式计算,离线定时任务的调度管理。通过docker化的任务执行器提供分布式的任务节点注册、计算。支持sql、Python、shell、jar等多种语言开发的任务执行。各种任务之间,采用thrift通讯协议进行数据交换。实现该方法可具体包括以下步骤:
步骤1,根据系统约定的thrift协议规范,定义thrift接口描述文件。
步骤2,按照功能类型开发业务计算的子任务模块。
步骤3,编写docker镜像定义脚本,制作镜像文件;
步骤4,执行服务器拉取docker-image,调用容器命令启动容器运行,执行节点自动注册到服务注册中心。
步骤5,安装presto集群环境,启动presto-sql服务监听。
步骤6,开发总体业务计算任务,建立任务间的依赖关系定义。
步骤7,定义业务计算任务的定时调度运行策略文件并发布到集群中。
步骤8,提交调度任务到计算集群按照调度策略运行。
步骤9,调度集群按照策略进行分布式计算,自动根据任务依赖关系推断出上下游任务的数据交换规则。
步骤10,运行任务在注册中心获取本次可执行的节点容器IP,通过thrift协议建立通讯连接;
步骤11,实时进行数据的跨节点和进程的通讯传输,完成任务计算。
需要说明的是,上述步骤1至11,不仅包括了该方法的实际运行情况下的各个步骤(步骤9至11),还包括实施该跨语言任务调度方法的部署步骤(步骤1至8)。
相应于上面的方法实施例,本发明实施例还提供了一种跨语言任务调度装置,下文描述的跨语言任务调度装置与上文描述的跨语言任务调度方法可相互对应参照。
参见图4所示,该装置包括以下模块:
任务获取模块101,用于获取具有任务依赖关系的上游任务和下游任务;
任务分配模块102,用于分配上游任务给上游节点,分配下游任务给下游节点;上游节点与下游节点对应不同编程语言;
数据交换规则确定模块103,用于利用任务依赖关系,确定数据交换规则;
通讯连接建立模块104,用于在上游节点和下游节点之间,建立远程过程调用对应的通讯连接;
数据传输模块105,用于利用通讯连接并结合数据交换规则,在上游节点和下游节点之间,进行跨语言的实时数据传输。
应用本发明实施例所提供的装置,获取具有任务依赖关系的上游任务和下游任务;分配上游任务给上游节点,分配下游任务给下游节点;上游节点与下游节点对应不同编程语言;利用任务依赖关系,确定数据交换规则;在上游节点和下游节点之间,建立远程过程调用对应的通讯连接;利用通讯连接并结合数据交换规则,在上游节点和下游节点之间,进行跨语言的实时数据传输。
在分配了具有任务依赖关系的上游任务和下游任务之后,便可利用该任务依赖关系,确定上游节点与下游节点之间的数据交换规则。建立上游节点与下游节点之间的远程过程调用对应的通讯连接。而后,便可直接基于该通讯连接集合数据交互规则,在上游节点和下游节点之间进行跨语言的实时数据传输。如此,便可满足分布式任务的调度和计算的情况下,便省去了单独存储中间结果数据,减少系统存储IO开销,能够加快任务执行效率。
在本发明的一种具体实施方式中,任务分配模块102,具体用于利用分布式任务调度引擎,从注册中心选出上游节点,并将上游任务分配给上游节点。
在本发明的一种具体实施方式中,任务分配模块102,具体用于从注册中心中,确定出与上游任务的任务类型对应执行节点;从执行节点中选出一个可执行节点作为上游节点。
在本发明的一种具体实施方式中,还包括:
注册模块,用于以容器服务的形式,将执行任务的功能程序注册到注册中心,得到执行节点。
在本发明的一种具体实施方式中,通讯连接建立模块104,具体用于获取上游节点的上游IP地址,及下游节点的下游IP地址;利用跨语言通信协议,建立上游IP地址与下游IP地址对应的通讯连接。
在本发明的一种具体实施方式中,任务获取模块101,具体用于获取待执行的目标任务;若目标任务的任务类型种类大于1,则将目标任务拆分为上游任务和下游任务。
在本发明的一种具体实施方式中,数据交换规则确定模块103,具体用于按照任务依赖关系,确定出上游节点和下游节点分别对应的数据输出标准接口;数据输出标准接口的规则定义包括输出的字段名称、字段类型,以及描述返回值的数据元信息;将规则定义确定为数据交换规则。
相应于上面的方法实施例,本发明实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种跨语言任务调度方法可相互对应参照。
参见图5所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的跨语言任务调度方法的步骤。
具体的,请参考图6,图6为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的跨语言任务调度方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种跨语言任务调度方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的跨语言任务调度方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (10)
1.一种跨语言任务调度方法,其特征在于,包括:
获取具有任务依赖关系的上游任务和下游任务;
分配所述上游任务给上游节点,分配所述下游任务给下游节点;所述上游节点与所述下游节点对应不同编程语言;
利用所述任务依赖关系,确定数据交换规则;
在所述上游节点和所述下游节点之间,建立远程过程调用对应的通讯连接;
利用所述通讯连接并结合所述数据交换规则,在所述上游节点和所述下游节点之间,进行跨语言的实时数据传输。
2.根据权利要求1所述的跨语言任务调度方法,其特征在于,分配所述上游任务给上游节点,包括:
利用分布式任务调度引擎,从注册中心选出所述上游节点,并将所述上游任务分配给所述上游节点。
3.根据权利要求2所述的跨语言任务调度方法,其特征在于,从注册中心选出所述上游节点,包括:
从所述注册中心中,确定出与所述上游任务的任务类型对应执行节点;
从所述执行节点中选出一个可执行节点作为所述上游节点。
4.根据权利要求2或3所述的跨语言任务调度方法,其特征在于,还包括:
以容器服务的形式,将执行任务的功能程序注册到所述注册中心,得到所述执行节点。
5.根据权利要求1所述的跨语言任务调度方法,其特征在于,在所述上游节点和所述下游节点之间,建立远程过程调用对应的通讯连接,包括:
获取所述上游节点的上游IP地址,及所述下游节点的下游IP地址;
利用跨语言通信协议,建立所述上游IP地址与所述下游IP地址对应的所述通讯连接。
6.根据权利要求1所述的跨语言任务调度方法,其特征在于,获取具有任务依赖关系的上游任务和下游任务,包括:
获取待执行的目标任务;
若所述目标任务的任务类型种类大于1,则将所述目标任务拆分为所述上游任务和所述下游任务。
7.根据权利要求1至6任一项所述的跨语言任务调度方法,其特征在于,利用所述任务依赖关系,确定数据交换规则,包括:
按照所述任务依赖关系,确定出所述上游节点和所述下游节点分别对应的数据输出标准接口;所述数据输出标准接口的规则定义包括输出的字段名称、字段类型,以及描述返回值的数据元信息;
将所述规则定义确定为所述数据交换规则。
8.一种跨语言任务调度装置,其特征在于,包括:
任务获取模块,用于获取具有任务依赖关系的上游任务和下游任务;
任务分配模块,用于分配所述上游任务给上游节点,分配所述下游任务给下游节点;所述上游节点与所述下游节点对应不同编程语言;
数据交换规则确定模块,用于利用所述任务依赖关系,确定数据交换规则;
通讯连接建立模块,用于在所述上游节点和所述下游节点之间,建立远程过程调用对应的通讯连接;
数据传输模块,用于利用所述通讯连接并结合所述数据交换规则,在所述上游节点和所述下游节点之间,进行跨语言的实时数据传输。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述跨语言任务调度方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述跨语言任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011203431.XA CN112199184A (zh) | 2020-11-02 | 2020-11-02 | 一种跨语言任务调度方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011203431.XA CN112199184A (zh) | 2020-11-02 | 2020-11-02 | 一种跨语言任务调度方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112199184A true CN112199184A (zh) | 2021-01-08 |
Family
ID=74011162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011203431.XA Withdrawn CN112199184A (zh) | 2020-11-02 | 2020-11-02 | 一种跨语言任务调度方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112199184A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590217A (zh) * | 2021-07-26 | 2021-11-02 | 北京百度网讯科技有限公司 | 基于引擎的函数管理方法、装置、电子设备及存储介质 |
CN114579261A (zh) * | 2022-04-29 | 2022-06-03 | 支付宝(杭州)信息技术有限公司 | 多语言混合流的处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE202012011734U1 (de) * | 2012-12-07 | 2013-02-08 | Linguatec Sprachtechnologien Gmbh | System und Einrichtung zum Kommunizieren unter Verwendung von unterschiedlichen Sprachen |
CN106293971A (zh) * | 2016-08-15 | 2017-01-04 | 张家林 | 一种分布式任务调度的方法和装置 |
CN108509282A (zh) * | 2018-02-08 | 2018-09-07 | 厦门快商通信息技术有限公司 | 基于golang反射技术的rpc跨语言调用服务治理方法 |
CN111164947A (zh) * | 2017-08-14 | 2020-05-15 | 英国电讯有限公司 | 用于对音频和/或视频数据进行编码的方法和设备 |
-
2020
- 2020-11-02 CN CN202011203431.XA patent/CN112199184A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE202012011734U1 (de) * | 2012-12-07 | 2013-02-08 | Linguatec Sprachtechnologien Gmbh | System und Einrichtung zum Kommunizieren unter Verwendung von unterschiedlichen Sprachen |
CN106293971A (zh) * | 2016-08-15 | 2017-01-04 | 张家林 | 一种分布式任务调度的方法和装置 |
CN111164947A (zh) * | 2017-08-14 | 2020-05-15 | 英国电讯有限公司 | 用于对音频和/或视频数据进行编码的方法和设备 |
CN108509282A (zh) * | 2018-02-08 | 2018-09-07 | 厦门快商通信息技术有限公司 | 基于golang反射技术的rpc跨语言调用服务治理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590217A (zh) * | 2021-07-26 | 2021-11-02 | 北京百度网讯科技有限公司 | 基于引擎的函数管理方法、装置、电子设备及存储介质 |
CN113590217B (zh) * | 2021-07-26 | 2022-12-02 | 北京百度网讯科技有限公司 | 基于引擎的函数管理方法、装置、电子设备及存储介质 |
CN114579261A (zh) * | 2022-04-29 | 2022-06-03 | 支付宝(杭州)信息技术有限公司 | 多语言混合流的处理方法和装置 |
CN114579261B (zh) * | 2022-04-29 | 2022-09-20 | 支付宝(杭州)信息技术有限公司 | 多语言混合流的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
US20190377604A1 (en) | Scalable function as a service platform | |
EP2898638B1 (en) | High performance data streaming | |
WO2021147288A1 (zh) | 一种容器集群管理方法、装置及系统 | |
US5925098A (en) | Apparatus and method for dispatching client method calls within a server computer system | |
KR102163402B1 (ko) | 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법 | |
CN110658794B (zh) | 一种制造执行系统 | |
CN112199184A (zh) | 一种跨语言任务调度方法、装置、设备及可读存储介质 | |
US10749984B2 (en) | Processing requests for multi-versioned service | |
CN111124640A (zh) | 任务分配方法及系统、存储介质、电子装置 | |
CN112395736A (zh) | 一种分布交互仿真系统的并行仿真作业调度方法 | |
CN114816694A (zh) | 一种多流程协作的rpa任务调度方法及装置 | |
Werner et al. | HARDLESS: A generalized serverless compute architecture for hardware processing accelerators | |
US10346155B1 (en) | Compilation optimization via dynamic server cloning | |
US20210232438A1 (en) | Serverless lifecycle management dispatcher | |
CN110247978B (zh) | 适配不同资源调度系统的作业执行方法和装置 | |
CN117435324A (zh) | 基于容器化的任务调度方法 | |
US9323509B2 (en) | Method and system for automated process distribution | |
CN116775041A (zh) | 基于流计算框架和rete算法的大数据实时决策引擎 | |
US20220291907A1 (en) | Compiling monoglot function compositions into a single entity | |
CN111913784A (zh) | 任务调度方法及装置、网元、存储介质 | |
CN112817706B (zh) | 一种分布式任务调度系统和方法 | |
CN113225269A (zh) | 基于容器的工作流调度方法、装置、系统及存储介质 | |
CN116257423A (zh) | 一种任务处理方法及装置 | |
Li et al. | A two-stage approach for virtual resources adaptive scheduling in container cloud |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210108 |