[go: up one dir, main page]

CN116069497A - 执行分布式任务的方法、装置、设备以及存储介质 - Google Patents

执行分布式任务的方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN116069497A
CN116069497A CN202211545713.7A CN202211545713A CN116069497A CN 116069497 A CN116069497 A CN 116069497A CN 202211545713 A CN202211545713 A CN 202211545713A CN 116069497 A CN116069497 A CN 116069497A
Authority
CN
China
Prior art keywords
subtask
subtasks
module
operator
task
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.)
Pending
Application number
CN202211545713.7A
Other languages
English (en)
Inventor
徐文栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu com Times Technology Beijing Co Ltd
Original Assignee
Baidu com Times Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Baidu com Times Technology Beijing Co Ltd filed Critical Baidu com Times Technology Beijing Co Ltd
Priority to CN202211545713.7A priority Critical patent/CN116069497A/zh
Publication of CN116069497A publication Critical patent/CN116069497A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种执行分布式任务的方法、装置、设备以及存储介质,涉及计算机技术领域,尤其涉及分布式计算领域。具体实现方案为:获取分布式任务,其中,分布式任务包括多个子任务;以及依次执行多个子任务,得到针对分布式任务的执行结果,其中,分布式任务是根据以下操作生成的:根据与多个子任务对应的算子信息,生成多个子任务,其中,每个子任务包括条件算子和处理算子;根据多个子任务之间的依赖关系,配置多个子任务之间的拓扑关系;以及创建上下文空间,并配置上下文空间中与每个子任务对应的子空间。

Description

执行分布式任务的方法、装置、设备以及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及分布式计算领域。
背景技术
微服务架构下存在许多任务需要编排,这些任务在执行流程、产出和资源消耗瓶颈点(如耗时、监听线程数)等方面均可能存在巨大差异。在分布式场景下,当任务由一连串操作组合在一起时,还会存在一致性问题。如何将这些任务统一管理是业界关注的一个重要问题。
发明内容
本公开提供了一种执行分布式任务的方法、装置、设备、存储介质以及程序产品。
根据本公开的一方面,提供了一种执行分布式任务的方法,包括:获取分布式任务,其中,所述分布式任务包括多个子任务;以及依次执行所述多个子任务,得到针对所述分布式任务的执行结果,其中,所述分布式任务是根据以下操作生成的:根据与所述多个子任务对应的算子信息,生成多个子任务,其中,每个所述子任务包括条件算子和处理算子;根据所述多个子任务之间的依赖关系,配置所述多个子任务之间的拓扑关系;以及创建上下文空间,并配置所述上下文空间中与所述每个子任务对应的子空间。
根据本公开的另一方面,提供了一种执行分布式任务的装置,包括:获取模块,用于获取分布式任务,其中,所述分布式任务包括多个子任务;以及执行模块,用于依次执行所述多个子任务,得到针对所述分布式任务的执行结果,生成模块,用于根据与所述多个子任务对应的算子信息,生成多个子任务,其中,每个所述子任务包括条件算子和处理算子;配置模块,用于根据所述多个子任务之间的依赖关系,配置所述多个子任务之间的拓扑关系;以及创建模块,用于创建上下文空间,并配置所述上下文空间中与所述每个子任务对应的子空间,其中,所述分布式任务是根据生成模块、配置模块和创建模块生成的。
本公开的另一个方面提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开实施例所示方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示意性示出了根据本公开实施例的可以应用执行分布式任务的方法和装置的示例性系统架构;
图2示意性示出了根据本公开的实施例的执行分布式任务的方法的流程图;
图3示意性示出了根据本公开的实施例的生成分布式任务的方法的流程图;
图4示意性示出了根据本公开的实施例的拓扑图的示意图;
图5示意性示出了根据本公开的实施例的依次执行多个子任务的方法的流程图;
图6示意性示出了根据本公开的实施例的执行分布式任务的方法的流程图;
图7是用来实现本公开实施例的执行分布式任务的装置的框图;
图8示意性示出了可以用来实施本公开的实施例的示例电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
以下将结合图1对本公开提供的执行分布式任务的方法和装置的系统架构进行描述。
图1示意性示出了根据本公开实施例的可以应用执行分布式任务的方法和装置的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
根据本公开的实施例,服务器105可以为分布式系统的服务器。服务器105可以安装有任务编排引擎,用于对分布式任务进行统一管理。分布式任务例如可以包括搜索任务、数据存储任务等。
需要说明的是,本公开实施例所提供的执行分布式任务的方法一般可以由服务器105执行。相应地,本公开实施例所提供的执行分布式任务的装置一般可以设置于服务器105中。本公开实施例所提供的执行分布式任务的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的执行分布式任务的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
以下将结合图2对本公开提供的执行分布式任务的方法进行描述。
图2示意性示出了根据本公开的实施例的执行分布式任务的方法的流程图。该执行分布式任务例如可以由服务器中的任务编排引擎执行。
如图2所示,该执行分布式任务的方法200包括在操作S210,获取分布式任务。其中,分布式任务可以包括多个子任务。
然后,在操作S220,依次执行多个子任务,得到针对分布式任务的执行结果。
以下将结合图3对本公开提供的生成分布式任务的方法进行描述。
图3示意性示出了根据本公开的实施例的生成分布式任务的方法的流程图。
如图3所示,该的生成分布式任务的方法300包括在操作S330,根据与多个子任务对应的算子信息,生成多个子任务,其中,每个子任务包括条件算子和处理算子。
在操作S340,根据与多个子任务对应的依赖关系,配置多个子任务之间的拓扑关系。
在操作S350,创建上下文空间,并配置上下文空间中与每个子任务对应的子空间。
根据本公开的实施例,分布式任务也即任务(Job),可以包括多个子任务(Task)。该多个子任务之间在执行时可以具有依赖关系。每个子任务可以包括多个算子,例如条件算子(Condition Operator)和处理算子(Processing Operator)。其中,条件算子可以作为处理算子的先验条件。当条件算子满足时,才会执行处理算子。示例性地,条件算子口语包括定时任务、异步结果检查任务等。处理算子可以包含该子任务的主要处理流程,包括但不限于执行计算任务、定时任务、网络通信任务等任务。
根据本公开的另一实施例,除执行条件算子和处理算子外,子任务还可以用于维护自身的执行状态、后续执行的子任务和入度等信息。
根据本公开的实施例,任务可以通过使用图(Graph)结构来维护所有子任务的依赖关系。示例性地,图可以采用邻接表的形式存储所有子任务的依赖关系。
基于此,例如可以根据多个子任务之间的依赖关系,生成拓扑图。其中,拓扑图包括多个节点和多个节点之间的边,多个节点与多个子任务一一对应,多个节点之间的边用于表示多个子任务之间的拓扑关系。其中,拓扑图可以为有向图,拓扑图中的边可以具有指向,边的指向可以指示子任务之间的依赖关系,例如边的可以由被依赖方所对应的节点指向依赖方所对应的节点。
根据本公开的实施例,子任务之间可以进行数据通信,以传递上下文数据。基于此可以设置一块上下文(Context)空间,用于存储子任务之间的上下文数据。同一个任务中的子任务可以通过共享上下文空间来进行传递上下文数据。示例性地,例如可以在内存中配置一块空间,作为上下文(Context)空间。
根据本公开的实施例,还可以为子任务中的算子配置对应的视图(Viewer)模块,用于访问算子对应的上下文空间和上下文数据。本实例中,可以利用视图模块来限定每个算子可以在上下文空间访问的子空间。通过限定每个算子只能访问对应的子空间,可以避免多个并发任务访问上下文空间时产生竞态关系(Race Condition)。示例性地,例如可以在对视图模块中增加访问锁代码来限定每个算子可以在上下文空间访问的子空间。
根据本公开的实施例,通过将任务分为多个子任务,每个子任务包括条件算子和处理算子,可以有效降低并发等待的线程数,节约线程资源。
以下将结合图4和具体实施例对本公开提供的拓扑图进行描述。本领域技术人员可以理解,以下示例实施例仅用于理解本公开,本公开并不局限于此。
示例性地,本实施例中,任务可以包括子任务1、子任务2、子任务3、子任务4和子任务5。其中,子任务2和子任务3依赖于子任务1,子任务4依赖于子任务2,子任务5依赖于子任务3和子任务4。
图4示意性示出了根据本公开的实施例的拓扑图的示意图。
如图4所示,可以根据子任务1生成节点411、根据子任务2生成节点412,根据子任务3生成节点413,根据子任务4生成节点414,根据子任务5生成节点415。然后可以根据子任务2和子任务1之间的依赖关系,生成边421,子任务3和子任务1之间的依赖关系,生成边422,根据子任务4和子任务2之间的依赖关系,生成边423,根据子任务3和子任务5之间的依赖关系,生成边424,根据子任务4和子任务5之间的依赖关系,生成边425。
以下将结合图5对本公开提供的生成分布式任务的方法进行描述。
图5示意性示出了根据本公开的实施例的依次执行多个子任务的方法的流程图。
如图5所示,该依次执行多个子任务方法520包括在操作S521,获取多个子任务中的一个子任务。
根据本公开的实施例,例如可以根据依赖关系,依次获取每个子任务。
在操作S522,确定子任务是否为可执行状态。在子任务为可执行状态的情况下,执行操作S523。在子任务为可执行状态的情况下,返回操作S521。
在操作S523,执行子任务。
根据本公开的实施例,例如可以确定子任务所对应的节点在拓扑图中的入度是否为0,以及确定子任务中的条件算子的计算结果是否为成功。在子任务所对应的节点在拓扑图中的入度为0,且子任务中的条件算子的计算结果为成功的情况下,确定子任务为可执行状态。
根据公开的实施例,执行子任务例如可以包括:从对应的子空间中获取原始数据。然后利用子任务中的计算算子,对原始数据进行计算,得到计算结果。接下来将计算结果写入对应的子空间。另外可以在拓扑图中确定与子任务对应的后继节点,然后将后继节点的入度减去1。原始数据可以预先设置在上下文空间中的数据,以及/或者可以是由其他子任务在执行过程中写入上下文空间的数据。
根据本公开的实施例,例如可以为可执行状态的子任务创建线程来执行该子任务。当可执行状态的子任务有多个时,可以按照并发度创建多个线程来执行这些可执行状态的子任务。其中,并发度可以用于表示同一时间并发执行的线程的数量上限,并发度可以根据实际需要设置。
根据本公开的实施例,在创建子任务时,还可以为每个子任务创建视图模块。基于此,可以利用视图模块,从对应的子空间中获取原始数据。另外可以利用视图模块,将计算结果写入对应的子空间。
根据本公开的实施例,在执行子任务时还可以包括:更新子任务的状态为执行中,执行子任务的处理算子,并获取处理算子的返回结果。当处理算子返回结果为成功,则可以标记子任务执行成功,并更新拓扑图。当处理算子返回结果为失败,则可以标记子任务执行失败,并将失败状态返回到任务层。其中,更新拓扑图例如可以包括遍历拓扑图中当前子任务所对应的节点的所有后继节点,并将后继节点的入度减去1。
图6示意性示出了根据本公开的实施例的执行分布式任务的方法的流程图。
如图6所示,除了上文所示的方法之外,执行分布式任务的方法600还可以包括操作S660~S680。操作S660~S680例如可以在执行子任务的过程中执行。
在操作S660,检测子任务是否为挂起状态。在子任务为挂起状态的情况下,执行操作S670。在子任务不为挂起状态的情况下,结束。
根据本公开的实施例,当子任务运行所需的条件不满足,无法继续运行时,可以将子任务设置为挂起状态,并暂停子任务。
在操作S670,根据挂起状态的检测次数,设置睡眠时长。
根据本公开的实施例,初始时检测次数可以为0。每对子任务的挂起状态进行一次检测,则可以将检测次数加1。
根据本公开的实施例,例如可以根据以下公式计算睡眠时长:
t=n*a
其中,t为睡眠时长,n为检测次数,a为单位时长。单位时长可以根据实际需要设置。
在操作S680,等待睡眠时长。在经过睡眠时长后,返回检测子任务是否为挂起状态的操作。
根据本公开的实施例,在睡眠时长未到时,可以将执行子任务的线程休眠,并将子线程占用的时间片让出。由此,可以有效减少执行过程中耗时较长的任务所占用的线程资源。
根据本公开的实施例的分布式任务执行方法例如可以由任务编排引擎执行。根据本公开的另一实施例,还可以在任务编排引擎中设置接口,允许用户可根据实际情况定制执行器,该执行器可以用于执行每个任务所对应的睡眠时长的配置策略。
根据本公开的另一实施例,可以预先设置配置文件。配置文件中可以通过字符串来表示任务中的子任务、子任务中的算子、上下文信息等配置信息和子任务之间的依赖关系。可以使用反射的方法根据配置文件,生成对应的任务。例如,可以利用解析器来解析配置文件,获得任务中的子任务、子任务中的算子、上下文空间等配置信息和子任务之间的依赖关系。示例性地,配置文件的格式可以采用JSON格式,配置文件可以包括任务(Job)的名字(job_name)、上下文(context)和子任务(task)依赖关系及各子任务(task)使用的算子组合(operator)等信息。通过配置文件,可以使用户可以灵活地组合子任务中的算子,构造任务。
在一些容器化场景下,系统可能受到同机部署的其他系统影响发生迁移,导致进程被杀死,进而导致任务中断。一些不可重入、耗时较长的子任务则无法继续执行,需要用户手动采取撤销、回滚等手段进行处理,再重新执行任务,对人力造成浪费。
根据本公开的另一实施例,可以从任务和子任务两个维度进行序列化和持久化。例如可以将任务的关键信息进行了组织编排,使任务编排引擎可以根据组织编排的关键信息将任务和子任务进行恢复。其中,关键信息例如可以包括:上下文数据、任务名、子任务名、当前任务状态、已完成任务数等。每个任务将会序列化上述关键信息,用于在持久化时初始化任务的状态。对于子任务,可以维护子任务的执行状态。子任务的依赖关系可以通过构造任务的配置文件获取。
根据本公开的实施例,通过从任务和子任务两个维度进行序列化和持久化,对于不可重入子任务,不再需要用户人工干预,减少了人力浪费。
根据本公开的实施例,例如可以使用静态分发(CRTP)技术将持久化方法与编排引擎解耦,使用户可以不侵入编排引擎实现自己的持久化方法,也避免因使用虚函数寻址路径过长导致的性能退化问题,同时也避免了持久化使用的API不一致(如参数不一致)导致的不兼容问题。用户需要提供序列化后信息的存储位置(如:本地数据库、分布式数据库等)即可完成持久化功能。
根据本公开的实施例,例如还可以提供持久化开关和策略配置,用户可以根据自己的业务、性能需求主动打开或关闭持久化功能,也可以通过调整持久化频率配置持久化的时间间隔。
以下将结合图7对本公开提供的执行分布式任务的装置进行描述。
图7示意性示出了根据本公开实施例的执行分布式任务的装置的框图。
如图7所示,执行分布式任务的装置700包括获取模块710、执行模块720、生成模块730、配置模块740和创建模块750。
获取模块710,用于获取分布式任务,其中,分布式任务包括多个子任务。
执行模块720,用于依次执行多个子任务,得到针对分布式任务的执行结果。
生成模块730,用于根据与多个子任务对应的算子信息,生成多个子任务,其中,每个子任务包括条件算子和处理算子。
配置模块740,用于根据多个子任务之间的依赖关系,配置多个子任务之间的拓扑关系。
创建模块750,用于创建上下文空间,并配置上下文空间中与每个子任务对应的子空间。
其中,分布式任务是根据生成模块、配置模块和创建模块生成的。
根据本公开的实施例,所述配置模块可以包括:图生成子模块,用于根据所述依赖关系,生成拓扑图,其中,所述拓扑图包括多个节点和所述多个节点之间的边,所述多个节点与所述多个子任务一一对应,所述多个节点之间的边用于表示所述多个子任务之间的拓扑关系。
根据本公开的实施例,所述执行模块可以包括:可执行状态确定子模块,用于针对所述多个子任务中的每个子任务,确定所述子任务是否为可执行状态;以及任务执行子模块,用于在所述子任务为可执行状态的情况下,执行所述子任务。
根据本公开的实施例,所述任务执行子模块可以包括:获取单元,用于从对应的子空间中获取原始数据;计算单元,利用所述子任务中的计算算子,对原始数据进行计算,得到计算结果;写入单元,将所述计算结果写入对应的子空间;后继节点单元,用于在所述拓扑图中确定与所述子任务对应的后继节点;以及减去单元,用于将所述后继节点的入度减去1。
根据本公开的实施例,上述装置还可以包括:视图创建模块,用于为每个子任务创建视图模块;其中,所述获取单元,包括:数据获取子单元,用于利用所述视图模块,从对应的子空间中获取原始数据;以及所述写入单元,包括:结果写入子单元,用于利用所述视图模块,将所述计算结果写入对应的子空间。
根据本公开的实施例,上述装置还可以包括:入度确定模块,用于确定所述子任务所对应的节点在所述拓扑图中的入度是否为0,以及确定所述子任务中的条件算子的计算结果是否为成功;以及子任务状态确定模块,用于在所述子任务所对应的节点在所述拓扑图中的入度为0,且所述子任务中的条件算子的计算结果为成功的情况下,确定所述子任务为可执行状态。
根据本公开的实施例,上述装置还可以包括:检测模块,用于在执行所述子任务的过程中,检测所述子任务是否为挂起状态;设置模块,用于在所述子任务为挂起状态的情况下,根据挂起状态的检测次数,设置睡眠时长;以及返回模块,用于在经过所述睡眠时长后,返回所述检测所述子任务是否为挂起状态的操作。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示意性示出了可以用来实施本公开的实施例的示例电子设备800的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如执行分布式任务的方法。例如,在一些实施例中,执行分布式任务的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的执行分布式任务的方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行执行分布式任务的方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(″Virtual Private Server″,或简称″VPS″)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (17)

1.一种执行分布式任务的方法,包括:
获取分布式任务,其中,所述分布式任务包括多个子任务;以及
依次执行所述多个子任务,得到针对所述分布式任务的执行结果,
其中,所述分布式任务是根据以下操作生成的:
根据与所述多个子任务对应的算子信息,生成多个子任务,其中,每个所述子任务包括条件算子和处理算子;
根据所述多个子任务之间的依赖关系,配置所述多个子任务之间的拓扑关系;以及
创建上下文空间,并配置所述上下文空间中与所述每个子任务对应的子空间。
2.根据权利要求1所述的方法,其中,所述根据所述多个子任务之间的依赖关系,配置所述多个子任务之间的拓扑关系,包括:
根据所述依赖关系,生成拓扑图,其中,所述拓扑图包括多个节点和所述多个节点之间的边,所述多个节点与所述多个子任务一一对应,所述多个节点之间的边用于表示所述多个子任务之间的拓扑关系。
3.根据权利要求2所述的方法,其中,所述依次执行所述多个子任务,得到针对所述分布式任务的执行结果,包括:
针对所述多个子任务中的每个子任务,
确定所述子任务是否为可执行状态;以及
在所述子任务为可执行状态的情况下,执行所述子任务。
4.根据权利要求3所述的方法,其中,所述执行所述子任务,包括:
从对应的子空间中获取原始数据;
利用所述子任务中的计算算子,对原始数据进行计算,得到计算结果;
将所述计算结果写入对应的子空间;
在所述拓扑图中确定与所述子任务对应的后继节点;以及
将所述后继节点的入度减去1。
5.根据权利要求4所述的方法,还包括:为每个子任务创建视图模块;
其中,所述从对应的子空间中获取原始数据,包括:利用所述视图模块,从对应的子空间中获取原始数据;以及
所述将所述计算结果写入对应的子空间,包括:利用所述视图模块,将所述计算结果写入对应的子空间。
6.根据权利要求2所述的方法,还包括:
确定所述子任务所对应的节点在所述拓扑图中的入度是否为0,以及确定所述子任务中的条件算子的计算结果是否为成功;以及
在所述子任务所对应的节点在所述拓扑图中的入度为0,且所述子任务中的条件算子的计算结果为成功的情况下,确定所述子任务为可执行状态。
7.根据权利要求1所述的方法,还包括:
在执行所述子任务的过程中,
检测所述子任务是否为挂起状态;
在所述子任务为挂起状态的情况下,根据挂起状态的检测次数,设置睡眠时长;以及
在经过所述睡眠时长后,返回所述f检测所述子任务是否为挂起状态的操作。
8.一种执行分布式任务的装置,包括:
获取模块,用于获取分布式任务,其中,所述分布式任务包括多个子任务;以及
执行模块,用于依次执行所述多个子任务,得到针对所述分布式任务的执行结果,
生成模块,用于根据与所述多个子任务对应的算子信息,生成多个子任务,其中,每个所述子任务包括条件算子和处理算子;
配置模块,用于根据所述多个子任务之间的依赖关系,配置所述多个子任务之间的拓扑关系;以及
创建模块,用于创建上下文空间,并配置所述上下文空间中与所述每个子任务对应的子空间,
其中,所述分布式任务是根据生成模块、配置模块和创建模块生成的。
9.根据权利要求8所述的装置,其中,所述配置模块,包括:
图生成子模块,用于根据所述依赖关系,生成拓扑图,其中,所述拓扑图包括多个节点和所述多个节点之间的边,所述多个节点与所述多个子任务一一对应,所述多个节点之间的边用于表示所述多个子任务之间的拓扑关系。
10.根据权利要求9所述的装置,其中,所述执行模块,包括:
可执行状态确定子模块,用于针对所述多个子任务中的每个子任务,确定所述子任务是否为可执行状态;以及
任务执行子模块,用于在所述子任务为可执行状态的情况下,执行所述子任务。
11.根据权利要求10所述的装置,其中,所述任务执行子模块,包括:
获取单元,用于从对应的子空间中获取原始数据;
计算单元,利用所述子任务中的计算算子,对原始数据进行计算,得到计算结果;
写入单元,将所述计算结果写入对应的子空间;
后继节点单元,用于在所述拓扑图中确定与所述子任务对应的后继节点;以及
减去单元,用于将所述后继节点的入度减去1。
12.根据权利要求11所述的装置,还包括:视图创建模块,用于为每个子任务创建视图模块;
其中,所述获取单元,包括:数据获取子单元,用于利用所述视图模块,从对应的子空间中获取原始数据;以及
所述写入单元,包括:结果写入子单元,用于利用所述视图模块,将所述计算结果写入对应的子空间。
13.根据权利要求9所述的装置,还包括:
入度确定模块,用于确定所述子任务所对应的节点在所述拓扑图中的入度是否为0,以及确定所述子任务中的条件算子的计算结果是否为成功;以及
子任务状态确定模块,用于在所述子任务所对应的节点在所述拓扑图中的入度为0,且所述子任务中的条件算子的计算结果为成功的情况下,确定所述子任务为可执行状态。
14.根据权利要求8所述的装置,还包括:
检测模块,用于在执行所述子任务的过程中,检测所述子任务是否为挂起状态;
设置模块,用于在所述子任务为挂起状态的情况下,根据挂起状态的检测次数,设置睡眠时长;以及
返回模块,用于在经过所述睡眠时长后,返回所述检测所述子任务是否为挂起状态的操作。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
CN202211545713.7A 2022-12-01 2022-12-01 执行分布式任务的方法、装置、设备以及存储介质 Pending CN116069497A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211545713.7A CN116069497A (zh) 2022-12-01 2022-12-01 执行分布式任务的方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211545713.7A CN116069497A (zh) 2022-12-01 2022-12-01 执行分布式任务的方法、装置、设备以及存储介质

Publications (1)

Publication Number Publication Date
CN116069497A true CN116069497A (zh) 2023-05-05

Family

ID=86172443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211545713.7A Pending CN116069497A (zh) 2022-12-01 2022-12-01 执行分布式任务的方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN116069497A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472478A (zh) * 2023-12-22 2024-01-30 科大讯飞股份有限公司 自动化流程生成方法及相关装置和系统、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472478A (zh) * 2023-12-22 2024-01-30 科大讯飞股份有限公司 自动化流程生成方法及相关装置和系统、设备和存储介质
CN117472478B (zh) * 2023-12-22 2024-04-26 科大讯飞股份有限公司 自动化流程生成方法及相关装置和系统、设备和存储介质

Similar Documents

Publication Publication Date Title
CN113934464A (zh) Linux系统中启动安卓应用的方法、装置和电子设备
CN112527474B (zh) 任务处理方法及装置、设备、可读介质、计算机程序产品
CN112925651A (zh) 应用资源部署方法、装置、电子设备和介质
CN113377665B (zh) 基于容器技术的测试方法、装置、电子设备及存储介质
CN113778644A (zh) 任务的处理方法、装置、设备及存储介质
CN112817992A (zh) 执行更改任务的方法、装置、电子设备以及可读存储介质
CN117032712A (zh) 流水线编译构建方法、装置、电子设备和存储介质
CN115390992A (zh) 一种虚拟机创建方法、装置、设备和存储介质
CN116069497A (zh) 执行分布式任务的方法、装置、设备以及存储介质
CN112905270B (zh) 工作流实现方法、装置、平台、电子设备以及存储介质
CN114862223A (zh) 一种机器人调度方法、装置、设备及存储介质
CN114237755B (zh) 应用运行方法、装置、电子设备以及存储介质
CN111582480A (zh) 用于对模型剪枝的方法和装置
CN114661274A (zh) 用于生成智能合约的方法和装置
CN114416276A (zh) 设备管理服务的调度方法、装置、电子设备及存储介质
CN118200405B (zh) 一种数据传递方法、装置、电子设备及存储介质
CN115222041B (zh) 用于模型训练的图生成方法、装置、电子设备及存储介质
CN115640112B (zh) 一种基于标签的资源调度方法、装置、设备及介质
CN115913954B (zh) 集群管理信息交互方法、装置、设备和存储介质
CN117608798A (zh) 一种工作流调度方法、装置、设备及介质
CN119512536A (zh) 一种任务生成方法、装置、设备、存储介质及产品
CN119808928A (zh) 一种问答知识的复用方法、装置、设备及介质
CN117742711A (zh) 面向低代码的页面渲染方法、装置、电子设备和存储介质
CN118468991A (zh) 用户请求处理方法、装置、电子设备及存储介质
CN120179668A (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