CN106802826B - 一种基于线程池的业务处理方法及装置 - Google Patents
一种基于线程池的业务处理方法及装置 Download PDFInfo
- Publication number
- CN106802826B CN106802826B CN201611209613.1A CN201611209613A CN106802826B CN 106802826 B CN106802826 B CN 106802826B CN 201611209613 A CN201611209613 A CN 201611209613A CN 106802826 B CN106802826 B CN 106802826B
- Authority
- CN
- China
- Prior art keywords
- task
- thread pool
- service
- tasks
- processed
- 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.)
- Active
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/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
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于线程池的业务处理方法及装置,用以使线程池处理***处理业务时能够具备优先级功能,包括:接收待处理业务并解析待处理业务为N个任务;N大于等于1;根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;根据任务队列优先级,依次将N个任务放入线程池中。由于任务队列具有优先级,会对优先级较高的业务进行优先处理,此外,任务队列中的任务也具有优先级,使得重要任务能够被优先处理。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于线程池的业务处理方法及装置。
背景技术
如今,随着金融业的蓬勃发展,金融***中无论是实时处理***或是批量处理***面对的数据压力越来越大。而随着数据的爆发式的增长,大部分金融***都已经完成分布式储存数据,相关技术也越来越成熟。业务处理中常常伴随着复杂的数据库操作,为了实现对分布式数据库的管理,提高业务处理效率,线程池是一种非常有效的业务处理机制。
目前,基于线程池业务处理***主要有同步单数据库线程池***和异步多数据线程池***两种。其中,异步多数据线程池***因其不需等待,异步处理等高效率处理特征而被越来越广泛的使用。然而,异步多数据线程池没有权重功能,不能支持优先级的线程处理,使得异步多数据线程池不能优先处理紧急任务和重要任务。
综上所述,目前的线程池处理***在处理业务时不具备优先级功能。
发明内容
本发明提供一种基于线程池的业务处理方法及装置,用以使线程池处理***处理业务时能够具备优先级功能。
本发明实施例提供一种基于线程池的业务处理方法,包括:
接收待处理业务并解析待处理业务为N个任务;N大于等于1;
根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;
根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;
根据任务队列优先级,依次将N个任务放入线程池中。
可选地,配置文件中还包含待处理业务的线程池信息,
根据任务队列优先级,依次将N个任务放入线程池中之前,还包括:
根据所述待处理业务的线程池信息,确定所述线程池中所述待处理业务对的M个线程;
将待处理业务所对应的任务队列中的任务与M个线程关联。
可选地,配置文件中还包含了数据库信息,
根据任务队列优先级,依次将N个任务放入线程池中之前,还包括:
根据数据库信息,将M个线程与数据库信息中记载的数据库相连接。
可选地,任务队列按优先级从高到低共分为先入先出FIFO队列、权重队列、后入先出LIFO队列以及外置队列;
外置队列用于保存关键任务,关键任务为N个任务中的部分或全部;
根据任务队列优先级,依次将N个任务放入线程池中之后,还包括:
针对N个任务中的每一个任务,接收任务的回调信息;
根据回调信息,判断任务是否执行成功;
若任务为执行失败,则确定任务在外置队列中对应的关键任务,并返回执行关键任务。
可选地,线程池为线程池***中的任一个线程池;线程池***中的任一线程池能够获取其它线程池对应的数据库资源;
根据任务队列优先级,依次将N个任务放入线程池中之后,还包括:
根据N个任务的执行情况,判断线程池的执行效率;
若线程池的执行效率低于预设阈值,则从线程池***中获取替代线程池;替代线程池为线程池***中处理速度高于线程池的线程池;
将N个任务中的未处理任务全部或部分调至替代线程池对应的任务队列中。
本发明实施例提供一种基于线程池的业务处理装置,包括:
解析模块,用于接收待处理业务并解析待处理业务为N个任务;N大于等于1;
获取模块,用于根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;
配置模块,用于根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;
调度模块,用于根据任务队列优先级,依次将N个任务放入线程池中。
可选地,配置文件中还包含待处理业务的线程池信息,
配置模块还用于:
根据所述待处理业务的线程池信息,确定所述线程池中所述待处理业务对的M个线程;
将待处理业务所对应的任务队列中的任务与M个线程关联。
可选地,配置文件中还包含了数据库信息,
配置模块还用于根据数据库信息,将M个线程与数据库信息中记载的数据库相连接。
可选地,任务队列按优先级从高到低共分为先入先出FIFO队列、权重队列、后入先出LIFO队列以及外置队列;
外置队列用于保存关键任务,关键任务为N个任务中的部分或全部;
调度模块还用于:
针对N个任务中的每一个任务,接收任务的回调信息;
根据回调信息,判断任务是否执行成功;
若任务为执行失败,则确定任务在外置队列中对应的关键任务,并返回执行关键任务。
可选地,线程池为线程池***中的任一个线程池;线程池***中的任一线程池能够获取其它线程池对应的数据库资源;
调度模块还用于:
根据N个任务的执行情况,判断线程池的执行效率;
若线程池的执行效率低于预设阈值,则从线程池***中获取替代线程池;替代线程池为线程池***中处理速度高于线程池的线程池;
将N个任务中的未处理任务全部或部分调至替代线程池对应的任务队列中。
综上所述,本发明实施例提供了一种基于线程池的业务处理方法及装置,包括:接收待处理业务并解析待处理业务为N个任务;N大于等于1;根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;根据任务队列优先级,依次将N个任务放入线程池中。根据待处理业务的业务类型,将由待处理业务解析来的N个任务放入待处理业务对应的任务队列中,由于任务队列具有优先级,因此在任务调度时,会对优先级较高的业务解析而来的任务进行优先处理,此外,任务队列中的任务也会根据优先级进行排列,使得业务中的重要任务能够被优先处理,所以,采用本发明所述的业务处理方法处理业务,不仅能够按优先级处理业务,还能对业务拆分来的任务也进行优先级处理。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于线程池的业务处理方法流程示意图;
图2为本发明实施例提供的一种业务类型、权重值以及任务队列之间的关系;
图3为本发明实施例提供的一种动态调度示意图;
图4为本发明实施例提供的一种分布式线程池***架构;
图5为本发明实施例提供的一种基于线程池的业务处理装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种基于线程池的业务处理方法流程示意图,如图1所示,包括以下步骤:
S101:接收待处理业务并解析待处理业务为N个任务;N大于等于1;
S102:根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;
S103:根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;
S104:根据任务队列优先级,依次将N个任务放入线程池中。
在步骤S101的具体实施过程中,一般通过一个应用程序编程接口(ApplicationProgramming Interface,API)接收待处理业务,待处理业务由多个任务组合而成,可以被解析为多个任务,对于待处理业务的处理也就是对解析出的多个任务的处理。
在步骤S102的具体实施过程中,每一种业务类型都对应着一个预先设置的配置文件,根据待处理业务的业务类型获取待处理业务对应的配置文件,例如,查询业务对应着配置文件1,交易业务对应着配置文件2,配置文件1和配置文件2都是预先设置的配置文件,当待处理业务为查询业务时,则获取配置文件1,当待处理业务为交易业务时,则获取配置文件2。可选地,线程池中具有多个任务队列,配置文件中包含了待处理业务的任务队列信息,以及待处理业务解析的各任务的任务优先级。例如,查询业务的配置文件为配置文件1,则,配置文件1中记录了查询业务对应的任务队列A,以及,查询业务解析出的各任务的任务优先级,可选地,这里的任务优先级以权重值区分,对于普通任务,其权重值为正,权重值越大,优先级越高,对于重要任务,其权重值为负,权重值越大,优先级越高,通过正负将待处理业务解析出的任务划分为两类,方便后续优先级处理。
在步骤S103的具体实施过程中,待处理业务对应的配置文件中包含了待处理业务解析出的N个任务的优先级,将N个任务放入任务队列时,需根据N个任务各自的优先级信息放入。用来接纳N个任务的任务队列也具有优先级区分,线程池中具有多个任务队列,每个队列间具有不同的优先级,配置文件中记载着待处理业务对应的任务队列信息,也就意味着根据业务类型为待处理业务配置了不同的优先级。例如,配置文件1中记录了查询业务对应的任务队列A,配置文件2中记录了交易业务对应的任务队列B,任务队列B的优先级高于任务队列A,则任务队列B中的任务将会先于任务队列A中的任务被处理,也即,优先处理交易业务解析出的多个任务,而查询业务解析出的多个任务将会在处理完交易业务解析出的多个任务之后才会被处理。对于一个待处理业务解析出的N个任务,也具任务优先级区分,在放置入对于的任务队列时,需按优先级顺序放入,例如,交易业务B解析出了N个任务,在将这N个任务放入任务队列B时,需按照优先级顺序放入以使优先级高的任务可以被优先处理。
可选地,配置文件中还包含待处理业务的线程池信息,根据任务队列优先级,依次将N个任务放入线程池中之前,还包括:根据待处理业务的线程池信息,确定线程池中待处理业务对的M个线程;M个线程用于处理N个任务。在正式处理N个任务之前,还需对处理任务的线程池进行配置。可选地,线程池有可能是一个独立线程池,也可能是隶属于分布式线程池***的一个线程池。可选地,对于一个具有多个线程池的分布式线程池***,可以先遍历每一个线程池的运行状态,选择其中运行速度和资源状况等综合条件最优的线程池作为处理这N个任务的线程池。配置文件中包含了待处理业务的线程池信息,线程池信息记录了处理该待处理业务所需的线程数量M,当确定线程池之后,根据线程池信息从线程池中划分出M个线程,这M个线程将被单独用于处理该待处理业务解析出的任务。例如,线程池中共有1000个线程,交易业务对应的配置文件2中线程池信息为100个线程,则需从线程池中划分出100个线程来处理交易业务,这100个线程即可满***易业务解析出的多个任务的处理需求。根据配置文件中的线程池信息来为待处理业务配置线程,使得配置的线程即可以满足待处理业务的需求,又不会浪费线程池的资源,从而可以提高线程池中的线程利用率,优化线程池的内存规划,提高线程池的处理效率。可选地,根据实际应用需求或经验设置默认线程个数,当配置文件中不包含线程池信息时,按默认个数为待处理业务配置线程池中的线程。
可选地,配置文件中还包含了数据库信息,根据任务队列优先级,依次将N个任务放入线程池中之前,还包括:根据数据库信息,将M个线程与数据库信息中记载的数据库相连接。线程池处理任务需要调度数据库中的数据资源,因此,配置文件中还包含了数据库信息,数据库信息为处理该待处理业务所需的数据库信息,例如,处理交易业务需要调度数据库1和数据库2的资源,则交易业务对应的配置文件2中的数据库信息为数据库1和数据库2。将M个线程与数据库中记载的数据库向连接,指的是,将数据库信息保存于线程池中,当进行任务处理时,M个线程将根据数据库信息从指定的数据库中调度资源,如交易业务的数据库信息为数据库1和数据库2,则线程池在处理交易业务解析出的任务时,将从数据库1和数据库2调度数据资源。配置文件中加入数据库信息可以实现同时操作分布式多数据库,当需要增加新的数据库以支撑业务处理时,只需在配置文件中增加相应的数据库信息即可。
在步骤S104的具体实施过程中,每个任务队列具有不同的优先级,可选地,优先将先级高的任务队列中的任务放入线程池中。
可选地,任务队列按优先级从高到低共分为先入先出FIFO队列、权重队列、后入先出LIFO队列以及外置队列;外置队列用于保存关键任务,关键任务为N个任务中的部分或全部;根据任务队列优先级,依次将N个任务放入线程池中之后,还包括:针对N个任务中的每一个任务,接收任务的回调信息;根据回调信息,判断任务是否执行成功;若任务为执行失败,则确定任务在外置队列中对应的关键任务,并返回执行关键任务。外置队列用于保存关键任务,一般情况下,外置队列中的任务并不会执行,关键任务是待处理业务中解析出的N个任务中的部分或全部。可选地,当待处理业务具有极高的重要性,且解析出的任务并不多时,将所有解析出的任务都保存于外置队列中。可选地,当待处理业务的重要性一般或解析出的任务过多时,将其中的部分任务作为关键任务保存于外置队列中,可选地,关键任务可以根据表示任务优先级的权重进行划分,如,将权重为负值的任务作为关键任务保存于外置队列中。将每一个任务调度进线程池进行处理,都会获得一个回调信息用来表示任务的完成情况。
图2为本发明实施例提供的一种业务类型、权重值以及任务队列之间的关系,如图2所示,以权重表示各种业务的优先级,对于普通业务,权重值为正,权重值越大,优先级越高,对于重要业务,权重值为负,权重值越大,优先级越高。对于查询类业务一般具有较低的权重值,因此其解析出的多个任务被放入优先级最低的FIFO队列,金融类业务较查询类业务更为重要,因此被放入内置队列中,当内置队列内存不足时,也会被放入外置队列,对于秒杀类操作,其优先级最高,被放入LIFO队列。
具体实施时,针对N个任务中的每一个任务,接收任务的回调信息;根据回调信息,判断任务是否执行成功;若任务为执行失败,则确定任务在外置队列中对应的关键任务,并返回执行关键任务。任务执行失败存在两种情况,一种情况是执行失败的任务为关键任务,此时,只需直接从外置队列中提取保存的此任务并返回执行即可,另一种情况是执行失败的任务为普通任务,外置队列中并未保存,则应从外置队列中提取距离此普通任务最近的已执行的关键任务,并返回处理。可选地,当其它队列内存不够用时,外置队列也会参与任务调度。
在外置队列中保存关键任务为***提供了一种快照功能,使得任务处理发生错误时,可通过恢复关键任务的方式返回重新处理,增强了***的可用性。此外,只需提取外置队列中的关键任务即可返回,而不需根据错误类型和处理结果返回不同的API接口,因此,本实施例还提供了一种极其友好简单的API接口。
可选地,线程池为线程池***中的任一个线程池;线程池***中的任一线程池能够获取其它线程池对应的数据库资源;根据任务队列优先级,依次将N个任务放入线程池中之后,还包括:根据N个任务的执行情况,判断线程池的执行效率;若线程池的执行效率低于预设阈值,则从线程池***中获取替代线程池;替代线程池为线程池***中处理速度高于线程池的线程池;将N个任务中的未处理任务全部或部分调至替代线程池对应的任务队列中。分布式线程池***中具有多个线程池,每个线程池对任务的处理效率会存在差异,资源压力也会有所不同,当处理该待处理业务的线程池的处理效率低于预设阈值时,可以将该待处理业务解析出的任务分散给其它线程池处理。分布式线程池***的各个线程池中,含有调用其它线程池对应的数据库资源的线程,使得每一个线程池都有处理其它线程池业务的能力。图3为本发明实施例提供的一种动态调度示意图,如图3所示,业务APP1和业务APP2都解析出了300个任务,分别由线程池a和线程池b处理,由于线程池a的数据库资源充足,任务处理效率高,一段时间后,业务APP1还剩30个任务,而业务APP2还剩200个任务,线程池b的处理速度低于预设阈值,此时,将业务APP2剩下的200个任务中的部分或者全部调度到业务APP1对应的任务队列中,由业务APP1对应的线程池a协助线程池b处理业务APP2剩余的任务。采用这种动态调度的方法,可以加速业务处理过程,充分利用线程池资源。此外,还可以横向扩展和部署,对于复杂业务,可以将解析出的任务分散于多个线程池中,减轻了单个线程池的工作压力,提高了业务处理过程。
图4为本发明实施例提供的一种分布式线程池***架构,如图4所示,APP1、APP2、…、APPN代表该分布式线程池***的N种待处理业务类型,线程池1、…、线程池N为本线程池具有的N个线程池,每一个线程池都有四种队列,图4中示例性示出了一个线程池具有的任务队列:LIFO队列、内置队列队列、FIFO队列和外置队列,管理器负责根据待处理业务的执行语句,将待处理业务解析为多个任务,确定并解析待处理业务对应的配置文件,并根据配置文件中的信息配置任务队列、线程池以及数据库,调度器按照队列优先级依次将任务调度至线程池,节点1、节点2、…、节点N为该分布式线程池***具有的N个数据库节点,为该分布式线程池***提供数据资源。
综上所述,本发明实施例提供了一种基于线程池的业务处理方法,包括:接收待处理业务并解析待处理业务为N个任务;N大于等于1;根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;根据任务队列优先级,依次将N个任务放入线程池中。根据待处理业务的业务类型,将由待处理业务解析来的N个任务放入待处理业务对应的任务队列中,由于任务队列具有优先级,因此在任务调度时,会对优先级较高的业务解析而来的任务进行优先处理,此外,任务队列中的任务也会根据优先级进行排列,使得业务中的重要任务能够被优先处理,所以,采用本发明所述的业务处理方法处理业务,不仅能够按优先级处理业务,还能对业务拆分来的任务也进行优先级处理。
基于相同的技术构思,本发明实施例提供一种基于线程池的业务处理装置,该装置可以实现上述技术方法。图5为本发明实施例提供的一种基于线程池的业务处理装置结构示意图,如图5所示,处理装置500包括解析模块501、获取模块502、配置模块503和调度模块504,其中,
解析模块501,用于接收待处理业务并解析待处理业务为N个任务;N大于等于1;
获取模块502,用于根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;
配置模块503,用于根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;
调度模块504,用于根据任务队列优先级,依次将N个任务放入线程池中。
可选地,配置文件中还包含待处理业务的线程池信息,
配置模块503还用于:
根据待处理业务的线程池信息,确定线程池中待处理业务对的M个线程;
将待处理业务所对应的任务队列中的任务与M个线程关联。
可选地,配置文件中还包含了数据库信息,
配置模块503,还用于:
根据数据库信息,将M个线程与数据库信息中记载的数据库相连接。
可选地,任务队列按优先级从高到低共分为先入先出FIFO队列、权重队列、后入先出LIFO队列以及外置队列;
外置队列用于保存关键任务,关键任务为N个任务中的部分或全部;
调度模块504还用于:
针对N个任务中的每一个任务,接收任务的回调信息;
根据回调信息,判断任务是否执行成功;
若任务为执行失败,则确定任务在外置队列中对应的关键任务,并返回执行关键任务。
可选地,线程池为线程池***中的任一个线程池;线程池***中的任一线程池能够获取其它线程池对应的数据库资源;
调度模块504还用于:
根据N个任务的执行情况,判断线程池的执行效率;
若线程池的执行效率低于预设阈值,则从线程池***中获取替代线程池;替代线程池为线程池***中处理速度高于线程池的线程池;
将N个任务中的未处理任务全部或部分调至替代线程池对应的任务队列中。
综上所述,本发明实施例提供了一种基于线程池的业务处理方法及装置,包括:接收待处理业务并解析待处理业务为N个任务;N大于等于1;根据待处理业务的业务类型,获取待处理业务的配置文件;配置文件中包含了待处理业务的任务队列信息和待处理业务解析的各任务的任务优先级;根据各任务的任务优先级,将N个任务放入待处理业务所对应的任务队列中;任务队列具有优先级;根据任务队列优先级,依次将N个任务放入线程池中。根据待处理业务的业务类型,将由待处理业务解析来的N个任务放入待处理业务对应的任务队列中,由于任务队列具有优先级,因此在任务调度时,会对优先级较高的业务解析而来的任务进行优先处理,此外,任务队列中的任务也会根据优先级进行排列,使得业务中的重要任务能够被优先处理,所以,采用本发明所述的业务处理方法处理业务,不仅能够按优先级处理业务,还能对业务拆分来的任务也进行优先级处理。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种基于线程池的业务处理方法,其特征在于,包括:
接收待处理业务并解析所述待处理业务为N个任务;N大于等于1;
根据所述待处理业务的业务类型,获取所述待处理业务的配置文件;所述配置文件中包含了所述待处理业务的任务队列信息和所述待处理业务解析的各任务的任务优先级;
根据所述各任务的任务优先级,将所述N个任务放入所述待处理业务所对应的任务队列中;所述任务队列具有优先级,所述任务队列按优先级从高到低共分为先入先出FIFO队列、权重队列、后入先出LIFO队列以及外置队列;
根据所述任务队列优先级,依次将所述N个任务放入线程池中;
所述外置队列用于保存关键任务,所述关键任务为所述N个任务中的部分或全部;
根据所述任务队列优先级,依次将所述N个任务放入线程池中之后,还包括:
针对所述N个任务中的每一个任务,接收所述任务的回调信息;
根据所述回调信息,判断所述任务是否执行成功;
若所述任务为执行失败,则确定所述任务在所述外置队列中对应的关键任务,并返回执行所述关键任务,所述任务在所述外置队列中对应的关键任务为所述任务或距离所述任务最近的已执行的关键任务;
所述配置文件中还包含所述待处理业务的线程池信息,
根据所述任务队列优先级,依次将所述N个任务放入线程池中之前,还包括:
根据所述待处理业务的线程池信息,确定所述线程池中所述待处理业务对应的M个线程;所述M个线程用于处理所述N个任务。
2.如权利要求1所述的方法,其特征在于,所述配置文件中还包含了数据库信息,
根据所述任务队列优先级,依次将所述N个任务放入线程池中之前,还包括:
根据所述数据库信息,将所述M个线程与所述数据库信息中记载的数据库相连接。
3.如权利要求1或2所述的方法,其特征在于,
所述线程池为线程池***中的任一个线程池;所述线程池***中的任一线程池能够获取其它线程池对应的数据库资源;
根据所述任务队列优先级,依次将所述N个任务放入线程池中之后,还包括:
根据所述N个任务的执行情况,判断所述线程池的执行效率;
若所述线程池的执行效率低于预设阈值,则从所述线程池***中获取替代线程池;所述替代线程池为所述线程池***中处理速度高于所述线程池的线程池;
将所述N个任务中的未处理任务全部或部分调至所述替代线程池对应的任务队列中。
4.一种基于线程池的业务处理装置,其特征在于,包括:
解析模块,用于接收待处理业务并解析所述待处理业务为N个任务;N大于等于1;
获取模块,用于根据所述待处理业务的业务类型,获取所述待处理业务的配置文件;所述配置文件中包含了所述待处理业务的任务队列信息和所述待处理业务解析的各任务的任务优先级;
配置模块,用于根据所述各任务的任务优先级,将所述N个任务放入所述待处理业务所对应的任务队列中;所述任务队列具有优先级,所述任务队列按优先级从高到低共分为先入先出FIFO队列、权重队列、后入先出LIFO队列以及外置队列;
调度模块,用于根据所述任务队列优先级,依次将所述N个任务放入线程池中;
所述外置队列用于保存关键任务,所述关键任务为所述N个任务中的部分或全部;
所述调度模块还用于:
针对所述N个任务中的每一个任务,接收所述任务的回调信息;
根据所述回调信息,判断所述任务是否执行成功;
若所述任务为执行失败,则确定所述任务在所述外置队列中对应的关键任务,并返回执行所述关键任务,所述任务在所述外置队列中对应的关键任务为所述任务或距离所述任务最近的已执行的关键任务;
所述配置文件中还包含所述待处理业务的线程池信息,
所述配置模块还用于:
根据所述待处理业务的线程池信息,确定所述线程池中所述待处理业务对应的M个线程;
将所述待处理业务所对应的任务队列中的任务与所述M个线程关联。
5.如权利要求4所述的装置,其特征在于,所述配置文件中还包含了数据库信息,
所述配置模块,还用于:
根据所述数据库信息,将所述M个线程与所述数据库信息中记载的数据库相连接。
6.如权利要求4或5所述的装置,其特征在于,
所述线程池为线程池***中的任一个线程池;所述线程池***中的任一线程池能够获取其它线程池对应的数据库资源;
所述调度模块还用于:
根据所述N个任务的执行情况,判断所述线程池的执行效率;
若所述线程池的执行效率低于预设阈值,则从所述线程池***中获取替代线程池;所述替代线程池为所述线程池***中处理速度高于所述线程池的线程池;
将所述N个任务中的未处理任务全部或部分调至所述替代线程池对应的任务队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611209613.1A CN106802826B (zh) | 2016-12-23 | 2016-12-23 | 一种基于线程池的业务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611209613.1A CN106802826B (zh) | 2016-12-23 | 2016-12-23 | 一种基于线程池的业务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106802826A CN106802826A (zh) | 2017-06-06 |
CN106802826B true CN106802826B (zh) | 2021-06-18 |
Family
ID=58985750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611209613.1A Active CN106802826B (zh) | 2016-12-23 | 2016-12-23 | 一种基于线程池的业务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106802826B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107491350B (zh) * | 2017-09-05 | 2018-08-10 | 武汉斗鱼网络科技有限公司 | 接口任务调用方法及装置 |
CN108304473B (zh) * | 2017-12-28 | 2020-09-04 | 石化盈科信息技术有限责任公司 | 数据源之间的数据传输方法和*** |
CN110096344A (zh) * | 2018-01-29 | 2019-08-06 | 北京京东尚科信息技术有限公司 | 任务管理方法、***、服务器集群和计算机可读介质 |
CN110321202A (zh) * | 2018-03-29 | 2019-10-11 | 优酷网络技术(北京)有限公司 | 任务处理方法及装置 |
CN108958933B (zh) * | 2018-06-27 | 2021-12-21 | 创新先进技术有限公司 | 任务执行器的配置参数更新方法、装置及设备 |
CN109189564A (zh) * | 2018-08-01 | 2019-01-11 | 北京奇虎科技有限公司 | 一种任务处理方法及装置 |
CN110837401A (zh) * | 2018-08-16 | 2020-02-25 | 苏宁易购集团股份有限公司 | 一种java线程池分级处理方法和装置 |
CN109471731A (zh) * | 2018-11-21 | 2019-03-15 | 阿里巴巴集团控股有限公司 | 一种数据处理、内存管理方法、装置、设备及介质 |
CN109634653B (zh) * | 2018-11-30 | 2023-08-01 | 苏州朗润创新知识产权运营有限公司 | 一种基于组件化架构的资源配置方法及装置 |
CN109558255A (zh) * | 2018-12-13 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种任务处理的方法及任务处理装置 |
CN109814994B (zh) * | 2019-01-03 | 2021-10-08 | 福建天泉教育科技有限公司 | 一种动态调度线程池的方法及终端 |
CN109857535B (zh) * | 2019-02-18 | 2021-06-11 | 国家计算机网络与信息安全管理中心 | 面向Spark JDBC的任务优先级控制的实现方法及装置 |
CN112288198A (zh) * | 2019-07-22 | 2021-01-29 | 北京车和家信息技术有限公司 | 任务处理***及方法 |
CN110457124A (zh) * | 2019-08-06 | 2019-11-15 | 中国工商银行股份有限公司 | 针对业务线程的处理方法及其装置、电子设备和介质 |
CN110457126A (zh) * | 2019-08-13 | 2019-11-15 | 杭州有赞科技有限公司 | 一种异步调用方法及*** |
CN110532082A (zh) * | 2019-09-04 | 2019-12-03 | 厦门商集网络科技有限责任公司 | 一种基于任务预分配的任务申请装置和方法 |
CN110647389B (zh) * | 2019-09-16 | 2023-04-07 | 北京镁伽机器人科技有限公司 | 用于自动饮品机的任务处理方法、自动饮品机及存储介质 |
CN110851245A (zh) * | 2019-09-24 | 2020-02-28 | 厦门网宿有限公司 | 一种分布式异步任务调度方法及电子设备 |
CN111210288A (zh) * | 2019-12-26 | 2020-05-29 | 大象慧云信息技术有限公司 | 基于税控服务器的***批量开具作业优化调度方法及*** |
CN111290846B (zh) * | 2020-02-26 | 2023-08-18 | 杭州涂鸦信息技术有限公司 | 一种分布式任务调度方法及*** |
CN111552546B (zh) * | 2020-04-16 | 2021-07-16 | 贝壳找房(北京)科技有限公司 | 一种基于多线程的任务实现方法、装置及存储介质 |
CN111737026A (zh) * | 2020-05-28 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种基于lookup操作的多线程消息处理方法 |
CN111813554A (zh) * | 2020-07-17 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种任务调度处理方法、装置及电子设备和存储介质 |
CN112463331B (zh) * | 2020-12-02 | 2022-04-15 | 天津光电通信技术有限公司 | 一种基于java单线程池的任务调度优化实现方法 |
CN112659119A (zh) * | 2020-12-02 | 2021-04-16 | 广东博智林机器人有限公司 | 机械臂的控制方法、装置、电子设备及存储介质 |
CN113641517B (zh) * | 2021-08-10 | 2023-08-29 | 平安科技(深圳)有限公司 | 业务数据的发送方法、装置、计算机设备和存储介质 |
CN114116184B (zh) * | 2022-01-28 | 2022-04-29 | 腾讯科技(深圳)有限公司 | 虚拟场景中的数据处理方法及装置、设备、介质 |
CN115037702B (zh) * | 2022-05-23 | 2024-04-12 | 北京梧桐车联科技有限责任公司 | 报文分发、数据发送方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599027A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种线程池管理方法及其*** |
CN102253860A (zh) * | 2011-07-13 | 2011-11-23 | 深圳市万兴软件有限公司 | 一种异步操作方法及异步操作管理装置 |
CN103870348A (zh) * | 2012-12-14 | 2014-06-18 | 中国电信股份有限公司 | 一种用户并发访问的测试方法和*** |
CN104063279A (zh) * | 2013-03-20 | 2014-09-24 | 腾讯科技(深圳)有限公司 | 任务调度方法、装置和终端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080379B2 (en) * | 2002-06-20 | 2006-07-18 | International Business Machines Corporation | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
CN103559082A (zh) * | 2013-11-04 | 2014-02-05 | 北京华胜天成科技股份有限公司 | 一种基于队列的分布式任务调度方法、装置及*** |
CN104407847B (zh) * | 2014-10-29 | 2019-05-07 | 中国建设银行股份有限公司 | 一种批处理的方法及装置 |
CN104462370A (zh) * | 2014-12-09 | 2015-03-25 | 北京百度网讯科技有限公司 | 分布式任务调度***及方法 |
-
2016
- 2016-12-23 CN CN201611209613.1A patent/CN106802826B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599027A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种线程池管理方法及其*** |
CN102253860A (zh) * | 2011-07-13 | 2011-11-23 | 深圳市万兴软件有限公司 | 一种异步操作方法及异步操作管理装置 |
CN103870348A (zh) * | 2012-12-14 | 2014-06-18 | 中国电信股份有限公司 | 一种用户并发访问的测试方法和*** |
CN104063279A (zh) * | 2013-03-20 | 2014-09-24 | 腾讯科技(深圳)有限公司 | 任务调度方法、装置和终端 |
Also Published As
Publication number | Publication date |
---|---|
CN106802826A (zh) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
WO2020211579A1 (zh) | 一种基于分布式批量处理***的处理方法、装置及*** | |
CN111399989B (zh) | 一种面向容器云的任务抢占调度方法及*** | |
CN113535367B (zh) | 任务调度方法及相关装置 | |
CN111125444A (zh) | 大数据任务调度管理方法、装置、设备及存储介质 | |
CN111338791A (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
CN111400011B (zh) | 一种实时任务调度方法、***、设备及可读存储介质 | |
CN107589990B (zh) | 一种基于线程池的数据通讯的方法及*** | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN113626173B (zh) | 调度方法、装置及存储介质 | |
CN105786917B (zh) | 时序数据并发入库的方法和装置 | |
CN113485814A (zh) | 批量任务调度方法及装置 | |
CN111767125B (zh) | 任务执行方法、装置、电子设备、存储介质 | |
CN105446812A (zh) | 一种多任务调度配置方法 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN114896295B (zh) | 大数据场景下的数据脱敏方法、脱敏装置及脱敏*** | |
CN109829005A (zh) | 一种大数据处理方法及装置 | |
CN115344370A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN115220887A (zh) | 调度信息的处理方法、任务处理***、处理器和电子设备 | |
CN110990139B (zh) | 一种基于rtos的smp调度方法及*** | |
CN113806055A (zh) | 一种轻量级任务调度方法、***、装置及存储介质 | |
CN113254143A (zh) | 虚拟化网络功能网元编排调度方法、装置和*** | |
CN111258728A (zh) | 任务的执行方法及装置、存储介质和电子装置 | |
CN111026809A (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 |