CN111625323A - 分布式任务处理方法、装置、设备及计算机可读存储介质 - Google Patents
分布式任务处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111625323A CN111625323A CN201910149054.7A CN201910149054A CN111625323A CN 111625323 A CN111625323 A CN 111625323A CN 201910149054 A CN201910149054 A CN 201910149054A CN 111625323 A CN111625323 A CN 111625323A
- Authority
- CN
- China
- Prior art keywords
- task
- processed
- index data
- execute
- identifier
- 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
Links
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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
-
- 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/10—Protocols in which an application is distributed across nodes in the network
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式任务处理方法、装置、设备及计算机可读存储介质,方法包括:接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。从而能够避免长时间锁定资源,并且能够避免单点故障。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种分布式任务处理方法、装置、设备及计算机可读存储介质。
背景技术
随着互联网的迅猛发展,网络应用的业务流量日趋增大,业务逻辑也日趋复杂。单个系统已经无法满足业务发展的需要,分布式系统广泛应用。随即而来产生的对于跨系统的事务一致性的需求越来越多。
目前分布式事务的实现方式主要是两阶段提交方案,其中,第一阶段为准备阶段,第二阶段为提交阶段。两阶段提交一般包含两类节点:一类为协调者(coordinator),通常一个系统中只有一个;另一类为事务参与者(participants,cohorts或workers),一般包含多个。具体地,协调者节点向所有参与者节点询问是否可以执行提交操作(vote),并开始等待各参与者节点的响应。参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个“同意”消息;如果参与者节点的事务操作实际执行失败,则它返回一个“中止”消息。如果协调者收到了参与者的失败消息或者超时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。
但是,采用上述提交方案进行分布式事务的处理时,由于执行过程中,所有参与节点都是事务阻塞型的。当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态。此外,由于协调者的重要性,一旦协调者发生故障。参与者会一直阻塞下去。尤其在第二阶段,协调者发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。
发明内容
本发明提供一种分布式任务处理方法、装置、设备及计算机可读存储介质,用于解决现有的分布式事务处理方法由于参与者占有公共资源导致第三方节点访问公共资源不得不处于阻塞状态的技术问题。
本发明的第一个方面是提供一种分布式任务处理方法,包括:
接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
本发明的另一个方面是提供一种分布式任务处理装置,包括:
第一接收模块,用于接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
生成模块,用于根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
第二接收模块,用于接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
调用模块,用于根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
本发明的又一个方面是提供一种分布式任务处理设备,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为由所述处理器执行如上述的分布式任务处理方法。
本发明的又一个方面是提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述的分布式任务处理方法。
本发明提供的分布式任务处理方法、装置、设备及计算机可读存储介质,通过接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。从而能够避免长时间锁定资源,并且能够避免单点故障。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明基于的网络架构示意图;
图2为本发明实施例一提供的分布式任务处理方法的流程示意图;
图3为本发明实施例二提供的分布式任务处理方法的流程示意图;
图4为本发明实施例三提供的分布式任务处理方法的流程示意图;
图5为本发明实施例四提供的分布式任务处理方法的流程示意图;
图6为本发明实施例五提供的分布式任务处理方法的流程示意图;
图7为本发明实施例六提供的分布式任务处理方法的流程示意图;
图8为本发明实施例七提供的分布式任务处理装置的结构示意图;
图9为本发明实施例八提供的分布式任务处理设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例所获得的所有其他实施例,都属于本发明保护的范围。
目前分布式事务的实现方式主要是两阶段提交方案,其中,第一阶段为准备阶段,第二阶段为提交阶段。两阶段提交一般包含两类节点:一类为协调者(coordinator),通常一个系统中只有一个;另一类为事务参与者(participants,cohorts或workers),一般包含多个。具体地,协调者节点向所有参与者节点询问是否可以执行提交操作(vote),并开始等待各参与者节点的响应。参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个“同意”消息;如果参与者节点的事务操作实际执行失败,则它返回一个“中止”消息。如果协调者收到了参与者的失败消息或者超时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。但是,采用上述提交方案进行分布式事务的处理时,由于执行过程中,所有参与节点都是事务阻塞型的。当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态。此外,由于协调者的重要性,一旦协调者发生故障。参与者会一直阻塞下去。尤其在第二阶段,协调者发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。
为了解决上述技术问题,本发明提供了一种分布式任务处理方法、装置、设备及计算机可读存储介质。本发明提供的分布式任务处理方法、装置、设备及计算机可读存储介质能够应用在任意一种分布式数据库任务处理的场景中,以避免长时间锁定资源,以及避免单点故障。
图1为本发明基于的网络架构示意图,如图1所示,本发明基于的网络架构至少包括:异步任务处理系统1,第一系统2以及第二系统3,其中,异步任务系统1可以采用软件和/或硬件的方式实现,异步任务系统1分别于该第一系统2与第二系统3通过有线或无线的方式进行通信连接与信息交互,第一系统2与第二系统2可以通过异步任务系统进行信息交互。需要说明的是,分布式系统中包括但不限于两个系统。
图2为本发明实施例一提供的分布式任务处理方法的流程示意图,如图2所示,所述方法包括:
步骤101、接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识。
本实施例的执行主体为异步任务系统,该异步任务系统中存储有任务元数据,任务体数据以及任务索引数据。其中,任务索引数据中包括任务元数据的存储路径,任务元数据中记录有任务的状态以及任务的目标服务等信息,任务体数据中包括执行任务所需全部数据。第一系统中包括第一待处理任务,第二系统中包括第二待处理任务。需要说明的是,第一系统可以独立完成该第一待处理任务,此外,第一系统还可以与第二系统进行交互,获取当前全部待处理任务,并根据预设的命名规则为全部待处理任务命名,生成任务标识。可以理解的是,第一系统为全部待处理任务命名后,当前全部系统中的全部待处理任务中均包含该任务标识。此外,第一系统还可以将当前第二系统中的第二待处理任务发送至异步任务系统。相应地,异步任务系统可以接收第一系统发送的第二系统中的第二待处理任务,其中,第二待处理任务中包括任务标识,且该任务标识为当前全部系统中全部待处理任务信息的标识。
步骤102、根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统。
在本实施方式中,异步任务系统接收到该第二待处理任务之后,可以根据该第二待处理任务生产一个任务索引数据,其中,该任务索引数据中包含处理第二待处理任务的任务元数据的存储路径。生成该任务索引数据之后,异步任务系统可以将该任务索引数据发送至第一系统。
步骤103、接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据。
在本实施方式中,第一系统接收到该任务索引数据之后,可以开启一个本地事务,并执行该本地事务。可以理解的是,第一系统中的第一待处理任务与第二系统中的第二待处理任务需要同时处理成功或同时处理失败。因此,第一系统在成功执行本地事务之后,可以将该任务索引数据返回至异步任务系统。相应地,异步任务系统可以接收该任务索引数据。
步骤104、根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
在本实施方式中,异步任务系统接收到该任务索引数据之后,可以通过扫描该任务索引数据实现对第二待处理任务的处理。具体地,异步任务系统可以根据该任务索引数据调用第二系统处理该待处理任务。需要说明的是,异步任务系统中同一时刻可能存在多个任务索引数据,因此,异步任务系统可以按照任务索引数据的上传时间依次处理第二待处理任务。
本实施例提供的分布式任务处理方法,通过接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。从而能够避免长时间锁定资源,并且能够避免单点故障。
需要说明的是,在上述任一实施例的基础上,所述预设的事务标识为所述第一系统确定当前全部系统中全部待处理任务之后,根据预设的编号规则生成的。
在本实施例中,第一系统可以与第二系统进行交互,获取当前全部待处理任务,并根据预设的命名规则为全部待处理任务命名,生成任务标识。可以理解的是,第一系统为全部待处理任务命名后,当前全部系统中的全部待处理任务中均包含该任务标识。可以理解的是,第一系统中的第一待处理任务与第二系统中的第二待处理任务需要同时处理成功或同时处理失败,由于当前第一待处理任务与第二待处理任务具有相同的任务标识,因此,能够方便地判定当前第一待处理任务与第二待处理任务是否同时处理成功或同时处理失败。
本实施例提供的分布式任务处理方法,通过预设的事务标识为所述第一系统确定当前全部系统中全部待处理任务之后,根据预设的编号规则生成的,从而能够方便为当前全部系统中的全部待处理任务的管理。
图3为本发明实施例二提供的分布式任务处理方法的流程示意图,在上述任一实施例的基础上,如图3所示,所述方法包括:
步骤201、接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
步骤202、根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
步骤203、接收所述第一系统在成功执行所述第一系统中的第一待处理任务,并将所述事务标识写入所述第一系统对应的本地数据库中之后发送的所述任务索引数据;
步骤204、根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
在本实施例中,第一系统接收到该任务索引数据之后,可以开启一个本地事务,并执行该本地事务。具体地,该本地事务为第一系统处理第一待处理任务,并将生成的任务标识上传至第一系统的本地数据库。可以理解的是,第一系统中的第一待处理任务与第二系统中的第二待处理任务需要同时处理成功或同时处理失败,第一系统中的本地事务也需要同时成功或同时失败。因此,需要在第一系统成功处理第一待处理任务,并将生成的任务标识上传至第一系统的本地数据库之后将任务索引数据发送至异步任务系统中。相应地,异步任务系统可以接收该任务索引数据。
需要说明的是,异步任务系统接收到该任务索引数据之后,即表征第一系统中已成功执行第一待处理任务,由于第一待处理任务与第二系统中的第二待处理任务需要同时处理成功或同时处理失败,因此,第二待处理任务必须要处理成功。
本实施例提供的分布式任务处理方法,通过接收所述第一系统在成功执行所述第一系统中的第一待处理任务,并将所述事务标识写入所述第一系统对应的本地数据库中之后发送的所述任务索引数据,从而能够保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,保证异步任务系统处理同步性,进而能够避免长时间锁定资源,并且能够避免单点故障。
图4为本发明实施例三提供的分布式任务处理方法的流程示意图,在上述任一实施例的基础上,如图4所示,所述任务索引数据包括处理所述第二待处理任务对应的任务元数据的存储路径;所述方法包括:
步骤301、接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
步骤302、根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
步骤303、接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
步骤304、扫描所述任务索引数据,获取与所述处理所述第二待处理任务对应的任务元数据;
步骤305、根据所述任务元数据调用所述第二系统执行所述第二待处理任务。
在本实施例中,异步任务系统接收到该任务索引数据之后,可以通过扫描该任务索引数据实现对第二待处理任务的处理,异步任务系统可以根据该任务索引数据调用第二系统处理该待处理任务。需要说明的是,由于任务索引数据中包括任务元数据的存储路径,因此,异步任务系统可以扫描该任务索引数据,根据该任务索引数据中的任务元数据的存储路径获取与处理第二待处理任务对应的任务元数据,并根据该任务元数据处理第二待处理任务。
本实施例提供的分布式任务处理方法,通过扫描所述任务索引数据,获取与所述处理所述第二待处理任务对应的任务元数据,根据所述任务元数据调用所述第二系统执行所述第二待处理任务,从而能够提高异步任务处理的效率,进而能够避免长时间锁定资源,并且能够避免单点故障。
图5为本发明实施例四提供的分布式任务处理方法的流程示意图,在上述任一实施例的基础上,如图5所示,所述方法包括:
步骤401、接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
步骤402、根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
步骤403、接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
步骤404、根据所述任务索引数据调用所述第二系统执行所述第二待处理任务;
步骤405、判断所述第二待处理任务是否执行成功;
步骤406、若是,则对所述第二待处理任务的任务元数据中记录的任务状态进行更新;
步骤407、若否,则重新调用所述第二系统执行所述第二待处理任务。
在本实施例中,异步任务系统接收到该任务索引数据之后,即表征第一系统中已成功执行第一待处理任务,由于第一待处理任务与第二系统中的第二待处理任务需要同时处理成功或同时处理失败,因此,第二待处理任务必须要处理成功。具体地,在根据任务索引数据调用所述第二系统执行第二待处理任务之后,需要判断第二待处理任务是否处理成功,若处理成功,则可以对任务元数据中的任务状态进行更新,若处理失败,为了保证与第一待处理任务同时处理成功或同时处理失败,需要重新调用所述第二系统执行所述第二待处理任务。
本实施例提供的分布式任务处理方法,通过判断所述第二待处理任务是否执行成功,若是,则对所述第二待处理任务的任务元数据中记录的任务状态进行更新,若否,则重新调用所述第二系统执行所述第二待处理任务,从而能够保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,保证异步任务系统处理同步性,进而能够避免长时间锁定资源,并且能够避免单点故障。
进一步地,在上述任一实施例的基础上,所述方法包括:
接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
根据所述任务索引数据调用所述第二系统执行所述第二待处理任务;
判断所述第二待处理任务是否执行成功;
若是,则对所述第二待处理任务的任务元数据中记录的任务状态进行更新;
若否,则重新调用所述第二系统执行所述第二待处理任务;
判断所述第二待处理任务执行失败的次数是否超过预设的阈值;
若是,则提示用户对所述第二待处理任务进行人工处理;
若否,则返回执行所述重新调用所述第二系统执行所述第二待处理任务的步骤。
在本实施例中,异步任务系统接收到该任务索引数据之后,即表征第一系统中已成功执行第一待处理任务,由于第一待处理任务与第二系统中的第二待处理任务需要同时处理成功或同时处理失败,因此,第二待处理任务必须要处理成功。具体地,在根据任务索引数据调用所述第二系统执行第二待处理任务之后,需要判断第二待处理任务是否处理成功,若处理成功,则可以对任务元数据中的任务状态进行更新,若处理失败,为了保证与第一待处理任务同时处理成功或同时处理失败,需要重新调用所述第二系统执行所述第二待处理任务。相应地,若第二系统处理多次均为成功,则为了提高任务处理效率,避免长时间占用公共资源,需要提示用户进行人工处理。具体地,可以判断第二待处理任务执行失败的次数是否超过预设的阈值,若是,则提示用户进行人工处理,若否,则可以继续调用第二系统进行处理。其中,该预设的阈值可以由用户自行设置,也可以为系统默认,本发明在此不做限制。
本实施例提供的分布式任务处理方法,通过判断所述第二待处理任务执行失败的次数是否超过预设的阈值,若是,则提示用户对所述第二待处理任务进行人工处理,若否,则返回执行所述重新调用所述第二系统执行所述第二待处理任务的步骤。从而能够保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,保证异步任务系统处理同步性,进而能够避免长时间锁定资源,并且能够避免单点故障。
图6为本发明实施例五提供的分布式任务处理方法的流程示意图,在上述任一实施例的基础上,如图6所示,所述方法包括:
步骤501、按照预设的时间周期扫描是否存在超过预设时间阈值未处理的所述第二待处理任务;
步骤502、若是,则根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识;
步骤503、若是,则调用所述第二系统执行所述第二待处理任务;
步骤504、若否,则丢弃所述第二待处理任务。
需要说明的是,第一系统向异步任务系统写入该任务索引数据的操作可能成功也可能失败。举例来说若当前网络存在故障,则第一系统可能向异步任务系统写入该任务索引数据失败,此外,若当前异步任务系统中存储空间不足,则第一系统可能向异步任务系统写入该任务索引数据失败。而当第一系统成功向异步任务系统写入该任务索引数据时,可以通过扫描任务索引数据的方式实现对第二待处理任务的处理,当第一系统向异步任务系统写入任务索引数据失败时,则无法通过扫描任务索引数据的方式实现对第二待处理任务的处理。此时,为了实现对异步任务的及时处理,需要按照预设的时间周期扫描是否存在超过预设时间阈值未处理的所述第二待处理任务。可以理解的是,由于该第二待处理任务没有对应的任务索引数据,因此不知道与其对应的第一待处理任务是否成功处理,为了保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,需要根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识。由于第一系统执行第一待处理任务与将事务标识上传本地数据库是同时成功同时失败的,因此,若能够在本地数据库中查询到该事务标识,则表征第一待处理任务成功处理完毕,此时,第二待处理任务也需要成功处理,需要调用所述第二系统执行所述第二待处理任务。相应地,若未在本地数据库中查询到该事务标识,则表征第一待处理任务未成功处理,此时,为了保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,可以丢弃该第二待处理任务。
本实施例提供的分布式任务处理方法,通过按照预设的时间周期扫描是否存在超过预设时间阈值未处理的所述第二待处理任务若是,则根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识,若是,则调用所述第二系统执行所述第二待处理任务,若否,则丢弃所述第二待处理任务。从而能够保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,保证异步任务系统处理同步性,进而能够避免长时间锁定资源,并且能够避免单点故障。
图7为本发明实施例六提供的分布式任务处理方法的流程示意图,在上述任一实施例的基础上,如图7所示,所述方法包括:
步骤601、第一系统生成事务标识;
步骤602、第一系统发送第二系统中的第二待处理任务至异步任务系统;
步骤603、异步任务系统根据该第二待处理任务反馈任务索引数据至第一系统;
步骤604、第一系统处理第一待处理任务,并将该事务标识写入本地数据库;
步骤605、第一系统在成功执行所述第一系统中的第一待处理任务,并将所述事务标识写入所述第一系统对应的本地数据库中之后,发送任务索引数据至异步任务系统;
步骤606、异步任务系统获取任务索引数据;
步骤607、异步任务系统根据任务索引数据获取任务元数据;
步骤608、异步任务系统调用第二系统处理该第二待处理任务;
步骤609、异步任务系统在第二待处理任务成功处理完毕时,更新第二待处理任务的状态;
步骤610、异步任务系统定期查询是否存在超过预设时间阈值未处理第二待处理任务的任务元数据;
步骤611、异步任务系统根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识;
步骤612、若存在,则异步任务系统调用第二系统执行第二待处理任务;
步骤613、若不存在,则任务系统丢弃第二待处理任务。
其中,步骤601-步骤602、步骤604-步骤605的执行主体为第一系统;步骤603、步骤606-步骤613的执行主体为异步任务系统。
本实施例提供的分布式任务处理方法,能够保证第一待处理任务与第二系统中的第二待处理任务同时处理成功或同时处理失败,保证异步任务系统处理同步性,进而能够避免长时间锁定资源,并且能够避免单点故障。
图8为本发明实施例七提供的分布式任务处理装置的结构示意图,如图8所示,所述装置包括:
第一接收模块71,用于接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
生成模块72,用于根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
第二接收模块73,用于接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
调用模块74,用于根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
本实施例提供的分布式任务处理装置,通过接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。从而能够避免长时间锁定资源,并且能够避免单点故障。
进一步地,在上述任一实施例的基础上,所述预设的事务标识为所述第一系统确定当前全部系统中全部待处理任务之后,根据预设的编号规则生成的。
进一步地,在上述任一实施例的基础上,所述第二接收模块包括:
接收单元,用于接收所述第一系统在成功执行所述第一系统中的第一待处理任务,并将所述事务标识写入所述第一系统对应的本地数据库中之后发送的所述任务索引数据。
进一步地,在上述任一实施例的基础上,所述任务索引数据包括处理所述第二待处理任务对应的任务元数据的存储路径;
相应地,所述调用模块包括:
扫描单元,用于扫描所述任务索引数据,获取与所述处理所述第二待处理任务对应的任务元数据;
调用单元,用于根据所述任务元数据调用所述第二系统执行所述第二待处理任务。
进一步地,在上述任一实施例的基础上,所述装置还包括:
第一判断模块,用于判断所述第二待处理任务是否执行成功;
第一处理模块,用于若是,则对所述第二待处理任务的任务元数据中记录的任务状态进行更新;
第二处理模块,用于若否,则重新调用所述第二系统执行所述第二待处理任务。
进一步地,在上述任一实施例的基础上,所述装置还包括:
第二判断模块,用于判断所述第二待处理任务执行失败的次数是否超过预设的阈值;
第三处理模块,用于若是,则提示用户对所述第二待处理任务进行人工处理;
第四处理模块,用于若否,则返回执行所述重新调用所述第二系统执行所述第二待处理任务的步骤。
进一步地,在上述任一实施例的基础上,所述装置还包括:
扫描模块,用于按照预设的时间周期扫描是否存在超过预设时间阈值未处理的所述第二待处理任务;
查询模块,用于若是,则根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识;
第五处理模块,用于若是,则调用所述第二系统执行所述第二待处理任务;
第六处理模块,用于若否,则丢弃所述第二待处理任务。
图9为本发明实施例八提供的分布式任务处理设备的结构示意图,如图9所示,所述设备包括:存储器81,处理器82;
存储器81;用于存储所述处理器82可执行指令的存储器81;
其中,所述处理器82被配置为由所述处理器82执行如上述任一实施例所述的分布式任务处理方法;
所述分布式任务处理设备还包括通信接口。
本发明又一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述任一实施例所述的分布式任务处理方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (16)
1.一种分布式任务处理方法,其特征在于,包括:
接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
2.根据权利要求1所述的方法,其特征在于,所述预设的事务标识为所述第一系统确定当前全部系统中全部待处理任务之后,根据预设的编号规则生成的。
3.根据权利要求1所述的方法,其特征在于,所述接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据,包括:
接收所述第一系统在成功执行所述第一系统中的第一待处理任务,并将所述事务标识写入所述第一系统对应的本地数据库中之后发送的所述任务索引数据。
4.根据权利要求1所述的方法,其特征在于,所述任务索引数据包括处理所述第二待处理任务对应的任务元数据的存储路径;
相应地,所述根据所述任务索引数据调用所述第二系统执行所述第二待处理任务,包括:
扫描所述任务索引数据,获取与所述处理所述第二待处理任务对应的任务元数据;
根据所述任务元数据调用所述第二系统执行所述第二待处理任务。
5.根据权利要求1所述的方法,其特征在于,所述根据所述任务索引数据调用所述第二系统执行所述第二待处理任务之后,还包括:
判断所述第二待处理任务是否执行成功;
若是,则对所述第二待处理任务的任务元数据中记录的任务状态进行更新;
若否,则重新调用所述第二系统执行所述第二待处理任务。
6.根据权利要求5所述的方法,其特征在于,所述若否,则重新调用所述第二系统执行所述第二待处理任务之后,还包括:
判断所述第二待处理任务执行失败的次数是否超过预设的阈值;
若是,则提示用户对所述第二待处理任务进行人工处理;
若否,则返回执行所述重新调用所述第二系统执行所述第二待处理任务的步骤。
7.根据权利要求1-6任一项所述的方法,其特征在于,还包括:
按照预设的时间周期扫描是否存在超过预设时间阈值未处理的所述第二待处理任务;
若是,则根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识;
若是,则调用所述第二系统执行所述第二待处理任务;
若否,则丢弃所述第二待处理任务。
8.一种分布式任务处理装置,其特征在于,包括:
第一接收模块,用于接收第一系统发送的第二系统的第二待处理任务,所述第二待处理任务中包括预设的任务标识,所述预设的任务标识为当前全部系统中全部待处理任务信息的标识;
生成模块,用于根据所述第二待处理任务生成与所述第二待处理任务对应的任务索引数据,将所述任务索引数据发送至所述第一系统;
第二接收模块,用于接收所述第一系统在成功执行本地事务之后发送的所述任务索引数据;
调用模块,用于根据所述任务索引数据调用所述第二系统执行所述第二待处理任务。
9.根据权利要求8所述的装置,其特征在于,所述预设的事务标识为所述第一系统确定当前全部系统中全部待处理任务之后,根据预设的编号规则生成的。
10.根据权利要求8所述的装置,其特征在于,所述第二接收模块包括:
接收单元,用于接收所述第一系统在成功执行所述第一系统中的第一待处理任务,并将所述事务标识写入所述第一系统对应的本地数据库中之后发送的所述任务索引数据。
11.根据权利要求8所述的装置,其特征在于,所述任务索引数据包括处理所述第二待处理任务对应的任务元数据的存储路径;
相应地,所述调用模块包括:
扫描单元,用于扫描所述任务索引数据,获取与所述处理所述第二待处理任务对应的任务元数据;
调用单元,用于根据所述任务元数据调用所述第二系统执行所述第二待处理任务。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一判断模块,用于判断所述第二待处理任务是否执行成功;
第一处理模块,用于若是,则对所述第二待处理任务的任务元数据中记录的任务状态进行更新;
第二处理模块,用于若否,则重新调用所述第二系统执行所述第二待处理任务。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于判断所述第二待处理任务执行失败的次数是否超过预设的阈值;
第三处理模块,用于若是,则提示用户对所述第二待处理任务进行人工处理;
第四处理模块,用于若否,则返回执行所述重新调用所述第二系统执行所述第二待处理任务的步骤。
14.根据权利要求8-13任一项所述的装置,其特征在于,还包括:
扫描模块,用于按照预设的时间周期扫描是否存在超过预设时间阈值未处理的所述第二待处理任务;
查询模块,用于若是,则根据所述第二待处理任务中的事务标识,确定所述第一系统对应的本地数据库中是否预存有所述事务标识;
第五处理模块,用于若是,则调用所述第二系统执行所述第二待处理任务;
第六处理模块,用于若否,则丢弃所述第二待处理任务。
15.一种分布式任务处理设备,其特征在于,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为由所述处理器执行如权利要求1-7任一项所述的分布式任务处理方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的分布式任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149054.7A CN111625323A (zh) | 2019-02-28 | 2019-02-28 | 分布式任务处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149054.7A CN111625323A (zh) | 2019-02-28 | 2019-02-28 | 分布式任务处理方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625323A true CN111625323A (zh) | 2020-09-04 |
Family
ID=72271646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910149054.7A Pending CN111625323A (zh) | 2019-02-28 | 2019-02-28 | 分布式任务处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625323A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065054A (zh) * | 2021-03-31 | 2021-07-02 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
CN113448788A (zh) * | 2021-06-29 | 2021-09-28 | 平安证券股份有限公司 | 基于测试的业务处理方法、装置、电子设备及存储介质 |
-
2019
- 2019-02-28 CN CN201910149054.7A patent/CN111625323A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065054A (zh) * | 2021-03-31 | 2021-07-02 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
CN113065054B (zh) * | 2021-03-31 | 2024-03-01 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
CN113448788A (zh) * | 2021-06-29 | 2021-09-28 | 平安证券股份有限公司 | 基于测试的业务处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111277639A (zh) | 一种保持数据一致性的方法和装置 | |
CN110661662B (zh) | 一种轻量级的微服务配置方法 | |
WO2016177130A1 (zh) | 通讯节点的选择方法及装置 | |
CN108509523A (zh) | 区块链数据的结构化处理方法、设备及可读存储介质 | |
CN101771723A (zh) | 数据同步方法 | |
CN103488526A (zh) | 在分布式系统中锁定业务资源的系统和方法 | |
CN110971702A (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN111625323A (zh) | 分布式任务处理方法、装置、设备及计算机可读存储介质 | |
CN107688489B (zh) | 一种调度任务的方法和系统 | |
CN110990076A (zh) | 一种基于责任链模式实现的热插拔组件链调用方法 | |
CN103731465A (zh) | 分布式系统及其事务处理方法 | |
CN111585913A (zh) | 基于回收令牌的服务流量限制方法及存储介质 | |
CN110134503A (zh) | 一种集群环境下的定时任务处理方法、装置及存储介质 | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
US20150286496A1 (en) | Systems and methods for enlisting single phase commit resources in a two phase commit transaction | |
CN101778131A (zh) | 数据同步系统 | |
CN114153927A (zh) | 用户关系链存储方法、装置、系统、电子设备及存储介质 | |
CN111143041B (zh) | 一种数据一致性方法、分布式协调器及中央协调器 | |
CN101789963A (zh) | 数据同步系统 | |
CN109491767A (zh) | 分布式事务的处理方法和分布式系统 | |
WO2022206426A1 (zh) | 一种分布式事务处理方法、系统及相关设备 | |
CN112671636B (zh) | 群组消息推送方法、装置、计算机设备和存储介质 | |
CN115544034A (zh) | 一种数据一致性方法及业务系统 | |
CN114780177A (zh) | 事务执行方法及装置、存储介质及电子装置 | |
CN114610413A (zh) | 基于Java的同异步任务的执行方法、装置、设备及存储介质 |
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 |