CN108132837A - 一种分布式集群调度***及方法 - Google Patents
一种分布式集群调度***及方法 Download PDFInfo
- Publication number
- CN108132837A CN108132837A CN201810001677.5A CN201810001677A CN108132837A CN 108132837 A CN108132837 A CN 108132837A CN 201810001677 A CN201810001677 A CN 201810001677A CN 108132837 A CN108132837 A CN 108132837A
- Authority
- CN
- China
- Prior art keywords
- thread
- service server
- server
- status information
- worker thread
- 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
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
- 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/465—Distributed object oriented systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式集群调度***及方法,***包括:数据库服务器及多个业务服务器,各业务服务器包括主线程及工作线程;主线程定期在数据库服务器中更新本业务服务器的状态信息;定期在数据库服务器中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;根据业务数据分区信息及业务服务器的状态信息调整本业务服务器中的工作线程数;根据业务工作线程的状态信息分析工作线程异常情况;工作线程用于处理业务数据分区信息中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息;数据库服务器记录业务数据分区信息、业务服务器的状态信息及工作线程的状态信息。本发明能够无需人工干预就能快速扩展及动态调整集群性能。
Description
技术领域
本发明涉及计算机分布式处理技术领域,特别涉及一种分布式集群调度***及方法。
背景技术
随着商业银行业务规模的不断发展,为了提升客户体验,通常商业银行都会建立一套通知消息***,用于对客户的各种业务进行即时告知,风险提示。交易提醒的即时性,是商业银行服务能力的一项重要指标。随着业务的不断发展,消息的数量呈现几何级数的增长,传统的***架构难以满足海量数据的处理,很可能出现服务异常,如***响应缓慢、宕机,给银行带来巨大的负面影响甚至损失。
面对海量数据,较为常用的解决方式有如下四种:一、升级硬件资源;二、优化***的架构;三、增加限流措施;以及四、通过分布式***处理业务。升级硬件资源,会在一定程度上缓解性能压力,但同时也会带来成本的增加,商业银行的成本控制必然不允许设备无限制的升级,同时,由于峰值时间的短暂性,升级设备也会带来资源的浪费。优化***的架构,可以带来***处理能力的提升,但***架构优化的空间是有限的,达到瓶颈后就很难再有很大的提升。同样,增加限流措施优化***空间的能力也是有限的。目前商业银行常用的分布式***主要有:1.预设服务器数量,根据业务量,预估可能需要的服务器数量;2.预设配置文件参数,根据经验值,预先设定服务器的线程数,以达到理想的性能;3.根据运行时的***状态,调整服务器数量或参数,并对集群进行重启使新服务器可以运行,新参数可以生效;4.单个节点虽不会对整体造成巨大影响,但依然存在部分影响,这种影响很可能遭至客户投诉。
但在实际应用中,业务量呈现不规则的变化,很可能因为某个突发事件导致业务量陡增,这时如果调整服务器数量、参数,甚至重启整个集群都是不现实的,会对现有业务产生影响。因此,上述方法不能保证动态扩展集群,更无法确保证服务高可用性。
发明内容
本发明用于解决现有技术中商业银行使用的分布式***,通常需要人工干预进行扩容或缩减,且须重启服务器,不能保证动态扩展集群,更无法保证服务高可用性的问题。
为了解决上述技术问题,本发明的一技术方案为提供一种分布式集群调度***,该***包括:
数据库服务器及多个业务服务器,其中,各业务服务器包括主线程及工作线程;
主线程用于定期在数据库服务器中更新本业务服务器的状态信息;定期在数据库服务器中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数,并根据需要启动的最小工作线程数调整本业务服务器中的工作线程数;根据业务工作线程的状态信息确定本业务服务器中工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程;
工作线程用于处理业务数据分区信息中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息;
数据库服务器用于记录业务数据分区信息、业务服务器的状态信息及工作线程的状态信息。
本发明另一技术方案中,还提供一种分布式集群调度方法,该方法包括:
定期在数据库服务器中更新本业务服务器的状态信息;
定期在数据库服务器中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;
根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数,并根据需要启动的最小工作线程数调整本业务服务器中的工作线程数;
根据工作线程的状态信息确定本业务服务器中的工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程;
其中,工作线程用于处理数据库服务器中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息;
数据库服务器用于存储数据分区信息,记录业务服务器的状态信息及工作线程的状态信息。
本发明根据当前集群中业务数据分区信息及业务服务器的状态信息计算需要启动的工作线程数,并根据需要启动的工作线程数调整(增加或减少)本业务服务器中的工作线程数,根据工作线程的状态信息确定本业务服务器中的工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程。本发明能够在高并发的场景下,无需人工干预就能快速扩展及动态调整集群性能,提高用户体验,自动检测业务服务器的异常线程,以及时恢复异常线程,确保集群提供的对外服务不会因异常线程而导致过载或崩溃。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的分布式集群调度***的结构示意图;
图2为本发明实施例的数据库内部结构示意图;
图3为本发明实施例的主线程处理过程流程图;
图4为本发明实施例的工作线程处理过程流程图;
图5为本发明实施例的分布式集群调度方法的流程图。
具体实施方式
为了使本发明的技术特点及效果更加明显,下面结合附图对本发明的技术方案做进一步说明,本发明也可有其他不同的具体实例来加以说明或实施,任何本领域技术人员在权利要求范围内做的等同变换均属于本发明的保护范畴。
在本说明书的描述中,参考术语“一实施例”、“一具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
如图1所示,图1为本发明实施例的分布式集群调度***的结构图。本实施例能够在高并发的场景下,无需人工干预就能快速扩展及动态调整集群性能,提高用户体验,自动检测业务服务器的异常线程,以及时恢复异常线程,确保集群提供的对外服务不会因异常线程而导致过载或崩溃。
具体的,该***包括:数据库服务器100及多个业务服务器200,其中,各业务服务器200包括主线程201(也可称之为矩阵管理员)及工作线程202(也可称之为矩阵)。
主线程201用于定期(如60s,本发明对此不作限定)在数据库服务器100中更新本业务服务器的状态信息;定期(如60s,本发明对此不作限定)在数据库服务器100中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数,并根据需要启动的最小工作线程数调整本业务服务器中的工作线程数;根据业务工作线程的状态信息确定本业务服务器中工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程,例如,主线程通过分析发现本业务服务器有2个工作线程出现异常,则主线程会在本业务服务器中创建2个工作线程。
详细的说,为了避免CPU过高,主线程每执行完一次上述过程之后需要休眠一段时间,如1s,休息过后重新唤醒主线程。
工作线程201用于处理业务数据分区信息中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息。
数据库服务器100用于记录业务数据分区信息、业务服务器的状态信息及工作线程的状态信息。
具体实施时,业务服务器启动后会立即利用主线程在数据库服务器中注册本业务服务器的状态信息。主线程201还用于将本业务服务器中的工作线程存储于线程池中,以便管理。
本申请通过业务服务器及数据库服务器的相互协作,无需人工介入就能动态调节***性能,有效提升***的整体服务能力。
本发明一具体实施例中,如图2所示,数据库服务器100包括服务器列表101、矩阵列表102及分区数据列表103。
服务器列表101用于记录各业务服务器的状态信息,由各业务服务器的主线程维护。其中,各业务服务器的状态信息包括业务服务器名及运行状态,服务器名为IP地址或服务器hostname,运行状态为最后一次更新的时间戳。下表为服务器列表具有的基本字段:
矩阵列表102用于记录工作线程的状态信息,由工作线程维护。其中,各工作线程的状态信息包括工作线程名、运行状态、锁状态及分区数据列表中的分区号。矩阵列表还记录矩阵数N(即工作线程总数,每一矩阵表示一工作线程)。工作线程运行状态为工作线程最后一次运行的时间戳。锁状态用来控制集群中可同时处理数据的线程数的逻辑概念,其对应了分区数据列表中的“分区(Partition)数”,为了确保多线程环境下不会出现资源争抢,甚至死锁,故引入了锁状态概念。若锁状态为“未被占用”,则集群中其他闲置的工作线程可以进行抢锁,抢锁成功后,将锁状态更新为“已被占用”,抢到锁的工作线程可以处理对应分区下的业务数据,业务数据处理完后,则将锁状态更新为“未被占用”。下表为矩阵列表具有的基本字段:
分区数据列表103用于记录业务数据分区信息,其中,业务数据分区信息包括分区号、业务数据及业务数据处理状态,还记录了分区数N。需要处理的业务数据被平均分布到N个分区中,分区与分区之间相互独立,分区数N与矩阵列表102中的矩阵数N相同。数据分区信息由工作人员及工作线程共同维护,工作人员根据业务需求调整分区数,工作线程根据业务数据的处理情况更新业务数据处理状态。
下表为分区数据列表103所具有的基本字段。
分区数据列表103中的分区数应与矩阵列表102中的矩阵数对应,即矩阵列表102中的每一条数据实为分区数据列表103中的分区号。
本发明一实施例中,主线程201根据工作线程的状态信息确定本业务服务器中工作线程是否异常的过程包括:
将***时间与线程池中每一工作线程的运行状态时间戳进行比较,若***时间与该工作线程的运行状态时间戳之间的差值大于预设值(例如1800秒),则认定该工作线程为异常工作线程,若***时间与该工作线程的运行状态时间戳之间的差值小于或等于预设值,则认定该工作线程为有效工作线程。
本发明一实施例中,如图3所示,主线程201根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数的过程包括:
步骤301,根据业务数据分区信息确定分区数N1;
步骤302,根据业务服务器的状态信息确定有效业务服务器数N2;
步骤303,根据分区数N1及有效业务服务器数N2通过如下公式计算本业务服务器需要启动的最小工作线程数Tmin:
其中,为向上取整。
进一步的,主线程201根据需要启动的最小工作线程数调整本业务服务器中的工作线程数的过程包括:
将最小工作线程数Tmin与线程池中工作线程数T进行比较,若线程池中工作线程数T小于最小工作线程数Tmin,则创建Tmin-T个新工作线程并存储在线程池中,反之,根据工作线程的运行状态停止线程池中T-Tmin个未工作的工作线程。
本发明一实施例中,上述步骤302根据业务服务器的状态信息确定有效业务服务器数N2的过程包括:
将***时间与每一业务服务器的运行状态时间戳进行比较,若***时间与该业务服务器的运行状态时间戳之间的差值大于预设值(如1800s),则认定该业务服务器为异常服务器,若***时间与该业务服务器的运行状态时间戳之间的差值小于或等于预设值,则认定该业务服务器为有效服务器;根据上述分析结果统计得到有效服务器数N2。
本发明一实施例中,如图4所示,工作线程处理业务数据分区信息中的业务数据过程包括:
步骤401,工作线程X被创建后,会立即更新矩阵列表中锁状态为未被占用的工作线程的状态信息,称之为“上锁”或“获取锁”;
若更新不成功,则表示上锁失败,则进入休眠,待被唤醒后继续更新矩阵列表中锁状态为未被占用的工作线程的状态信息,或每隔预定时间间隔更新矩阵列表中锁状态为未被占用的工作线程的状态信息;若更新成功,则表示上锁成功,则执行步骤402;
步骤402,该工作线程X从矩阵列表中获得分区号,根据该分区号从分区数据列表中获得该分区号下的业务数据;
步骤403,对该分区号下未被处理的业务数据进行业务逻辑处理,在分区数据列表中更新已经处理的业务数据的处理状态,记为已处理;
步骤404,更新矩阵列表中该工作线程X的锁状态为未被占用,即可以再次占用,称之为“归还锁”。
为保证服务器CPU不会过载,工作线程每次执行完上述流程,需休眠一段时间,例如500毫秒,休眠时间到后重新唤醒工作线程,重复上述步骤401~步骤404的过程。
如图5所示,图5为本发明实施例的分布式集群调度方法的流程图。分布式集群调度方法适用于业务服务器的主线程,该方法的实施可参见上述分布式集群调度***,重复之处不再赘述。具体的,分布式集群调度方法包括:
步骤501,定期在数据库服务器中更新本业务服务器的状态信息;
步骤502,定期在数据库服务器中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;
步骤503,根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数,并根据需要启动的最小工作线程数调整本业务服务器中的工作线程数;
步骤504,根据工作线程的状态信息确定本业务服务器中的工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程;
其中,工作线程用于处理数据库服务器中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息;
数据库服务器用于存储数据分区信息,记录业务服务器的状态信息及工作线程的状态信息。
业务服务器刚开启时,主线程还在数据库服务器中注册本业务服务器的状态信息。为了避免CPU过高,上述过程执行完后,主线程需要休眠一段时间,如1s,休息过后重新唤醒主线程。为了更清楚说明本发明技术方案,下面以一些具体实施例进行详细说明。
假设集群***中有4台业务服务器,1台数据库服务器,数据库服务器的矩阵列表中预设了8个分区。***启动后,4台业务服务器首先在数据库服务器中注册本业务服务器的状态;接着,各业务服务器的主线程初始化矩阵池,确定分区数N1为8,有效业务服务器数N2为4,计算出需要启动的最小工作线程数则各业务服务器创建(启动)2个工作线程放入矩阵池中。正常情况下,矩阵池中的工作线程被创建后会先尝试占用锁,锁抢占成功后,进行业务处理。对于上述公式刚好除尽的情况,每个工作线程都会抢占到锁。
若其中一台业务服务器中有N个(N为1或2)工作线程出现异常,且异常时间超过一定时间,如1800秒,该台业务服务器的主线程会创建N个工作线程并将其存储于线程池中,使集群***恢复到之前的性能。
若各业务服务器工作正常,因业务下降,调整矩阵列表中的分区数N1为4,对应的锁变为了4,集群***中的8个工作线程只有4个能够拿到锁,各业务服务器的主线程计算出需要启动的最小工作线程数即每台业务服务器只需启动1个工作线程就能满足集群***需求,这种情况下,各业务服务器中的主线程会关闭1个不在工作的工作线程。
若各业务服务器工作正常,因业务增多,调整矩阵列表中的分区数N1为13,对应的锁变为了13,集群***中的8个工作线程无论什么时候都能拿到锁,各业务服务器的主线程计算出需要启动的最小工作线程数即每台业务服务器需启动4个工作线程才能满足集群***需求,这种情况下,各业务服务器需在各自的线程池中增加2个工作线程。对于上述公式除不尽的情况,集群***中会存在始终会存在闲置工作线程。
若其中一台业务服务器宕机,各正常业务服务器的主线程会发现有效的业务服务器数N2变为了3,计算出需要启动的最小工作线程数即剩下的每台业务服务器需启动3个工作线程才能满足集群***需求,这种情况下,剩下的每台业务服务器需在各自的线程池中增加1个工作线程。实施时,为了避免给正常业务服务器增加压力,还可采用人工的方式启动适当数量的业务服务器。
本发明一实施例中,还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例所述的分布式集群调度方法。
本发明一实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述实施例所述的分布式集群调度方法的计算机程序。
本发明可动态调整集群内各节点(业务服务器)的性能,当出现异常节点时,可自动恢复,保证集群的稳定性。将本发明实验应用于银行***中,具有如下优点:
1.使用30台普通x86服务器构建的集群,不需要预先设定每个节点的线程数,通过***自动适配业务量,可支持日均八千万的短信发送量,发送成功率达到94%。
2.能够根据集群中节点的业务压力,动态调整节点的服务能力,确保集群整体的服务能力不会因某个节点暂时的繁忙而导致下降。
3.可动态扩容,无需停机重启,确保集群可以7x24小时不间断服务。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅用于说明本发明的技术方案,任何本领域普通技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围应视权利要求范围为准。
Claims (10)
1.一种分布式集群调度***,其特征在于,包括:数据库服务器及多个业务服务器,其中,各业务服务器包括主线程及工作线程;
主线程用于定期在数据库服务器中更新本业务服务器的状态信息;定期在数据库服务器中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数,并根据需要启动的最小工作线程数调整本业务服务器中的工作线程数;根据业务工作线程的状态信息确定本业务服务器中工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程;
工作线程用于处理业务数据分区信息中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息;
数据库服务器用于记录业务数据分区信息、业务服务器的状态信息及工作线程的状态信息。
2.如权利要求1所述的***,其特征在于,数据库服务器包括服务器列表、矩阵列表及分区数据列表;
服务器列表用于记录业务服务器的状态信息,其中,各业务服务器的状态信息包括业务服务器名及运行状态;
矩阵列表用于记录工作线程的状态信息,其中,各工作线程的状态信息包括工作线程名、运行状态、锁状态及分区数据列表中的分区号;
分区数据列表用于记录业务数据分区信息,其中,业务数据分区信息包括分区号、业务数据及业务数据处理状态。
3.如权利要求2所述的***,其特征在于,主线程还用于将本业务服务器中的工作线程存储于线程池中,以便管理。
4.如权利要求3所述的***,其特征在于,主线程根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数的过程包括:
根据业务数据分区信息确定分区数N1;
根据业务服务器的状态信息确定有效业务服务器数N2;
根据分区数N1及有效业务服务器数N2通过如下公式计算本业务服务器需要启动的最小工作线程数Tmin:
5.如权利要求4所述的***,其特征在于,主线程根据需要启动的最小工作线程数调整本业务服务器中的工作线程数的过程包括:
将最小工作线程数Tmin与线程池中工作线程数T进行比较,若线程池中工作线程数T小于最小工作线程数Tmin,则创建Tmin-T个新工作线程并存储在线程池中,反之,根据工作线程的运行状态停止线程池中T-Tmin个未工作的工作线程。
6.如权利要求4所述的***,其特征在于,业务服务器的运行状态为最后一次更新的时间戳。
7.如权利要求6所述的***,其特征在于,根据业务服务器的状态信息确定有效业务服务器数N2的过程包括:
将***时间与每一业务服务器的运行状态时间戳进行比较,若***时间与该业务服务器的运行状态时间戳之间的差值大于预设值,则认定该业务服务器为异常服务器,若***时间与该业务服务器的运行状态时间戳之间的差值小于或等于预设值,则认定该业务服务器为有效服务器;
统计得到有效服务器数N2。
8.如权利要求1所述的***,其特征在于,工作线程处理业务数据分区信息中的业务数据过程包括:
工作线程X被创建后,会立即更新矩阵列表中锁状态为未被占用的工作线程的状态信息;
若更新不成功,则每隔预定时间间隔更新矩阵列表中锁状态为未被占用的工作线程的状态信息,若更新成功,则该工作线程X从矩阵列表中获得分区号,根据该分区号从分区数据列表中获得该分区号下的业务数据;
对该分区号下未被处理的业务数据进行业务逻辑处理,在分区数据列表中更新已经处理的业务数据的处理状态;
更新矩阵列表中该工作线程X的锁状态为未被占用。
9.一种分布式集群调度方法,其特征在于,包括:
定期在数据库服务器中更新本业务服务器的状态信息;
定期在数据库服务器中读取业务数据分区信息、业务服务器的状态信息及工作线程的状态信息;
根据业务数据分区信息及业务服务器的状态信息计算需要启动的最小工作线程数,并根据需要启动的最小工作线程数调整本业务服务器中的工作线程数;
根据工作线程的状态信息确定本业务服务器中的工作线程是否异常,若存在异常,则在本业务服务器中创建与异常工作线程数量相等的工作线程;
其中,工作线程用于处理数据库服务器中的业务数据,每次运行时在数据库服务器中更新工作线程的状态信息;
数据库服务器用于存储数据分区信息,记录业务服务器的状态信息及工作线程的状态信息。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求9所述方法的分布式集群调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810001677.5A CN108132837B (zh) | 2018-01-02 | 2018-01-02 | 一种分布式集群调度***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810001677.5A CN108132837B (zh) | 2018-01-02 | 2018-01-02 | 一种分布式集群调度***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108132837A true CN108132837A (zh) | 2018-06-08 |
CN108132837B CN108132837B (zh) | 2022-04-15 |
Family
ID=62399503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810001677.5A Active CN108132837B (zh) | 2018-01-02 | 2018-01-02 | 一种分布式集群调度***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108132837B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947551A (zh) * | 2019-03-19 | 2019-06-28 | 中南大学 | 一种多轮次任务分配方法、边缘计算***及其存储介质 |
CN110187971A (zh) * | 2019-05-30 | 2019-08-30 | 口碑(上海)信息技术有限公司 | 业务请求处理方法及装置 |
CN110377416A (zh) * | 2018-12-04 | 2019-10-25 | 天津京东深拓机器人科技有限公司 | 分布式分区任务调度方法和装置 |
CN110888723A (zh) * | 2019-11-18 | 2020-03-17 | 中国银行股份有限公司 | 定时任务处理方法及装置 |
CN111124651A (zh) * | 2019-12-27 | 2020-05-08 | 中通服公众信息产业股份有限公司 | 一种分布式环境多线程并发调度的方法 |
CN111190961A (zh) * | 2019-12-18 | 2020-05-22 | 航天信息股份有限公司 | 一种动态优化的多线程数据同步方法及*** |
CN111625366A (zh) * | 2020-06-02 | 2020-09-04 | 深圳市网是科技有限公司 | 基于发布与订阅模型的弹性伸缩服务方法 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN112328388A (zh) * | 2020-09-17 | 2021-02-05 | 北京中数科技术有限公司 | 一种融合多线程及分布式技术的并行计算方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262507A1 (en) * | 2004-05-20 | 2005-11-24 | Bea Systems, Inc. | System and method for application server with self-tuned threading model |
CN103428272A (zh) * | 2013-07-16 | 2013-12-04 | 无限极(中国)有限公司 | 一种中间件线程的监控调度***及方法 |
CN103810048A (zh) * | 2014-03-11 | 2014-05-21 | 国家电网公司 | 一种面向资源利用最优的线程数量自动调整方法及装置 |
CN104915259A (zh) * | 2015-06-15 | 2015-09-16 | 浪潮软件集团有限公司 | 一种应用于分布式采集***的任务调度方法 |
-
2018
- 2018-01-02 CN CN201810001677.5A patent/CN108132837B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262507A1 (en) * | 2004-05-20 | 2005-11-24 | Bea Systems, Inc. | System and method for application server with self-tuned threading model |
CN103428272A (zh) * | 2013-07-16 | 2013-12-04 | 无限极(中国)有限公司 | 一种中间件线程的监控调度***及方法 |
CN103810048A (zh) * | 2014-03-11 | 2014-05-21 | 国家电网公司 | 一种面向资源利用最优的线程数量自动调整方法及装置 |
CN104915259A (zh) * | 2015-06-15 | 2015-09-16 | 浪潮软件集团有限公司 | 一种应用于分布式采集***的任务调度方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377416A (zh) * | 2018-12-04 | 2019-10-25 | 天津京东深拓机器人科技有限公司 | 分布式分区任务调度方法和装置 |
CN109947551A (zh) * | 2019-03-19 | 2019-06-28 | 中南大学 | 一种多轮次任务分配方法、边缘计算***及其存储介质 |
CN110187971A (zh) * | 2019-05-30 | 2019-08-30 | 口碑(上海)信息技术有限公司 | 业务请求处理方法及装置 |
CN110888723A (zh) * | 2019-11-18 | 2020-03-17 | 中国银行股份有限公司 | 定时任务处理方法及装置 |
CN111190961A (zh) * | 2019-12-18 | 2020-05-22 | 航天信息股份有限公司 | 一种动态优化的多线程数据同步方法及*** |
CN111190961B (zh) * | 2019-12-18 | 2023-09-29 | 航天信息股份有限公司 | 一种动态优化的多线程数据同步方法及*** |
CN111124651A (zh) * | 2019-12-27 | 2020-05-08 | 中通服公众信息产业股份有限公司 | 一种分布式环境多线程并发调度的方法 |
CN111124651B (zh) * | 2019-12-27 | 2023-05-23 | 中通服公众信息产业股份有限公司 | 一种分布式环境多线程并发调度的方法 |
CN111625366A (zh) * | 2020-06-02 | 2020-09-04 | 深圳市网是科技有限公司 | 基于发布与订阅模型的弹性伸缩服务方法 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111797110B (zh) * | 2020-06-23 | 2024-01-26 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN112328388A (zh) * | 2020-09-17 | 2021-02-05 | 北京中数科技术有限公司 | 一种融合多线程及分布式技术的并行计算方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN108132837B (zh) | 2022-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108132837A (zh) | 一种分布式集群调度***及方法 | |
CN111813513B (zh) | 基于分布式的实时任务调度方法、装置、设备及介质 | |
JP4760491B2 (ja) | イベント処理システム、イベント処理方法、イベント処理装置、及び、イベント処理プログラム | |
JP4294879B2 (ja) | サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム | |
EP3180695B1 (en) | Systems and methods for auto-scaling a big data system | |
US8424003B2 (en) | Unified job processing of interdependent heterogeneous tasks using finite state machine job control flow based on identified job type | |
US20160117186A1 (en) | Dynamic scaling of management infrastructure in virtual environments | |
US8910176B2 (en) | System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance | |
WO2012144647A1 (ja) | 仮想マシン管理装置、仮想マシン管理方法、及び、プログラム | |
JPWO2008146677A1 (ja) | 仮想マシン管理装置、仮想マシン管理方法および仮想マシン管理プログラム | |
CN106790726A (zh) | 一种基于Docker云平台的优先级队列动态反馈负载均衡资源调度方法 | |
US20150281114A1 (en) | Systems and methods for allocating work for various types of services among nodes in a distributed computing system | |
CN106776008A (zh) | 一种基于zookeeper实现负载均衡的方法及*** | |
CN106354729A (zh) | 一种图数据处理方法、装置和*** | |
CN111897643B (zh) | 线程池配置***、方法、装置和存储介质 | |
US20150100963A1 (en) | Method and system for efficient execution of ordered and unordered tasks in multi-threaded and networked computing | |
CN109739640A (zh) | 一种基于申威架构的容器资源管理*** | |
CN116401024A (zh) | 基于云计算的集群扩缩容方法、装置、设备及介质 | |
EP3090361B1 (en) | Providing consistent tenant experiences for multi-tenant databases | |
CN107368355B (zh) | 虚拟机的动态调度方法和装置 | |
CN110413393A (zh) | 集群资源管理方法、装置、计算机集群及可读存储介质 | |
CN111158896A (zh) | 一种分布式进程调度方法及*** | |
CN106557492A (zh) | 一种数据同步方法和装置 | |
CN113641498A (zh) | 一种数据核对方法、***、设备及存储介质 | |
CN113342780A (zh) | Dsu数据的迁移方法、装置和计算机设备 |
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 |