CN112711470A - 一种集群并行处理多任务的方法 - Google Patents
一种集群并行处理多任务的方法 Download PDFInfo
- Publication number
- CN112711470A CN112711470A CN202011612537.5A CN202011612537A CN112711470A CN 112711470 A CN112711470 A CN 112711470A CN 202011612537 A CN202011612537 A CN 202011612537A CN 112711470 A CN112711470 A CN 112711470A
- Authority
- CN
- China
- Prior art keywords
- task
- subtasks
- main task
- main
- cluster
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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
- G06F16/24532—Query optimisation of parallel queries
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种集群并行处理多任务的方法,应用程序在集群部署,多个应用同时接收外部请求提交的主任务并将一个主任务拆分为N个子任务并行执行,最后由子任务本身来提交子任务最终的处理的结果数据到统一外部存储,提交的子任务状态数据根据主任务ID取模一个固定值K得到一个分区号,并将结果数据带有分区号。同一个主任务的N个子任务的状态数据对应同一个分区,分区总数为K。最后由集群主节点创建K个线程并发处理这K个分区内的数据,判断各个主任务的所有子任务是否全部提交了自己的处理结果,对子任务全部完成的主任务做回调,即通知提交任务者任务已完成。本发明在任务集散类工作原理的应用中有效提高任务的并发处理和吞吐效率。
Description
技术领域
本发明适用于软件开发领域,尤其涉及一种集群并行处理多任务的方法。
背景技术
在一个大型系统当中一般都会存在一个“任务中心”用于执行各类任务。而一个任务可能会被拆分成多个子任务,每个子任务完成主任务的一部分工作,最后将子任务的结果集中处理后产出主任务的处理结果。如在金融授信领域,当接收到一笔授信请求,请求中只包含部分用户的特征数据比如用户的手机号、身份证信息,当数据不够充分无法支撑这次授信决策时,系统就需要根据已有的特征值去关联其他数据,也就是一次“数据扩展”任务。该任务提交时可能一次性要关联A、B、C三个数据源,传统做法就是启动3个线程并行执行子任务关联数据,并由这三个任务在任务完成后将状态插入的外部存储,并使用一个定时任务去扫描外部存储判断全部的子任务是否已经全部完成,对已经完成的主任务做回调工作。
但是在集群部署时,上述定时任务的做法会出现设计缺陷,因为每个节点都去扫描外部存储,如果同一批状态数据被多个应用节点扫描到会导致同一批数据被多次处理导致重复回调最终引起系统异常,所以如何判断所有子任务已经全部完成就需要重新设计。
发明内容
鉴于上述问题,本发明提出了一种集群并行处理多任务的方法,以提升拆分子任务处理的效率和主任务总进度感知的效率,有效提升系统的吞吐量。
本发明的目的是通过以下技术方案来实现的:一种集群并行处理多任务的方法,具体包括以下步骤:
(1)接收主任务:应用程序在集群部署,作为集群中的节点,所有集群中的每一个节点均可以被外部请求调用并提交主任务。主任务包含一个唯一主键:主任务ID。
(2)计算分区号和并行执行子任务:集群中的任意节点在接到主任务请求以后,先根据步骤(1)中主任务ID和应用程序启动时所配置的数据分区数K,计算出主任务处理状态数据最终存储所属分区,具体计算公式:
分区号=|hash(主任务ID)%K|
式中,%表示取模运算。hash泛指能将主任务ID计算为数值的hash算法。
随后节点会将主任务拆分为N个子任务并启动N个线程去并行执行这N个子任务。
(3)子任务执行完成后汇报状态到指定分区:根据步骤(2)中计算出的分区号,每个子任务线程在子任务结束的时候无论任务最终成功还是失败均会将子任务最终结果存储到外部存储中间件并且会让数据带有分区号。
(4)主节点扫描主任务总进度:根据步骤(3)带有分区号的数据,集群中的主节点会启动K个线程分别并行扫描这K个数据分区的任务状态数据。扫描工作会将子任务已经全部完成的主任务的总结果回调给步骤(1)中的主任务提交者即外部请求的发送方。
进一步地,步骤(1)中,所述提交主任务为异步请求。
进一步地,步骤(1)中,所述主任务ID可以是字符串类型也可以是数值型。
进一步地,步骤(2)中,所述主任务拆分的N个子任务的内容可以是任意顺序执行的逻辑代码。
进一步地,步骤(3)中,数据分区可以根据应用程序的外部储存中间件类型来具体实现,缓存中间件可以通过统一key前缀来拼接分区号来实现,关系型数据库中通过数据表的一列“分区号”来实现。
进一步地,步骤(4)中,主节点扫描任务时,如果主节点因为某些原因宕机,集群会选举出新的主节点,新的主节点会接替原主节点的工作继续做步骤(4)的扫描工作。
本发明的有益效果:本发明提供了一种集群并行处理多任务的高效方案,在任务集散类工作原理的应用中有效提高任务的并发处理和吞吐效率。
附图说明
图1为应用集群(Master-Slave)部署示意图;
图2为本发明一种集群并行处理多任务的方法的实现原理图;
图3为Aerospike或Redis实现逻辑分区示意图;
图4为传统关系型数据库实现逻辑分区示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
本发明提供的一种集群并行处理多任务的方法,具体包括以下步骤:
(1)接收主任务:应用程序在集群部署,作为集群中的节点,所有集群中的每一个节点均可以被外部请求调用并提交主任务,提交主任务属于异步请求。主任务包含一个唯一主键:主任务ID。所述主任务ID可以是字符串类型也可以是数值型。
(2)计算分区号和并行执行子任务:集群中的任意节点在接到主任务请求以后,先根据步骤(1)中主任务ID和应用程序启动时所配置的数据分区数K,计算出主任务处理状态数据最终存储所属分区,具体计算公式:
分区号=|hash(主任务ID)%K|
式中,%表示取模运算,hash泛指能将主任务ID计算为数值的hash算法;主任务ID在系统中是一个String对象也就是字符串类型数据,而HashCode是String类的一个方法,这个方法可以得到这个字符串的散列值即一个整型数值。“主任务的ID的HashCode”在式中可以理解为将一个String字符串也就是一个主任务ID转换为整型并保持唯一的特点的一种方式。
计算出分区号之后,节点会将主任务拆分为N个子任务并启动N个线程去并行执行这N个子任务。所述主任务拆分的N个子任务的内容可以是任意顺序执行的逻辑代码。同一个主任务的N个子任务的状态数据对应同一个分区,分区总数为K。
(3)子任务执行完成后汇报状态到指定分区:数据分区可以根据应用程序的外部储存中间件类型来具体实现。根据步骤(2)中计算出的分区号,每个子任务线程在子任务结束的时候无论任务最终成功还是失败均会将子任务最终结果存储到外部存储中间件并且会让数据带有分区号。
(4)主节点扫描主任务总进度:根据步骤(3)带有分区号的数据,集群中的主节点会启动K个线程分别并行扫描这K个数据分区的任务状态数据。扫描工作会将子任务已经全部完成的主任务的总结果回调给步骤(1)中的主任务提交者即外部请求的发送方。
主节点扫描任务时,如果主节点因为某些原因宕机,集群会选举出新的主节点,新的主节点会接替原主节点的工作继续做步骤(4)的扫描工作。
本发明的一个具体实施例如下:
如图1和2所示,本发明提供的一种集群并行处理多任务的高效方法,包括以下步骤:
1.采用Spring Boot应用框架搭建web应用,并集成ZooKeeper中间件实现应用的集群功能,使集群中的多个应用能够实现主从节点的选举,另外能够通过Nginx中间件实现反向代理。
2.根据步骤1部署应用以后,使用postman或者jmeter工具向Nginx代理地址发送请求即提交主任务。
3.根据步骤2提交的主任务,集群会分步骤处理提交的主任务:
a.提交与接收主任务:某个节点可以被外部请求调用并提交主任务。这里的主任务提交属于异步请求,主任务结果由主任务处理者在判断主任务完成以后主动将处理结果回调给提交者。
b.计算分区号和并行执行子任务:应用程序任意节点在接到主任务请求以后,先根据根据步骤a中主任务ID和应用程序启动时所配置的数据分区数K,数据分区数K可以选取8,计算出任务处理状态数据最终存储所属分区,具体计算公式为:
分区号=|hash(主任务ID)%K|
式中,%表示取模运算。hash泛指能将主任务ID计算为数值的hash算法。
计算出分区号之后,节点会将主任务拆分为N个子任务并启动N个线程去并行执行这N个子任务。所述主任务拆分的N个子任务的内容可以是任意顺序执行的逻辑代码。
c.子任务执行完成后汇报状态到指定分区:根据步骤b中计算出的分区号,每个子任务线程在子任务结束的时候无论任务最终成功还是失败都会将子任务最终结果存储到外部存储中间件并且会让数据本身带有分区号。这里的数据分区可以根据真正应用的外部储存的中间件类型来具体实现,比如Redis、Aerospike等缓存中间件可以通过统一key前缀来拼接分区号来实现,如图3所示。也可以在Oracle、MySQL等关系型数据库中通过数据表的一列“分区号”来实现,如图4所示。
d.主节点扫描主任务总进度:根据步骤c带有分区号的数据,集群中的主节点会启动K个线程分别并行扫描这K个数据分区的任务状态数据。扫描工作会将子任务已经全部完成的主任务的总结果回调给步骤a中的主任务提交者即外部请求发送方。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (6)
1.一种集群并行处理多任务的方法,其特征在于,具体包括以下步骤:
(1)接收主任务:应用程序在集群部署,作为集群中的节点,所有集群中的每一个节点均可以被外部请求调用并提交主任务。主任务包含一个唯一主键:主任务ID。
(2)计算分区号和并行执行子任务:集群中的任意节点在接到主任务请求以后,先根据步骤(1)中主任务ID和应用程序启动时所配置的数据分区数K,计算出主任务处理状态数据最终存储所属分区,具体计算公式:
分区号=|hash(主任务ID)%K|
式中,%表示取模运算。hash泛指能将主任务ID计算为数值的hash算法。
随后节点会将主任务拆分为N个子任务并启动N个线程去并行执行这N个子任务。
(3)子任务执行完成后汇报状态到指定分区:根据步骤(2)中计算出的分区号,每个子任务线程在子任务结束的时候无论任务最终成功还是失败均会将子任务最终结果存储到外部存储中间件并且会让数据带有分区号。
(4)主节点扫描主任务总进度:根据步骤(3)带有分区号的数据,集群中的主节点会启动K个线程分别并行扫描这K个数据分区的任务状态数据。扫描工作会将子任务已经全部完成的主任务的总结果回调给步骤(1)中的主任务提交者即外部请求的发送方。
2.根据权利要求1所述的一种集群并行处理多任务的方法,其特征在于,步骤(1)中,所述提交主任务为异步请求。
3.根据权利要求1所述的一种集群并行处理多任务的方法,其特征在于,步骤(1)中,所述主任务ID可以是字符串类型也可以是数值型。
4.根据权利要求1所述的一种集群并行处理多任务的方法,其特征在于,步骤(2)中,所述主任务拆分的N个子任务的内容可以是任意顺序执行的逻辑代码。
5.根据权利要求1所述的一种集群并行处理多任务的方法,其特征在于,步骤(3)中,数据分区可以根据应用程序的外部储存中间件类型来具体实现,缓存中间件可以通过统一key前缀来拼接分区号来实现,关系型数据库中通过数据表的一列“分区号”来实现。
6.根据权利要求1所述的一种集群并行处理多任务的方法,其特征在于,步骤(4)中,主节点扫描任务时,如果主节点因为某些原因宕机,集群会选举出新的主节点,新的主节点会接替原主节点的工作继续做步骤(4)的扫描工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011612537.5A CN112711470A (zh) | 2020-12-30 | 2020-12-30 | 一种集群并行处理多任务的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011612537.5A CN112711470A (zh) | 2020-12-30 | 2020-12-30 | 一种集群并行处理多任务的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112711470A true CN112711470A (zh) | 2021-04-27 |
Family
ID=75547319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011612537.5A Pending CN112711470A (zh) | 2020-12-30 | 2020-12-30 | 一种集群并行处理多任务的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112711470A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268545A (zh) * | 2021-06-03 | 2021-08-17 | 浙江邦盛科技有限公司 | 一种增量合并与全量相结合的集群节点间键值数据异步复制方法 |
CN116561171A (zh) * | 2023-07-10 | 2023-08-08 | 浙江邦盛科技股份有限公司 | 一种倾斜数据双时序分布处理方法、装置、设备及介质 |
-
2020
- 2020-12-30 CN CN202011612537.5A patent/CN112711470A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268545A (zh) * | 2021-06-03 | 2021-08-17 | 浙江邦盛科技有限公司 | 一种增量合并与全量相结合的集群节点间键值数据异步复制方法 |
CN113268545B (zh) * | 2021-06-03 | 2022-05-17 | 浙江邦盛科技有限公司 | 一种增量合并与全量相结合的集群节点间键值数据异步复制方法 |
CN116561171A (zh) * | 2023-07-10 | 2023-08-08 | 浙江邦盛科技股份有限公司 | 一种倾斜数据双时序分布处理方法、装置、设备及介质 |
CN116561171B (zh) * | 2023-07-10 | 2023-09-15 | 浙江邦盛科技股份有限公司 | 一种倾斜数据双时序分布处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Régin et al. | Embarrassingly parallel search | |
CN112711470A (zh) | 一种集群并行处理多任务的方法 | |
EP1540463A1 (en) | Dynamic multilevel task management method and apparatus | |
CN110738720B (zh) | 特效渲染方法、装置、终端及存储介质 | |
CN111190753A (zh) | 分布式任务处理方法、装置、存储介质和计算机设备 | |
JPWO2012137347A1 (ja) | 計算機システム及び並列分散処理方法 | |
CN112000649B (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
CN114610499A (zh) | 任务调度方法、装置、计算机可读存储介质及电子设备 | |
CN104750522A (zh) | 任务或流程的动态执行方法和系统 | |
CN113342886A (zh) | 数据交换方法和装置 | |
CN113157411A (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN111736923A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN112748997A (zh) | 一种工作流的调度方法及系统 | |
CN102214094B (zh) | 经由异步编程模型执行操作 | |
CN113391814A (zh) | 任务处理方法、装置、系统及存储介质 | |
US8589944B2 (en) | Method and system for task mapping to iteratively improve task assignment in a heterogeneous computing system | |
CN114610413A (zh) | 基于Java的同异步任务的执行方法、装置、设备及存储介质 | |
CN113034048A (zh) | 任务处理方法、装置、服务器及存储介质 | |
CN113010290A (zh) | 一种任务管理方法、装置、设备及存储介质 | |
US7257582B2 (en) | Load balancing with shared data | |
CN111401837A (zh) | 事件处理方法和系统、计算机可读存储介质 | |
CN111930720A (zh) | 数据倾斜的处理方法、系统、电子设备和介质 | |
CN116719626B (zh) | 海量数据拆分的多线程并行处理方法及其处理系统 | |
CN117806909A (zh) | 一种异构数据源数据采集方法及装置 | |
Singh | Task Scheduling Techniques Based On Parallel Genetic Algorithm Approaches: A Review |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012 Applicant after: Zhejiang Bangsheng Technology Co.,Ltd. Address before: Room ABCD, 17th floor, building D, Paradise Software Park, No.3 xidoumen Road, Xihu District, Hangzhou City, Zhejiang Province, 310012 Applicant before: ZHEJIANG BANGSUN TECHNOLOGY Co.,Ltd. |