CN115437766A - 一种任务处理方法和装置 - Google Patents
一种任务处理方法和装置 Download PDFInfo
- Publication number
- CN115437766A CN115437766A CN202211069769.XA CN202211069769A CN115437766A CN 115437766 A CN115437766 A CN 115437766A CN 202211069769 A CN202211069769 A CN 202211069769A CN 115437766 A CN115437766 A CN 115437766A
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- processing
- thread
- equipment
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种任务处理方法和装置,涉及数据处理及网络安全领域。该方法的一具体实施方式包括:接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理任务的线程,以获取线程的执行代码;在执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得线程不新增处理任务,并继续连接数据库处理任务;监控线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开线程与数据库的连接并释放分布式锁,以执行对设备的停机操作。该实施方式在任务不同阶段均可实现优雅停机,使得线程尽可能的将任务处理完毕,尽量减少处于中间态的情况。
Description
技术领域
本发明涉及数据处理及网络安全领域,尤其涉及一种任务处理方法和装置。
背景技术
全球IT市场正在发生巨大的变化,云计算、大数据、物联网、人工智能等新技术正在改写游戏规则。主机一直以其高可用性、高吞吐率而备受各大机构的青睐,但主机设备依赖单一,不利于自主可用,核心业务量快速增长,面临着日益严峻的挑战。
随着分布式架构的崛起,各大机构都在积极探索主机下移(即从主机单体架构下移到分布式微服务开放架构)的解决方案。为此亟需设计一套适用于分布式架构的批处理框架来支持原先主机的批处理功能,批处理框架并行计算中的高频调度装置负责银行批量拆单笔业务的拆解、分发、执行、汇总等功能。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:1、在处理任务的过程中,遇到设备正常停机时无法完成优雅停机,设备正常启动后无法完成断点续跑;其中,优雅停机指在停机时需要做好断后工作。2、在遇到硬件故障异常中断时,无法完成接管和自我恢复,也无法完成断点续跑。3、缺少状态异常任务的应急干预手段,。
发明内容
有鉴于此,本发明实施例提供一种任务处理方法和装置,至少能够解决现有技术中设备处理任务过程中无法优雅停机,正常启动时无法断点续跑、以及宕机时缺少应急干预手段的现象。
为实现上述目的,根据本发明实施例的一个方面,提供了一种任务处理方法,包括:
接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的线程,以获取所述线程的执行代码;
在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得所述线程不新增处理任务,并继续连接所述数据库处理所述任务;
监控所述线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
可选的,所述预设等待时长通过预设停机等待次数和预设停机等待时间间隔确定,所述监控所述线程的执行状态,包括:
基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点;
响应于达到第一个监控时间点,获取所述任务当前的执行状态,若执行状态为执行完成则停止,否则继续监控直至执行状态为执行完成或达到最后一个监控时间点停止;
在获取到所述任务的执行状态为执行完成的情况下,确定所述线程执行完成;或
在最后一个监控时间点获取到所述任务的执行状态为执行中的情况下,确定所述线程在达到所述预设等待时长时未执行完成。
可选的,所述基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点,包括:
以当前时间点为起点、与第一个停机等待次数对应的第一预设停机等待时间间隔为步长,创建第一个监控时间点;
以所述第一个监控时间点为起点、与第二个停机等待次数对应的第二预设停机等待时间间隔为步长,创建第二个监控时间点;
重复上述确定起点和步长操作,得到所述预设停机等待次数个监控时间点。
可选的,所述全局控制开关为全局分发控制开关,所述全局分发控制开关用以控制任务的分发;
所述线程为巡检线程,用以将任务从高频调度装置分发到中间件。
可选的,所述全局控制开关为全局消费控制开关,所述全局消费控制开关用以控制中间件中任务的消费;
所述线程为消息消费线程,用以消费所述中间件中的任务。
可选的,在所述执行对所述设备的停机操作之后,还包括:
接收对设备的重启指令,调用启动检查器,以加载设备停机前执行状态为执行中的任务;其中,所述启动检查器仅在设备启动时执行且只执行一次;
确定所述任务当前所处节点,调用与所述节点对应的重启处理程序,以对所述任务进行再处理,在处理完毕后将所述任务的执行状态更新为执行完成。
可选的,在所述接收对设备的重启指令之后,还包括:
将所述执行代码中的所述优雅停机标志设置为第二预设值,以及将所述全局控制开关设置为开启状态。
可选的,所述任务包括预处理执行中的主任务、处理执行中的子任务、后处理执行中的主任务中的至少一种,主任务被拆分为多个子任务;
所述调用与所述节点对应的重启处理程序,以对所述任务进行再处理,包括:
对于预处理执行中的主任务,做重处理操作,以重新读取所述主任务中的内容并覆盖写入数据库中;
对于处理执行中的子任务,确定断点并续跑;
对于后处理执行中的主任务,做重处理操作,以基于对应的多个子任务的执行状态,重新生成成功失败清单文件。
可选的,所述对于处理中的子任务,确定断点并续跑,包括:
获取对所述子任务的处理流水,确定所述流水的流水号,发送流水号查询报文给下游系统,以接收下游系统返回的所述流水的执行状态报文;
响应于所述执行状态报文为成功或失败,则将成功或失败写入数据库中;或
响应于所述执行状态报文为未找到所述流水号,则确定在设备关机之前未向下游系统发出对所述子任务的处理请求报文,重新发送对所述子任务的处理请求报文给下游系统,使得下游系统处理所述子任务。
可选的,高频调度装置中配置多个设备,每个设备用于处理任务,所述方法还包括:
对于异常宕机设备,若在预设时长内未成功虚拟出与所述异常宕机设备同IP地址的虚拟设备,则确定所述异常宕机设备在异常宕机时执行状态为执行中的任务;
触发应急命令,将所述执行状态为执行中的任务,推送给高频调度装置剩余设备中的任一个设备进行处理。
为实现上述目的,根据本发明实施例的另一方面,提供了一种任务处理装置,包括:
接收模块,用于接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的线程,以获取所述线程的执行代码;
处理模块,用于在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得所述线程不新增处理任务,并继续连接所述数据库处理所述任务;
监控模块,用于监控所述线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
可选的,所述预设等待时长通过预设停机等待次数和预设停机等待时间间隔确定,所述监控模块,用于:
基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点;
响应于达到第一个监控时间点,获取所述任务当前的执行状态,若执行状态为执行完成则停止,否则继续监控直至执行状态为执行完成或达到最后一个监控时间点停止;
在获取到所述任务的执行状态为执行完成的情况下,确定所述线程执行完成;或
在最后一个监控时间点获取到所述任务的执行状态为执行中的情况下,确定所述线程在达到所述预设等待时长时未执行完成。
可选的,所述监控模块,用于:
以当前时间点为起点、与第一个停机等待次数对应的第一预设停机等待时间间隔为步长,创建第一个监控时间点;
以所述第一个监控时间点为起点、与第二个停机等待次数对应的第二预设停机等待时间间隔为步长,创建第二个监控时间点;
重复上述确定起点和步长操作,得到所述预设停机等待次数个监控时间点。
可选的,所述全局控制开关为全局分发控制开关,所述全局分发控制开关用以控制任务的分发;
所述线程为巡检线程,用以将任务从高频调度装置分发到中间件。
可选的,所述全局控制开关为全局消费控制开关,所述全局消费控制开关用以控制中间件中任务的消费;
所述线程为消息消费线程,用以消费所述中间件中的任务。
可选的,还包括重启模块,用于:
接收对设备的重启指令,调用启动检查器,以加载设备停机前执行状态为执行中的任务;其中,所述启动检查器仅在设备启动时执行且只执行一次;
确定所述任务当前所处节点,调用与所述节点对应的重启处理程序,以对所述任务进行再处理,在处理完毕后将所述任务的执行状态更新为执行完成。
可选的,所述重启模块,还用于:
将所述执行代码中的所述优雅停机标志设置为第二预设值,以及将所述全局控制开关设置为开启状态。
可选的,所述任务包括预处理执行中的主任务、处理执行中的子任务、后处理执行中的主任务中的至少一种,主任务被拆分为多个子任务;
所述重启模块,用于:
对于预处理执行中的主任务,做重处理操作,以重新读取所述主任务中的内容并覆盖写入数据库中;
对于处理执行中的子任务,确定断点并续跑;
对于后处理执行中的主任务,做重处理操作,以基于对应的多个子任务的执行状态,重新生成成功失败清单文件。
可选的,所述重启模块,用于:
获取对所述子任务的处理流水,确定所述流水的流水号,发送流水号查询报文给下游系统,以接收下游系统返回的所述流水的执行状态报文;
响应于所述执行状态报文为成功或失败,则将成功或失败写入数据库中;或
响应于所述执行状态报文为未找到所述流水号,则确定在设备关机之前未向下游系统发出对所述子任务的处理请求报文,重新发送对所述子任务的处理请求报文给下游系统,使得下游系统处理所述子任务。
可选的,高频调度装置中配置多个设备,每个设备用于处理任务,所述装置还包括异常处理模块,用于:
对于异常宕机设备,若在预设时长内未成功虚拟出与所述异常宕机设备同IP地址的虚拟设备,则确定所述异常宕机设备在异常宕机时执行状态为执行中的任务;
触发应急命令,将所述执行状态为执行中的任务,推送给高频调度装置剩余设备中的任一个设备进行处理。
为实现上述目的,根据本发明实施例的再一方面,提供了一种任务处理电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的任务处理方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的任务处理方法。
为实现上述目的,根据本发明实施例的又一个方面,提供了一种计算程序产品。本发明实施例的一种计算程序产品,包括计算机程序,所述程序被处理器执行时实现本发明实施例提供的任务处理方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:针对高频调度装置中的任一设备,在正常停机时设置优雅停机机制,使得设备中的线程尽可能执行完任务,并设置断点续跑机制,以加载设备停机前未处理完成的任务并执行;设置任务接管机制和自我恢复机制,以保证被故障设备锁定的任务由高频调度装置中的剩余设备处理。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种任务处理方法的主要流程示意图;
图2是根据本发明实施例的一种应用于任务分发方法流程示意图;
图3是根据本发明实施例的一种应用于任务消费方法流程示意图;
图4是根据本发明实施例的一种可选的任务处理方法的流程示意图;
图5是根据本发明实施例的另一种可选的任务处理方法的流程示意图;
图6是根据本发明实施例的一种任务处理装置的主要模块示意图;
图7是本发明实施例可以设备于其中的示例性系统架构图;
图8是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明中的实施例以及实施例中的特征可以互相组合。本申请技术方案中对数据(如用户个人信息)的获取、存储、使用、处理等均符合国家法律法规的相关规定,且不违背公序良俗。
高频调度装置负责核心银行系统批量拆单笔业务的拆解、分发、执行、汇总等功能,需要支撑核心银行系统如批量代收代付、客户信息拆分归并、入账等业务一天约2000-3000万笔的处理能力,其中发起的批量主任务约4-5万批次,不乏一些大批量的批拆单任务,往往一个主任务有多达10万笔子任务需要处理,高频调度装置应运而生,用于快速执行完批处理任务。
高频调度装置中的处理框架将批量拆单笔任务分为3个阶段,分别为主任务预处理、子任务执行处理、主任务后处理。主任务预处理阶段负责将主任务拆分成单笔子任务,子任务执行处理负责执行单笔联机交易,主任务后处理负责将子任务执行状况汇总成报表或进行其他需要的处理。
高频调度装置通过定时巡检器巡检各主任务、子任务的状态,以进行批处理任务的分发、调度。定时巡检器包括主任务预处理巡检器、子任务执行完成巡检器和主任务后处理巡检器。1)主任务预处理巡检器,用以筛选出符合条件的主任务分发进入预处理阶段;2)子任务执行完成巡检器,用以统计某一主任务下各个子任务的执行情况,执行完成的主任务分发进入后处理阶段;3)主任务后处理巡检器,用以筛选出符合条件的主任务分发进入后处理阶段。
高频调度装置通过上述定时巡检器完成各个阶段的任务调度流转,考虑一个主任务有时会有多达上万笔的交易需要处理,一个任务的处理时间需要在1小时左右,因而在设备停机场景下,或在设备物理宕机等异常场景下,保证任务的断点续跑和自我恢复显得尤为重要。
基于上述问题,需要高频调度装置设计和实现:在设备正常停机是具备优雅停机机制,在设备重启过程中具备断点续跑机制,在设备故障场景下具备任务接管机制和自我恢复机制。
参见图1,示出的是本发明实施例提供的一种任务处理方法的主要流程图,包括如下步骤:
S101:接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的线程,以获取所述线程的执行代码;
S102:在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得所述线程不新增处理任务,并继续连接所述数据库处理所述任务;
S103:监控所述线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
上述实施方式中,对于步骤S101~S103,高频调度装置下配置多个设备,这些设备并行处理任务,例如配置10个设备,这10个设备处理核心银行系统的上万个任务。根据前述高频调度装置的特点,在各个阶段、各个状态下,设备停机或异常宕机所造成的影响,参加表1所示:
表1分析表
设备接收到的停机指令,可以是设备异常宕机时人工停机、或者设备调试时的人工停机。使用spring bean的destroy机制,在正常停机bean被销毁前,完成正在处理的任务。高频调度装置的消息机制分为分发和消费两部分,在分发阶段为巡检分发任务,此处的巡检分发任务为主任务预处理巡检器、子任务执行完成巡检器、主任务后处理巡检器等正在执行的巡检线程巡检到任务后分发任务的动作。在消费阶段指从高吞吐量分布式发布订阅消息系统kafka中消费任务。
消息分发和消费两部分的优雅停机机制类似,任务均由线程处理,任务的执行状态分doing执行中、done执行完成两种,此处做统一描述:
1、为确保在设备停机时线程能正常完成正在处理的任务,首先在线程的执行代码中添加依赖dataSource数据库和redissonClient redis分布式锁的代码,如在代码段的头部添加@DependsOn(“dataSouce”,”redissonClient”)。其中,redis为基于内存的高性能key-value数据库,redission为一种基于redis的Java客户端。
1)由于线程需要使用SQL(Structured Query Language,结构化查询语言)语句从dataSource数据库中读取数据,因此本方案优选在线程结束后再销毁线程与数据库的连接。2)由于线程结束后需释放redis分布式锁,如果提前销毁将无法释放redis分布式锁。通过加入上述依赖代码,可以避免redis和datasource数据库这两个中间件在线程结束前销毁导致程序报错的问题。
2、线程的执行代码中设置了优雅停机标志POLITE_HALT_FLAG为TRUE和全局控制开关标志,全局控制开关分为两种:全局分发控制开关PRODUCT_WHOLE_SW和全局消费控制开关CONSUMER_WHOLE_SW。
将POLITE_HALT_FLAG设置为TRUE(即第一预设值)后,线程不会新增处理任务,即不会有新的任务开始处理,确保开始停机流程后只处理留存任务。其代码形式如POLITE_HALT_FLAG=Boolean.TRUE。将全局控制开关标志设置为关闭状态,则不执行新任务的处理(设备启动时也可暂停消息的处理,但此种情况本方案暂不考虑)。以消息分发为例,其代码形式如:
HftFlowLimitBaseParam.getBaseMap().get(HftFlowLimitBaseParam.PRODUCT_WHOLE_SW).setSwitchOnOff(true)。
3、获取任务当前的执行状态runprogress变量,根据任务执行状态确定线程是否完成。若执行状态为执行完成,则正常结束设备,但若在达到预设等待时长时执行状态仍为执行中,则强制结束,避免因为程序错误原因导致设备无法正常结束的情况。
预设等待时长由停机等待次数hft.stop.wait.times和停机等待时间间隔hft.stop.wait.delayunittm(单位毫秒)确定,这两个参数可根据实际调整。例如hft.stop.wait.times=3、hft.stop.wait.delayunittm=5000,表示间隔5秒、10秒、15秒分别检测线程是否完成,整体呈等差形式。假设当前时间为17:00:00,则得到17:00:05、17:00:15、17:00:30三个监控时间点,若第一个监控时间点17:00:05任务仍处于执行中则需继续监控,若在第二个监控时间点监控到任务执行完成,则表示该线程执行完成,正常结束设备,但若在第二个监控时间点监控到任务仍处于执行中则需继续监控,若最后一个监控时间点17:00:30任务仍为执行中,则需强制结束设备,表明超过30秒时间任务还未处理完无需继续等待。
上述实施例所提供的方法,优雅停机的作用是使得线程尽可能的将任务处理完毕,而非处于中间态,本方案针对高频调度装置设置优雅停机机制,在任务的不同阶段均可实现优雅停机,操作简便快捷。
参见图2,示出了根据本发明实施例的一种应用于任务分发方法流程示意图,包括如下步骤:
S201:接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的巡检线程,以获取所述巡检线程的执行代码;其中,巡检线程用以将任务从高频调度装置分发到中间件;
S202:在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局分发控制开关设置为关闭状态,使得所述巡检线程不新增处理任务,并继续连接所述数据库处理所述任务;其中,全局分发控制开关用以控制任务的分发;
S203:监控所述巡检线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述巡检线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
上述实施方式中,对于步骤S201~S203,高频调度装置的巡检任务分发通过kafka实现,本实施方式主要描述巡检任务分发的优雅停机机制。参数详情:
优雅停机标志POLITE_HALT_FLAG
全局分发控制开关PRODUCT_WHOLE_SW
停机等待次数hft.stop.wait.times
停机等待时间间隔hft.stop.wait.delayunittm(单位毫秒)
任务执行状态runprogress(doing巡检执行中;done巡检执行完成)
巡检分发负责将任务从高频调度装置分发到中间件kafka,以上参数配置用于设置消息分发的优雅停机监控时间,具体逻辑参见图1所示,巡检线程执行完成后即可结束设备,对于超过预设等待时长未结束的,只能强制结束,巡检线程强制结束也不会造成功能问题。设备停机时巡检器、kafka会依次停机,设备重启后巡检器、kafka会依次启动其原有的功能,且将优雅停机标志POLITE_HALT_FLAG设置为FALSE(即第二预设值),将全局分发控制开关默认为开通状态。
参见图3,示出了根据本发明实施例的一种应用于任务消费方法流程示意图,包括如下步骤:
S301:接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的消费线程,以获取所述消费线程的执行代码;其中,消费线程用以消费中间件中的任务;
S302:在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局消费控制开关设置为关闭状态,使得所述消费线程不新增处理任务,并继续连接所述数据库处理所述任务;其中,全局消费发控制开关用以控制中间件中任务的消费;
S303:监控所述消费线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述消费线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
上述实施方式中,对于步骤S301~S303,本实施方式主要描述消息消费的优雅停机机制,参数详情:
优雅停机标志POLITE_HALT_FLAG
全局消费控制开关CONSUMER_WHOLE_SW
停机等待次数hft.consumerstop.wait.times
停机等待时间间隔hft.stop.wait.delayunittm(单位毫秒)
消费线程用于消费中间件kafka中的任务。以上参数配置用于设置消息消费的优雅停机监控时间,具体逻辑参见图1所示,消费线程执行完成后即可结束设备,对于超过预设等待时长未结束的,只能强制结束。设备停机时巡检器、kafka会依次停机,设备重启后巡检器、kafka会依次启动其原有的功能,且将优雅停机标志POLITE_HALT_FLAG设置为FALSE(即第二预设值),将全局消费控制开关默认为开通状态。
参见图4,示出了根据本发明实施例的一种可选的任务处理流程示意图,包括如下步骤:
S401:接收对设备的重启指令,调用启动检查器,以加载设备停机前执行状态为执行中的任务;其中,所述启动检查器仅在设备启动时执行且只执行一次;
S402:确定所述任务当前所处节点,调用与所述节点对应的重启处理程序,以对所述任务进行再处理,在处理完毕后将所述任务的执行状态更新为执行完成。
上述实施方式中,对于步骤S401~S402,本实施方式的设备重启通过人为重启,如设备强制停机后的人为重启、设备异常宕机后的人为重启。不同于消息分发的强制结束,消息消费强制结束可能导致任务处理处于中间态,对于这些在设备停机时仍未处理完成的任务,本方案设计有启动检查器,以在设备重启时检查这些处于中间态的任务,并实现断点续跑。启动检查器在设备启动时执行且只执行一次,操作代码如下:
*开机启动加载设备停机前未处理完成的任务
*@author yuanqianghong
*/
@Component("startingLoadTaskExecutor")
本方案针对每个阶段设计一个对应的状态代码,高频调度装置的主任务、子任务状态表的状态与状态代码参见表2、表3所示:
表2高频主任务状态表
状态 | 状态代码 |
未开始 | 0 |
主任务预处理中 | 10 |
预处理完成 | 11 |
子任务处理中 | 20 |
子任务处理完成 | 21 |
主任务后处理中 | 30 |
完成 | 40 |
表3高频子任务状态表
状态 | 状态代码 |
未开始 | 0 |
子任务处理中 | 20 |
完成 | 40 |
筛选出处于主任务预处理执行中10、子任务执行中20和主任务后处理执行中30这三个节点的任务,对处于不同节点的任务分别做处理:
1、对于预处理执行中10的任务,此处为主任务,需重新处理,重新读取文件内容并覆盖写入dataSource数据库。例如文件有100行内容,设备停机时由于各种原因只读取了40行并写入了数据库,即数据库中此时有40行数据,在设备重启后需从头开始读取这100行内容并写入数据库,写入数据库的前40行内容覆盖原有40行数据,后60行内容追加写入数据库子任务表。
2、对于未处理完成中的子任务20,需确保断点续跑,以避免重复处理情况。子任务需联机下游系统处理,执行耗时短(100ms左右),理想情况下在设备停机前子任务已处理完成。但异常宕机或强制停机情况下,可能存在20状态的子任务,这个状态下有多种可能,1)下游系统已处理该子任务,但并未将处理结果回传给高频调度装置,或者其他原因导致高频调度装置未获取到处理结果,2)还未将子任务发给下游系统处理设备就已经关机。因此重启设备后,需对20状态的子任务做特殊处理:
1)获取对该子任务的处理流水,确定该流水的流水号,生成流水号查询报文;
2)将流水号查询报文发送至下游系统(即联机交易系统、或称为子任务处理系统),以查询此笔流水的执行状态;
3)接收下游系统返回的执行状态报文,若返回的报文是succes或failure报文,则将其写入数据库,数据库中至少存储“主任务-子任务-执行流水号-执行状态-执行结果”;但若返回报文是“未找到该流水号”,则表示高频调度装置未向下游系统发出对该子任务的处理请求报文,需重新发起该笔报文,确保该子任务被下游系统处理,对子任务的执行类型参见表4所示:
表4
执行类型 | 代码值 |
并行 | 1 |
串行 | 2 |
按分组串行 | 3 |
串、并行混合 | 4 |
3、对于后处理执行中30的主任务:后处理是生成成功失败任务清单的过程,因此可以从头开始处理,重新生成文件。当主任务执行结束后,将其执行状态更新为执行完成。
上述实施例所提供的方法,设置断点续跑机制和启动检查器,以在设备启动后加载设备关机前未处理完成的任务,并按照所处节点处理,实现断点续跑。
参见图5,示出了根据本发明实施例的另一种可选的任务处理方法流程示意图,包括如下步骤:
S501:对于异常宕机设备,若在预设时长内未成功虚拟出与所述异常宕机设备同IP地址的虚拟设备,则确定所述异常宕机设备在异常宕机时执行状态为执行中的任务;
S502:触发应急命令,将所述执行状态为执行中的任务,推送给高频调度装置剩余设备中的任一个设备进行处理。
上述实施方式中,对于步骤S501~S502,宕机情况通常由于物理宕机故障、网络故障、断电、断网等异常导致的设备中断。由于异常宕机时无法经过前述设备正常停机流程,因此需对设备正常停机时未遇到的场景进行兜底处理,同样使用前述图4所示启动检查器,以处理处于10、20和30状态的任务。
设备异常宕机时,通常会虚拟出一个同IP地址的虚拟设备,使用虚拟设备处理该宕机设备未处理完成的任务。但若在预设时长(如10分钟)内未能成功虚拟出该虚拟设备,被该宕机设备锁定的任务则长时间无法得到处理。为避免出现该种情况,本方案设计了应急命令,以在这种场景下人工介入,使得其余设备可以接管处理这些任务。
应急命令为:Sh manage.sh hft–pushm宕机设备的IP地址,用于将宕机设备锁定的任务推送给剩余正常的任一设备执行,以此避免任务长时间未得到处理的情况。
上述实施例所提供的方法,提供应急手段,以在极端异常场景下恢复对任务的处理能力,具体将宕机设备锁定的任务由剩余正常设备处理。
参见图6,示出了本发明实施例提供的一种任务处理装置600的主要模块示意图,包括:
接收模块601,用于接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的线程,以获取所述线程的执行代码;
处理模块602,用于在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得所述线程不新增处理任务,并继续连接所述数据库处理所述任务;
监控模块603,用于监控所述线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
本发明实施装置中,所述预设等待时长通过预设停机等待次数和预设停机等待时间间隔确定,所述监控模块603,用于:
基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点;
响应于达到第一个监控时间点,获取所述任务当前的执行状态,若执行状态为执行完成则停止,否则继续监控直至执行状态为执行完成或达到最后一个监控时间点停止;
在获取到所述任务的执行状态为执行完成的情况下,确定所述线程执行完成;或
在最后一个监控时间点获取到所述任务的执行状态为执行中的情况下,确定所述线程在达到所述预设等待时长时未执行完成。
本发明实施装置中,所述监控模块603,用于:
以当前时间点为起点、与第一个停机等待次数对应的第一预设停机等待时间间隔为步长,创建第一个监控时间点;
以所述第一个监控时间点为起点、与第二个停机等待次数对应的第二预设停机等待时间间隔为步长,创建第二个监控时间点;
重复上述确定起点和步长操作,得到所述预设停机等待次数个监控时间点。
本发明实施装置中,所述全局控制开关为全局分发控制开关,所述全局分发控制开关用以控制任务的分发;
所述线程为巡检线程,用以将任务从高频调度装置分发到中间件。
本发明实施装置中,所述全局控制开关为全局消费控制开关,所述全局消费控制开关用以控制中间件中任务的消费;
所述线程为消息消费线程,用以消费所述中间件中的任务。
本发明实施装置还包括重启模块,用于:
接收对设备的重启指令,调用启动检查器,以加载设备停机前执行状态为执行中的任务;其中,所述启动检查器仅在设备启动时执行且只执行一次;
确定所述任务当前所处节点,调用与所述节点对应的重启处理程序,以对所述任务进行再处理,在处理完毕后将所述任务的执行状态更新为执行完成。
本发明实施装置中,所述重启模块,还用于:
将所述执行代码中的所述优雅停机标志设置为第二预设值,以及将所述全局控制开关设置为开启状态。
本发明实施装置中,所述任务包括预处理执行中的主任务、处理执行中的子任务、后处理执行中的主任务中的至少一种,主任务被拆分为多个子任务;
所述重启模块,用于:
对于预处理执行中的主任务,做重处理操作,以重新读取所述主任务中的内容并覆盖写入数据库中;
对于处理执行中的子任务,确定断点并续跑;
对于后处理执行中的主任务,做重处理操作,以基于对应的多个子任务的执行状态,重新生成成功失败清单文件。
本发明实施装置中,所述重启模块,用于:
获取对所述子任务的处理流水,确定所述流水的流水号,发送流水号查询报文给下游系统,以接收下游系统返回的所述流水的执行状态报文;
响应于所述执行状态报文为成功或失败,则将成功或失败写入数据库中;或
响应于所述执行状态报文为未找到所述流水号,则确定在设备关机之前未向下游系统发出对所述子任务的处理请求报文,重新发送对所述子任务的处理请求报文给下游系统,使得下游系统处理所述子任务。
本发明实施装置中,高频调度装置中配置多个设备,每个设备用于处理任务,所述装置还包括异常处理模块,用于:
对于异常宕机设备,若在预设时长内未成功虚拟出与所述异常宕机设备同IP地址的虚拟设备,则确定所述异常宕机设备在异常宕机时执行状态为执行中的任务;
触发应急命令,将所述执行状态为执行中的任务,推送给高频调度装置剩余设备中的任一个设备进行处理。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
图7示出了可以设备本发明实施例的示例性系统架构700,包括终端设备701、702、703,网络704和服务器705(仅仅是示例)。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,安装有各种通讯客户端设备,用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。
网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器705可以是提供各种服务的服务器,需要说明的是,本发明实施例所提供的方法一般由服务器705执行,相应地,装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、处理模块、监控模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,监控模块还可以被描述为“监控停机模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行上述任一所述的任务处理方法。
本发明的计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本发明实施例中的任务处理方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (23)
1.一种任务处理方法,其特征在于,包括:
接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的线程,以获取所述线程的执行代码;
在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得所述线程不新增处理任务,并继续连接所述数据库处理所述任务;
监控所述线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
2.根据权利要求1所述的方法,其特征在于,所述预设等待时长通过预设停机等待次数和预设停机等待时间间隔确定,所述监控所述线程的执行状态,包括:
基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点;
响应于达到第一个监控时间点,获取所述任务当前的执行状态,若执行状态为执行完成则停止,否则继续监控直至执行状态为执行完成或达到最后一个监控时间点停止;
在获取到所述任务的执行状态为执行完成的情况下,确定所述线程执行完成;或
在最后一个监控时间点获取到所述任务的执行状态为执行中的情况下,确定所述线程在达到所述预设等待时长时未执行完成。
3.根据权利要求2所述的方法,其特征在于,所述基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点,包括:
以当前时间点为起点、与第一个停机等待次数对应的第一预设停机等待时间间隔为步长,创建第一个监控时间点;
以所述第一个监控时间点为起点、与第二个停机等待次数对应的第二预设停机等待时间间隔为步长,创建第二个监控时间点;
重复上述确定起点和步长操作,得到所述预设停机等待次数个监控时间点。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述全局控制开关为全局分发控制开关,所述全局分发控制开关用以控制任务的分发;
所述线程为巡检线程,用以将任务从高频调度装置分发到中间件。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述全局控制开关为全局消费控制开关,所述全局消费控制开关用以控制中间件中任务的消费;
所述线程为消息消费线程,用以消费所述中间件中的任务。
6.根据权利要求1所述的方法,其特征在于,在所述执行对所述设备的停机操作之后,还包括:
接收对设备的重启指令,调用启动检查器,以加载设备停机前执行状态为执行中的任务;其中,所述启动检查器仅在设备启动时执行且只执行一次;
确定所述任务当前所处节点,调用与所述节点对应的重启处理程序,以对所述任务进行再处理,在处理完毕后将所述任务的执行状态更新为执行完成。
7.根据权利要求6所述的方法,其特征在于,在所述接收对设备的重启指令之后,还包括:
将所述执行代码中的所述优雅停机标志设置为第二预设值,以及将所述全局控制开关设置为开启状态。
8.根据权利要求6或7所述的方法,其特征在于,所述任务包括预处理执行中的主任务、处理执行中的子任务、后处理执行中的主任务中的至少一种,主任务被拆分为多个子任务;
所述调用与所述节点对应的重启处理程序,以对所述任务进行再处理,包括:
对于预处理执行中的主任务,做重处理操作,以重新读取所述主任务中的内容并覆盖写入数据库中;
对于处理执行中的子任务,确定断点并续跑;
对于后处理执行中的主任务,做重处理操作,以基于对应的多个子任务的执行状态,重新生成成功失败清单文件。
9.根据权利要求8所述的方法,其特征在于,所述对于处理中的子任务,确定断点并续跑,包括:
获取对所述子任务的处理流水,确定所述流水的流水号,发送流水号查询报文给下游系统,以接收下游系统返回的所述流水的执行状态报文;
响应于所述执行状态报文为成功或失败,则将成功或失败写入数据库中;或
响应于所述执行状态报文为未找到所述流水号,则确定在设备关机之前未向下游系统发出对所述子任务的处理请求报文,重新发送对所述子任务的处理请求报文给下游系统,使得下游系统处理所述子任务。
10.根据权利要求1所述的方法,其特征在于,高频调度装置中配置多个设备,每个设备用于处理任务,所述方法还包括:
对于异常宕机设备,若在预设时长内未成功虚拟出与所述异常宕机设备同IP地址的虚拟设备,则确定所述异常宕机设备在异常宕机时执行状态为执行中的任务;
触发应急命令,将所述执行状态为执行中的任务,推送给高频调度装置剩余设备中的任一个设备进行处理。
11.一种任务处理装置,其特征在于,包括:
接收模块,用于接收对设备的停机指令,确定当前执行状态为执行中的任务,查询处理所述任务的线程,以获取所述线程的执行代码;
处理模块,用于在所述执行代码中添加对数据库和分布式锁的依赖代码,将优雅停机标志设置为第一预设值以及将全局控制开关设置为关闭状态,使得所述线程不新增处理任务,并继续连接所述数据库处理所述任务;
监控模块,用于监控所述线程的执行状态,响应于执行状态为执行完成、或在达到预设等待时长时执行状态为未完成,断开所述线程与所述数据库的连接并释放分布式锁,以执行对所述设备的停机操作。
12.根据权利要求11所述的装置,其特征在于,所述预设等待时长通过预设停机等待次数和预设停机等待时间间隔确定,所述监控模块,用于:
基于预设停机等待次数、预设停机等待时间间隔和当前时间点,创建多个监控时间点;
响应于达到第一个监控时间点,获取所述任务当前的执行状态,若执行状态为执行完成则停止,否则继续监控直至执行状态为执行完成或达到最后一个监控时间点停止;
在获取到所述任务的执行状态为执行完成的情况下,确定所述线程执行完成;或
在最后一个监控时间点获取到所述任务的执行状态为执行中的情况下,确定所述线程在达到所述预设等待时长时未执行完成。
13.根据权利要求12所述的装置,其特征在于,所述监控模块,用于:
以当前时间点为起点、与第一个停机等待次数对应的第一预设停机等待时间间隔为步长,创建第一个监控时间点;
以所述第一个监控时间点为起点、与第二个停机等待次数对应的第二预设停机等待时间间隔为步长,创建第二个监控时间点;
重复上述确定起点和步长操作,得到所述预设停机等待次数个监控时间点。
14.根据权利要求11-13中任一项所述的装置,其特征在于,所述全局控制开关为全局分发控制开关,所述全局分发控制开关用以控制任务的分发;
所述线程为巡检线程,用以将任务从高频调度装置分发到中间件。
15.根据权利要求11-13中任一项所述的装置,其特征在于,所述全局控制开关为全局消费控制开关,所述全局消费控制开关用以控制中间件中任务的消费;
所述线程为消息消费线程,用以消费所述中间件中的任务。
16.根据权利要求11所述的装置,其特征在于,还包括重启模块,用于:
接收对设备的重启指令,调用启动检查器,以加载设备停机前执行状态为执行中的任务;其中,所述启动检查器仅在设备启动时执行且只执行一次;
确定所述任务当前所处节点,调用与所述节点对应的重启处理程序,以对所述任务进行再处理,在处理完毕后将所述任务的执行状态更新为执行完成。
17.根据权利要求16所述的装置,其特征在于,所述重启模块,还用于:
将所述执行代码中的所述优雅停机标志设置为第二预设值,以及将所述全局控制开关设置为开启状态。
18.根据权利要求16或17所述的装置,其特征在于,所述任务包括预处理执行中的主任务、处理执行中的子任务、后处理执行中的主任务中的至少一种,主任务被拆分为多个子任务;
所述重启模块,用于:
对于预处理执行中的主任务,做重处理操作,以重新读取所述主任务中的内容并覆盖写入数据库中;
对于处理执行中的子任务,确定断点并续跑;
对于后处理执行中的主任务,做重处理操作,以基于对应的多个子任务的执行状态,重新生成成功失败清单文件。
19.根据权利要求18所述的装置,其特征在于,所述重启模块,用于:
获取对所述子任务的处理流水,确定所述流水的流水号,发送流水号查询报文给下游系统,以接收下游系统返回的所述流水的执行状态报文;
响应于所述执行状态报文为成功或失败,则将成功或失败写入数据库中;或
响应于所述执行状态报文为未找到所述流水号,则确定在设备关机之前未向下游系统发出对所述子任务的处理请求报文,重新发送对所述子任务的处理请求报文给下游系统,使得下游系统处理所述子任务。
20.根据权利要求11所述的装置,其特征在于,高频调度装置中配置多个设备,每个设备用于处理任务,所述装置还包括异常处理模块,用于:
对于异常宕机设备,若在预设时长内未成功虚拟出与所述异常宕机设备同IP地址的虚拟设备,则确定所述异常宕机设备在异常宕机时执行状态为执行中的任务;
触发应急命令,将所述执行状态为执行中的任务,推送给高频调度装置剩余设备中的任一个设备进行处理。
21.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一所述的方法。
22.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-10中任一所述的方法。
23.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211069769.XA CN115437766A (zh) | 2022-09-02 | 2022-09-02 | 一种任务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211069769.XA CN115437766A (zh) | 2022-09-02 | 2022-09-02 | 一种任务处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437766A true CN115437766A (zh) | 2022-12-06 |
Family
ID=84248055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211069769.XA Pending CN115437766A (zh) | 2022-09-02 | 2022-09-02 | 一种任务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437766A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582460A (zh) * | 2023-05-29 | 2023-08-11 | 江苏博云科技股份有限公司 | 一种Kubernetes环境下的自动网络巡检系统 |
-
2022
- 2022-09-02 CN CN202211069769.XA patent/CN115437766A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582460A (zh) * | 2023-05-29 | 2023-08-11 | 江苏博云科技股份有限公司 | 一种Kubernetes环境下的自动网络巡检系统 |
CN116582460B (zh) * | 2023-05-29 | 2024-01-23 | 江苏博云科技股份有限公司 | 一种Kubernetes环境下的自动网络巡检系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113569987A (zh) | 模型训练方法和装置 | |
CN107016480B (zh) | 任务调度方法、装置及系统 | |
US9940598B2 (en) | Apparatus and method for controlling execution workflows | |
CN111400011B (zh) | 一种实时任务调度方法、系统、设备及可读存储介质 | |
US9483314B2 (en) | Systems and methods for fault tolerant batch processing in a virtual environment | |
US8301935B2 (en) | Distributed batch runner | |
CN109871384B (zh) | 基于PaaS平台进行容器迁移的方法、系统、设备和存储介质 | |
CN111538585B (zh) | 一种基于node.js的服务器进程调度方法、系统和装置 | |
CN110225078B (zh) | 一种应用服务更新方法、系统及终端设备 | |
CA2904253C (en) | Computer system using in-service software upgrade | |
CN109710624B (zh) | 数据处理方法、装置、介质及电子设备 | |
CN111209110A (zh) | 一种实现负载均衡的任务调度管理方法、系统和存储介质 | |
WO2015131542A1 (zh) | 数据处理方法、装置和系统 | |
CN110611707A (zh) | 一种任务调度的方法及装置 | |
CN107368324A (zh) | 一种组件升级方法、装置和系统 | |
CN114090198A (zh) | 分布式任务调度方法、装置、电子设备及存储介质 | |
CN115964153A (zh) | 一种异步任务处理方法、装置、设备以及存储介质 | |
CN115437766A (zh) | 一种任务处理方法和装置 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
CN115114247A (zh) | 文件数据处理方法及装置 | |
CN112925648B (zh) | 业务策略的发布方法和装置 | |
CN116319758A (zh) | 数据迁移方法、装置、电子设备及可读存储介质 | |
CN116719623A (zh) | 作业调度方法、作业结果处理方法及其装置 | |
CN111767126A (zh) | 分布式批量处理的系统和方法 | |
US8806500B2 (en) | Dynamically setting the automation behavior of resources |
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 |