CN111124651A - 一种分布式环境多线程并发调度的方法 - Google Patents
一种分布式环境多线程并发调度的方法 Download PDFInfo
- Publication number
- CN111124651A CN111124651A CN201911373184.5A CN201911373184A CN111124651A CN 111124651 A CN111124651 A CN 111124651A CN 201911373184 A CN201911373184 A CN 201911373184A CN 111124651 A CN111124651 A CN 111124651A
- Authority
- CN
- China
- Prior art keywords
- thread
- work order
- service
- pool
- sleep
- 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.)
- Granted
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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种分布式环境多线程并发调度的方法,涉及企业信息化技术领域,技术方案为,将需要处理的工单信息统一放置于在途池;遍历在途池内的工单状态,线程服务是否处理某一工单取决于工单的状态,工单的状态信息在数据库统一存储;状态转换遵循统一调度规则。通过线程池框架对各应用服务器的线程服务进行管理,包括线程注册、线程实例化、线程执行、线程休睡眠、线程结束。本发明的有益效果是:本方案通过分布式环境多线程并发调度,解决了分布式工作流引擎中消息队列处理中的不足,提高了高并发应用工作流服务的稳定性、达到了高效、智能、均衡的目的。
Description
技术领域
本发明涉及企业信息化技术领域,特别涉及一种分布式环境多线程并发调度的方法。
背景技术
当前企业信息化建设中大部分***为分布式***,其部署方式为集群模式,应用节点间通过负载均衡进行会话缓存和路由,通过消息队列进行业务沟通,消息队列具有异步、解耦、平流等优点,适合于接口通信;部分***的工作流引擎也采用消息队列模式,消息队列应用于工作流引擎时存在以下问题:
1. 消息队列遵循严格的先进先出原则,队列内部的业务信息无法实现优先级控制。
2. 降低***可用性,消息队列导致模块间依赖度增加,一个模块异常往往导致工作流引擎瘫痪。
3. 增加***复杂度,模块间沟通经历消息的发送、接收、处理各环节,处理环节的增加导致***变得更复杂。
4. 降低***可控度,消息队列由专门的中间件提供具体实现,部分中间件消息队列内部处理逻辑对外不可见,应用对消息处理过程控制度底。
5. 降低***可靠性,分布式***内部消息队列往往由中间件采用t3协议进行负载均衡,其均衡可靠性不高。
发明内容
针对上述技术问题,本发明提供一种分布式环境多线程并发调度的方法。
其技术方案为,将应用***工作流引擎进行服务分解,每个服务负责完成工作流引擎的某一功能,服务的实现通过分布式多线程并发执行完成,包括,
S1、将需要施工处理的工单信息统一放置于在途池;在途池只存储施工中的工单及相关信息,施工完毕的工单及时出池,使得工单池各表数据量最小,确保高水平数据处理效率。
S2、遍历在途池内的工单状态,线程服务是否处理某一工单取决于工单的状态,工单的状态信息在数据库统一存储;状态转换遵循统一调度规则。
S3、通过线程池框架对各应用服务器的线程服务进行管理,包括S310、线程注册;S320、线程实例化;S330、线程执行;S340、线程休睡眠;S350、线程结束。
优选为,所述S310线程注册的方法为:
S311、确定应用域;
S312、确定应用服务;
S313、确定线程服务;
S314、配置线程运行信息。
优选为,所述S314配置线程运行信息包括设置线程并发数,设置线程业务峰值,设置线程日志模式,设置线程运行模式;
设置线程运行模式包括时间区、抓去量、休眠间隔等信息的设置。
优选为,所述S320线程实例化的方法为,
S321、创建应用线程池;
S322、加载应用注册线程信息;
S323、创建线程实例;
S324、初始化线程实例;
S325、线程实例就绪。
优选为,所述S330、线程执行的方法为,
S331、扫描本类服务待处理量;
S332、计算当前线程运行优先级;
S333、根据线程优先级规则,对线程发放令牌;在发放线程执行令牌时,根据线程相对业务处理量进行优先级控制,确保同一类线程服务业务处理均衡,设备资源利用率均衡;
S334、按照令牌顺序抓取工单;
S335、对成功抓取的工单进行执行业务处理。
优选为,所述S334按照令牌顺序抓取工单时,采用数据滚动锁策略,执行数据的查询和锁定,利用Oracle隐性支持的SELECT FOR UPDATE SKIP LOCKED功能,跳过被锁定的数据继续执行查询和锁定。
优选为,所述S340线程休睡眠方法为,
S341、计算本次活动处理是否达到上限值;
S342、如果S341的判定结果达到上限值,则进入线程休眠;
S343、如果S341的判定结果未达到上限值,则计算线程是否需要睡眠;
S344、如果S343的判定结果为线程需要睡眠,则让线程转入睡眠;
S345、如果S343的判定结果为线程不需要睡眠,则让线程转入休眠。
优选为,所述S1中,将需要处理的工单信息统一放置于在途池;通过工单缓存机制对在途池中的工单数量进行控制,在工单积压量达到一定阀值时,对阀值优先级后的工单进行缓存,以确保优先级调度效率;当工单积压量减少到某一阀值时,对缓存的工单进行反缓存处理。
本发明实施例提供的技术方案带来的有益效果是:本方案通过分布式环境多线程并发调度,解决了分布式工作流引擎中消息队列处理中的不足,提高了高并发应用工作流服务的稳定性、达到了高效、智能、均衡的目的。
附图说明
图1为本发明实施例的整体框架图。
图2为本发明实施例的线程注册流程图。
图3为本发明实施例的线程实例化流程图。
图4为本发明实施例的线程执行流程图。
图5为本发明实施例的线程休睡眠流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。当然,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,在不冲突的情况下,本发明创造中的实施例及实施例中的特征可以相互组合。
在本发明创造的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明创造和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明创造的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明创造的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明创造的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明创造中的具体含义。
实施例1
参见图1至图5,本发明提供一种分布式环境多线程并发调度的方法,将应用***工作流引擎进行服务分解,每个服务负责完成工作流引擎的某一功能,服务的实现通过分布式多线程并发执行完成,包括,
S1、将需要施工处理的工单信息统一放置于在途池;在途池只存储施工中的工单及相关信息,施工完毕的工单及时出池,使得工单池各表数据量最小,确保高水平数据处理效率。
S2、遍历在途池内的工单状态,线程服务是否处理某一工单取决于工单的状态,工单的状态信息在数据库统一存储;状态转换遵循统一调度规则。
S3、通过线程池框架对各应用服务器的线程服务进行管理,包括S310、线程注册;S320、线程实例化;S330、线程执行;S340、线程休睡眠;S350、线程结束。
S310线程注册的方法为:
S311、确定应用域;
S312、确定应用服务;
S313、确定线程服务;
S314、配置线程运行信息。
S314配置线程运行信息包括设置线程并发数,设置线程业务峰值,设置线程日志模式,设置线程运行模式;
设置线程运行模式包括时间区、抓去量、休眠间隔等信息的设置。
S320线程实例化的方法为,
S321、创建应用线程池;
S322、加载应用注册线程信息;
S323、创建线程实例;
S324、初始化线程实例;
S325、线程实例就绪。
S330、线程执行的方法为,
S331、扫描本类服务待处理量;
S332、计算当前线程运行优先级;
S333、根据线程优先级规则,对线程发放令牌;在发放线程执行令牌时,根据线程相对业务处理量进行优先级控制,确保同一类线程服务业务处理均衡,设备资源利用率均衡;
S334、按照令牌顺序抓取工单;
S335、对成功抓取的工单进行执行业务处理。
根据线程执行令牌策略控制线程实例抓取工单进行施工处理,确保分布式环境同一时间同一服务下并发线程量最小,减少资源争用风险。
S334按照令牌顺序抓取工单时,采用数据滚动锁策略,利用Oracle隐性支持的SELECT FOR UPDATE SKIP LOCKED功能,执行数据的查询和锁定,并跳过被锁定的数据继续执行查询和锁定,避免多个线程服务抓取工单时锁定同一工单。
S340线程休睡眠方法为,
S341、计算本次活动处理是否达到上限值;
S342、如果S341的判定结果达到上限值,则进入线程休眠;
S343、如果S341的判定结果未达到上限值,则计算线程是否需要睡眠;
S344、如果S343的判定结果为线程需要睡眠,则让线程转入睡眠;
S345、如果S343的判定结果为线程不需要睡眠,则让线程转入休眠。
线程双眠机制,运行中的线程服务拥有活动、休眠、睡眠三种状态,线程每次活动完毕调度中心通过计算确定其休眠(短时间休眠)或睡眠(长时间休眠),保证在业务低谷时大部分线程服务处于睡眠状态释放设备资源,而在业务高峰期线程服务能快速达到处理能力巅峰状态。
S1中,将需要处理的工单信息统一放置于在途池;通过工单缓存机制对在途池中的工单数量进行控制,在工单积压量达到一定阀值时,对阀值优先级后的工单进行缓存,以确保优先级调度效率;当工单积压量减少到某一阀值时,对缓存的工单进行反缓存处理。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种分布式环境多线程并发调度的方法,其特征在于,将应用***工作流引擎进行服务分解,每个服务负责完成工作流引擎的某一功能,服务的实现通过分布式多线程并发执行完成,包括,
S1、将需要处理的工单信息统一放置于在途池;在途池只存储施工中的工单及相关信息,施工完毕的工单及时出池,使得工单池各表数据量最小,确保高水平数据处理效率;
S2、遍历在途池内的工单状态,线程服务是否处理某一工单取决于工单的状态,工单的状态信息在数据库统一存储;状态转换遵循统一调度规则;
S3、通过线程池框架对各应用服务器的线程服务进行管理,包括S310、线程注册;S320、线程实例化;S330、线程执行;S340、线程休睡眠;S350、线程结束。
2.根据权利要求1所述的分布式环境多线程并发调度的方法,其特征在于,所述S310线程注册的方法为:
S311、确定应用域;
S312、确定应用服务;
S313、确定线程服务;
S314、配置线程运行信息。
3.根据权利要求2所述的分布式环境多线程并发调度的方法,其特征在于,所述S314配置线程运行信息包括设置线程并发数,设置线程业务峰值,设置线程日志模式,设置线程运行模式;
设置线程运行模式包括时间区、抓去量、休眠间隔设置。
4.根据权利要求1所述的分布式环境多线程并发调度的方法,其特征在于,所述S320线程实例化的方法为,
S321、创建应用线程池;
S322、加载应用注册线程信息;
S323、创建线程实例;
S324、初始化线程实例;
S325、线程实例就绪。
5.根据权利要求1所述的分布式环境多线程并发调度的方法,其特征在于,所述S330、线程执行的方法为,
S331、扫描本类服务待处理量;
S332、计算当前线程运行优先级;
S333、根据线程优先级规则,对线程发放令牌;在发放线程执行令牌时,根据线程相对业务处理量进行优先级控制,确保同一类线程服务业务处理均衡,设备资源利用率均衡;
S334、按照令牌顺序抓取工单;
S335、对成功抓取的工单进行执行业务处理。
6.根据权利要求5所述的分布式环境多线程并发调度的方法,其特征在于,所述S334按照令牌顺序抓取工单时,采用数据滚动锁策略,执行数据的查询和锁定,并跳过被锁定的数据继续执行查询和锁定。
7.根据权利要求1所述的分布式环境多线程并发调度的方法,其特征在于,所述S340线程休睡眠方法为,
S341、计算本次活动处理是否达到上限值;
S342、如果S341的判定结果达到上限值,则进入线程休眠;
S343、如果S341的判定结果未达到上限值,则计算线程是否需要睡眠;
S344、如果S343的判定结果为线程需要睡眠,则让线程转入睡眠;
S345、如果S343的判定结果为线程不需要睡眠,则让线程转入休眠。
8.根据权利要求1所述的分布式环境多线程并发调度的方法,其特征在于,所述S1中,将需要处理的工单信息统一放置于在途池;通过工单缓存机制对在途池中的工单数量进行控制,在工单积压量达到一定阀值时,对阀值优先级后的工单进行缓存,以确保优先级调度效率;当工单积压量减少到某一阀值时,对缓存的工单进行反缓存处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911373184.5A CN111124651B (zh) | 2019-12-27 | 2019-12-27 | 一种分布式环境多线程并发调度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911373184.5A CN111124651B (zh) | 2019-12-27 | 2019-12-27 | 一种分布式环境多线程并发调度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124651A true CN111124651A (zh) | 2020-05-08 |
CN111124651B CN111124651B (zh) | 2023-05-23 |
Family
ID=70503706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911373184.5A Active CN111124651B (zh) | 2019-12-27 | 2019-12-27 | 一种分布式环境多线程并发调度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124651B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328388A (zh) * | 2020-09-17 | 2021-02-05 | 北京中数科技术有限公司 | 一种融合多线程及分布式技术的并行计算方法及*** |
CN116501475A (zh) * | 2023-06-21 | 2023-07-28 | 杭州炬华科技股份有限公司 | 线程调度方法、***以及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120020370A1 (en) * | 2010-05-18 | 2012-01-26 | Lsi Corporation | Root scheduling algorithm in a network processor |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
CN102681889A (zh) * | 2012-04-27 | 2012-09-19 | 电子科技大学 | 一种云计算开放平台的调度方法 |
US20170364361A1 (en) * | 2016-06-17 | 2017-12-21 | Via Alliance Semiconductor Co., Ltd. | Multi-threading processor and a scheduling method thereof |
CN108132837A (zh) * | 2018-01-02 | 2018-06-08 | 中国工商银行股份有限公司 | 一种分布式集群调度***及方法 |
CN109753354A (zh) * | 2018-11-26 | 2019-05-14 | 平安科技(深圳)有限公司 | 基于多线程的流媒体任务的处理方法、装置及计算机设备 |
CN110597606A (zh) * | 2019-08-13 | 2019-12-20 | 中国电子科技集团公司第二十八研究所 | 一种高速缓存友好的用户级线程调度方法 |
CN112000445A (zh) * | 2020-07-08 | 2020-11-27 | 苏宁云计算有限公司 | 分布式任务调度的方法及*** |
-
2019
- 2019-12-27 CN CN201911373184.5A patent/CN111124651B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120020370A1 (en) * | 2010-05-18 | 2012-01-26 | Lsi Corporation | Root scheduling algorithm in a network processor |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
CN102681889A (zh) * | 2012-04-27 | 2012-09-19 | 电子科技大学 | 一种云计算开放平台的调度方法 |
US20170364361A1 (en) * | 2016-06-17 | 2017-12-21 | Via Alliance Semiconductor Co., Ltd. | Multi-threading processor and a scheduling method thereof |
CN108132837A (zh) * | 2018-01-02 | 2018-06-08 | 中国工商银行股份有限公司 | 一种分布式集群调度***及方法 |
CN109753354A (zh) * | 2018-11-26 | 2019-05-14 | 平安科技(深圳)有限公司 | 基于多线程的流媒体任务的处理方法、装置及计算机设备 |
CN110597606A (zh) * | 2019-08-13 | 2019-12-20 | 中国电子科技集团公司第二十八研究所 | 一种高速缓存友好的用户级线程调度方法 |
CN112000445A (zh) * | 2020-07-08 | 2020-11-27 | 苏宁云计算有限公司 | 分布式任务调度的方法及*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328388A (zh) * | 2020-09-17 | 2021-02-05 | 北京中数科技术有限公司 | 一种融合多线程及分布式技术的并行计算方法及*** |
CN116501475A (zh) * | 2023-06-21 | 2023-07-28 | 杭州炬华科技股份有限公司 | 线程调度方法、***以及介质 |
CN116501475B (zh) * | 2023-06-21 | 2023-10-20 | 杭州炬华科技股份有限公司 | 线程调度方法、***以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111124651B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112379995B (zh) | 一种基于dag的单元化分布式调度***及方法 | |
CN103092682B (zh) | 异步网络应用程序处理方法 | |
CN112000445A (zh) | 分布式任务调度的方法及*** | |
CN109828833B (zh) | 一种神经网络训练任务的排队***及其方法 | |
CN111124651B (zh) | 一种分布式环境多线程并发调度的方法 | |
CN109873736A (zh) | 一种微服务监控方法及*** | |
Al-Khafajiy et al. | Fog computing framework for internet of things applications | |
US10503636B2 (en) | Concurrent hierarchical dead actor collection in a distributed system | |
CN106462593B (zh) | 大规模并行处理数据库的***和方法 | |
GB2483737A (en) | Workflow scheduler for server cluster with blocking assignment of order sensitive flows and non blocking assignment of other flows | |
CN112835722B (zh) | 业务处理方法、电子设备及计算机可读存储介质 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
US8068443B2 (en) | Using distributed timers in an overlay network | |
CN113535362B (zh) | 一种分布式调度***架构和微服务工作流调度方法 | |
CN110377406A (zh) | 一种任务调度方法、装置、存储介质和服务器节点 | |
CN1898647B (zh) | 具有被动线程和活动信标的处理架构 | |
US6820263B1 (en) | Methods and system for time management in a shared memory parallel processor computing environment | |
KR100586285B1 (ko) | 자원 경쟁을 관리하기 위한 방법 및 장치 | |
CN112241400A (zh) | 一种基于数据库实现分布式锁的方法 | |
US20140095930A1 (en) | Enhanced arbitration protocol for nodes in a cluster | |
CN110287206A (zh) | 构建用于Redis数据库的分布式锁的方法 | |
CN113821322A (zh) | 一种松耦合的分布式工作流协调***和方法 | |
CN113867911A (zh) | 一种任务调度方法、设备及微服务*** | |
CN111177164B (zh) | 一种基于定时任务框架的车辆实时信息调度方法 | |
EP2693337B1 (en) | Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment |
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 |