WO2020211376A1 - 集群服务器执行任务的方法、装置、设备及存储介质 - Google Patents
集群服务器执行任务的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- WO2020211376A1 WO2020211376A1 PCT/CN2019/119564 CN2019119564W WO2020211376A1 WO 2020211376 A1 WO2020211376 A1 WO 2020211376A1 CN 2019119564 W CN2019119564 W CN 2019119564W WO 2020211376 A1 WO2020211376 A1 WO 2020211376A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- server
- flag bit
- database
- task
- preset data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000005856 abnormality Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 125000002015 acyclic group Chemical group 0.000 claims description 12
- 125000004122 cyclic group Chemical group 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/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
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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
Abstract
一种集群服务器执行任务的方法、装置、设备及存储介质,方法包括:集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,数据库表设有主键,预设数据为不同于主键的数据(S1);基于数据库表的唯一约束,判断数据库表的其他行是否存在预设数据(S2);若存在预设数据,则判定第一服务器向数据库表未成功插入预设数据,并将任务添加至数据库的待处理表中,数据库表与待处理表存在关联关系(S3);根据向待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行待处理表中的所有任务,第二服务器为在第一服务器之前已经向数据库表成功插入预设数据的唯一服务器(S4)。实现一个任务只被集群中的一台服务器执行。
Description
本申请要求于2019年4月15日提交中国专利局、申请号为201910300268.X,发明名称为“集群服务器执行任务的方法、装置、设备及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及到计算机技术领域,特别是涉及到集群服务器执行任务的方法、装置、设备及存储介质。
目前,集群中服务器执行多个有先后顺序的任务时,一般可以根据获取到任务的时间,按照时间顺序,利用集群资源,依次执行各任务,但这种方式很难保证只有一台机器去执行其中一个任务,因此出现任务被重复执行的概率很高。如果通过定时任务框架定时检测,这样存在时间滞后性。
本申请的主要目的为提供集群服务器执行任务的方法、装置、设备及存储介质,实现一个任务只被集群中的一台服务器执行的目的。
为了实现上述申请目的,本申请提出一种集群服务器执行任务的方法,包括:
集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,第一服务器为集群服务器池中的任意一台服务器,数据库表设有主键,预设数据为不同于主键的数据;
基于数据库表的唯一约束,判断数据库表的其他行是否存在预设数据,其中唯一约束为规定数据库表中任意两行都不允许有相同的数据;
若数据库表的其他行存在预设数据,则判定第一服务器向数据库表未成功插入预设数据,并将任务添加至数据库的待处理表中,数据库表与待处理表存在关联关系;
根据向待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行待处理表中的所有任务,第二服务器为在第一服务器之前已经向数据库表成功插入预设数据的唯一服务器。
本申请还提出了一种集群服务器执行任务的装置,包括:
插入模块,用于集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,所述第一服务器为集群服务器池中的任意一台服务器,所述数据库表设有主键,所述预设数据为不同于所述主键的数据;
判断模块,用于基于所述数据库表的唯一约束,判断所述数据库表的其他行是否存在所述预设数据,其中所述唯一约束为规定所述数据库表中任意两行都不允许有相同的数据;
第一添加模块,用于若所述数据库表的其他行存在所述预设数据,则判定所述第一服务器向所述数据库表未成功插入所述预设数据,并将所述任务添加至数据库的待处理表中,所述数据库表与所述待处理表存在关联关系;
第一执行模块,用于根据向所述待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行所述待处理表中的所有任务,所述第二服务器为在所述第一服务器之前已经向所述数据库表成功插入所述预设数据的唯一服务器。
本申请还提出了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述方法的步骤。
本申请通过服务器向数据库表中插入预设数据,基于数据库表的唯一约束,只能有一台服务器成功插入预设数据,从而实现数据库表中的任务在同一时间只能由一台服务器执行,进而避免出现同一任务被重复执行或并行执行的情况,减少线程资源的占用,提高任务的执行效率;服务器执行任务时,从数据库读取任务数据,以避免服务器在执行任务过程中出现宕机而导致任务未被执行完成,集群中的其他服务器无法获取到未被执行完成的任务来重新执行。
图1为本申请一实施例中集群服务器执行任务的方法的步骤示意图;
图2为本申请一实施例中集群服务器执行任务的装置的结构示意图;
图3为本申请一实施例中计算机设备的结构示意图。
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例中集群执行任务的方法,包括:
S1,集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,第一服务器为集群服务器池中的任意一台服务器,数据库表设有主键,预设数据为不同于主键的数据;
S2,基于数据库表的唯一约束,判断数据库表的其他行是否存在预设数据,其中唯一约束为规定数据库表中任意两行都不允许有相同的数据;
S3,若数据库表的其他行存在预设数据,则判定第一服务器向数据库表未成功插入预设数据,并将任务添加至数据库的待处理表中,数据库表与待处理表存在关联关系;
S4,根据向待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行待处理表中的所有任务,第二服务器为在第一服务器之前已经向数据库表成功插入预设数据的唯一服务器。
上述集群包括服务器池、负载调度器和数据库,其中,服务器池包括多个服务器,数据库为多个服务器的共享内存,负载调度器给服务器分发任务。
在上述步骤S1中,上述数据库表为关系型数据库中设有主键(primary
key)的表,数据库例如Oracle数据库。上述主键为数据库表中的一个或多个字段,其值用于唯一地表示表中的某一条记录,其中每条记录均有若干个属性。例如数据库表为任务表,包含任务编号、任务名称、任务处理状态等,其中每个任务的任务编号是唯一的,则任务编号就为主键,任务编号的具体数值就为主键ID;由于数据库表设有主键,则必然存在主键约束,所以上述主键为自增长主键,以避免出现主键冲突而导致无法加入任务的数据,例如,当集群接收到新任务时,将新任务的数据加入到数据库表,任务编号为主键,则主键ID+1(即任务编号+1)以作为该新任务的唯一标识。上述插入(insert)预设数据的方式可为通过结构化查询语言(Structured Query Language,SQL)对数据库表进行插入操作。在本实施例中,当任务编号为1(主键ID为1)的任务需要被执行时,集群中的负载调度器向服务器池中的任一空闲服务器发送调用请求(将该服务器记为服务器A),服务器A向数据库表中的指定行(如任务编号为1的任务所在的行)插入预设数据(由于任务主键从“1”开始,所以预设数据如“0”与主键不同),此时,由于主键不能为空,所以预设数据不能作为主键插入数据库表中,但为了保证只有一个相同的预设数据成功插入数据库表,则预设数据可以作为唯一键插入数据库表;进一步地,对于集群后续接收到的一个任务(主键ID为2),也是由负载调度器向服务器池中的任一空闲服务器发送调用请求(将该服务器记为服务器B),并且服务器B也向数据库表中的指定行(如任务编号为2的任务所在的行)插入相同的预设数据(如上述预设数据“0”),此时,服务器A已经向数据库表成功插入预设数据,由于数据库表的唯一约束(唯一键约束),则服务器B无法向数据库表成功插入预设数据,从而保证只有一台服务器能够向数据库表成功插入预设数据。
在上述步骤S2中,上述唯一约束(唯一键约束)用来限制不受主键约束的列上的数据唯一性,其规定表中任意两行在指定列上都不允许有相同的值,但允许空(NULL)。数据库根据各服务器向数据库表插入预设数据的时间先后不同,判定只有最先向数据库表插入预设数据的服务器插入成功,例如,集群中有服务器“A、B、C”,它们几乎同时分别接收到任务编号为“1、2、3”的任务请求,若服务器“A”最先向数据库表中的任务编号为1的任务所在的行插入预设数据“0”,则服务器“A”向数据库表成功插入预设数据,而当服务器“B”或“C”也分别向数据库表中的任务编号为2的任务所在的行、任务编号为3的任务所在的行插入预设数据“0”时,由于数据库表的唯一约束,预设数据“0”与先前服务器“A”插入的预设数据重复,无法唯一标识,所以服务器“B”或“C”插入数据“0”失败,所以只能有一台服务器能够成功插入预设数据。
在上述步骤S3中,当第一服务器向数据库表插入预设数据失败时,则说明在第一服务器向数据库表插入预设数据之前,就已经有服务器成功向数据库表插入了预设数据。为了后续接收到的任务也能按照时间先后顺序正常被执行,则将任务添加至待处理表。进一步地,数据库表为任务表,可以将任务表的任务编号(主键ID)作为待处理表的外键添加至待处理表,即任务表关联待处理表,任务表为主键表,而待处理表相对于任务表来说是外键表。由于任务编号为主键ID,其在任务表中是唯一的,则将任务编号添加到待处理表时,任务编号在待处理表中也是唯一的,所以当第二服务器执行待处理表中的任务时,不会出现重复执行的情况;以及任务编号顺序就是任务被执行的时间顺序,所以第二服务器可以按照任务编号顺序依次执行待处理表中的任务,从而避免要求按照时间先后顺序的每个任务不会被重复或并行执行执行,进而减少线程资源的占用,提高任务的执行效率。
在上述步骤S4中,上述第二服务器执行待处理表中的任务时,从数据库中读取上述任务的任务编号对应的任务数据,而不是将任务数据保存在服务器的内存中,从而服务器在执行任务过程中出现宕机而导致任务未被执行完成时,避免集群中的其他服务器无法获取到未被执行完成的任务来重新执行,保证在服务器执行任务过程出现单点故障时,其他服务器能够从数据库中读取到未被执行完成的任务以重新执行。在一实施例中,第二服务器每执行完一个待处理表中的任务,则删除待处理表中的该任务的任务编号以及清除数据库中该任务的任务数据,以减少内存的占用。
在一实施例中,上述将任务添加至数据库的待处理表中的步骤S3之前,包括:
S301,通过第二服务器将第二服务器的第一标志位赋值为第一预设值,第一标志位用于标识第二服务器的工作状态,第一标志位赋值为第一预设值用于标识第二服务器正在处理任务;
S302,添加数据库的第二标志位,第二标志位用于标识任务正在被执行。
在上述步骤S301中,在第二服务器开始执行任务时,将第二服务器的第一标志位赋值为第一预设值,例如running=true或running=1,以将第二服务器的处理状态标识为正在执行。当其他任务需要被执行时,以便于查询到第二服务器当前处于执行任务的状态,无法立即执行其他任务,进而等待第一服务器执行完当前任务后再执行下一任务,从而实现依次执行需要按时间先后顺序执行的任务。
在上述步骤S302中,添加数据库的第二标志位,以表示当前数据库表中的任务正在被执行,从而集群中的服务器通过查询第二标志位来获取任务是否被执行,当第二标志位存在时,则其他服务器不再获取该任务,进而不会出现该任务被重复执行的情况。在一实施例中,集群中的服务器会检查数据库中的任务是否被执行,即检查数据库的第二标志位是否存在,若存在,则说明数据库中的任务正在被执行中,再检查第二服务器是否真的正在执行任务,即检查第二服务器的第一标志位是否为第一预设值,若是第一预设值,则说明第二服务器正在执行数据库中的任务,以避免数据库的任务显示被执行中,但是第二服务器又没有执行的情况。
在一实施例中,上述将任务添加至数据库的待处理表中的步骤S3之后,包括:
S31,检查第二服务器的第一标志位的值是否为第一预设值;
S32,若第二服务器的第一标志位的值不为第一预设值,则删除预设数据和第二标志位,并通过集群服务器重新向数据库表插入预设数据。
在上述步骤S31中,由于在将任务添加至待处理表之前,第二服务器向数据库表中插入了预设数据,以及数据库存在第二标志位,则说明由第二服务器执行待处理表中的所有任务,而第二标志位表示数据库的任务正在被执行中,但数据库的任务正在被执行不能代表第二服务器一定正在执行数据库的任务,也可能出现第二服务器宕机的情况,所以在将任务添加至待处理表后,集群中其他服务器会通过发送Http请求,以查询第二服务器的第一标志位的赋值是否为第一预设值,避免第二服务器宕机而导致任务被搁置。优选地,为了避免出现查询结果延迟,发送3次Http请求以查询第二服务器的第一标志位的赋值,3次能保证查询结果准确又能减少线程资源的占用。
在上述步骤S32中,当第二标志位存在,而第一标志位的赋值不是第一预设值,即待处理表中有任务被执行,但第一服务器又处于未执行任务的状态,可以说明第一服务器故障,因此,删除第二标志位和数据库表中的预设数据,以告知集群服务器,当前没有服务器正在执行任务,集群服务器则查询待处理表中是否存在任务,若存在,向数据库表中插入相同的预设数据,基于数据库表的唯一约束,只有一台服务器向数据库表成功插入预设数据,并由该服务器执行待处理表中的任务,执行时,向数据库读取任务对应的任务数据,从而在第二服务器宕机后,也能从集群中的其他服务器选出一台服务器继续执行待处理表的任务。
在一实施例中,上述通过第二服务器依次执行待处理表中的所有任务的步骤S4之后,包括:
S41,检查第二服务器是否执行完待处理表中的所有任务;
S42,若是,则通过第二服务器将第二服务器的第一标志位赋值为第二预设值,第一标志位赋值为第二预设值用于标识第二服务器处于待机状态;
S43,删除预设数据和第二标志位。
在上述步骤S41中,在第二服务器每执行完一个任务时,第二服务器会查询待处理表中是否还有任务,若有,则继续执行任务,若没有,则判定第二服务器执行完待处理表中的所有任务。
在上述步骤S42和步骤S43中,在第二服务器执行完待处理表中的所有任务后,说明当前没有任务需要被执行了,则将第二服务器的第一标志位赋值为第二预设值,例如running=false或running=0,以及第二服务器或负载调度器向数据库发送指令以让数据库删除数据库表中的预设数据和数据库的第二标志位,以避免第二服务器一直占用线程资源而导致内存增大。
在一实施例中,检查第二服务器是否执行完待处理表中的所有任务的步骤S41之后,还包括:
S44,若第二服务器执行完待处理表中的所有任务,则检查第二标志位和第二服务器的第一标志位是否出现异常,异常包括数据库存在第二标志位,但第二服务器的第一标志位的赋值为第二预设值,或者数据库不存在第二标志位,但第二服务器的第一标志位的赋值为第一预设值;
S45,若出现异常,则第二服务器的第一标志位赋值为第二预设值、删除第二标志位和删除预设数据。
在上述步骤S44中,在第二服务器执行完待处理表中的所有任务后,第二服务器会将其第一标志位赋值为第二预设值,以及删除预设数据和第二标志位,但是第二服务器可能在标志位赋值和删除数据阶段出现宕机而导致标志位赋值或数据异常,所以集群中的其他服务器通过发送Http请求,以查询第一标志位和第二标志位的状态,并检查第一标志位和第二标志位是否出现以下异常:数据库存在第二标志位但第二服务器的第一标志位的赋值为第二预设值,或数据库不存在第二标志位但第一标志位的赋值为第一预设值,若出现上述异常,则说明未完成清理预设数据或数据库的第二标志位,或者说明未完成修改第一标志位的赋值。
在上述步骤S45中,为了集群服务器能够正常运行,将第二服务器的第一标志位赋值为第二预设值、删除第二标志位和/或删除预设数据。具体地,如果异常为数据库存在第二标志位但第二服务器的第一标志位的赋值为第二预设值,则删除数据库的第二标志位和预设数据;如果异常为数据库不存在第二标志位但第二服务器的第一标志位的赋值为第一预设值,则将第一标志位赋值为第二预设值。
在一实施例中,上述判断数据库表的其他行是否存在预设数据的步骤S2之后,包括:
S21,若数据库表的其他行不存在预设数据,则判定第一服务器向数据库表成功插入预设数据,并通过第一服务器执行任务;
S22,通过第一服务器将第一服务器的第一标志位值为第一预设值,第一标志位用于标识第二服务器的工作状态,第一标志位值为第一预设值用于标识第一服务器正在执行任务;
S23,添加数据库的第二标志位,第二标志位用于标识任务正在被执行。
在上述步骤S21、S22和S23中,基于数据库表的唯一约束,若第一服务器向数据库表成功插入预设数据,则说明在第一服务器之前集群中没有服务器向数据库表成功插入预设数据,此时,由第一服务器执行任务,并标识第一服务器正在执行任务和该任务正在被执行,以避免集群中的其他服务器重新执行该任务;进一步地,对于后续加入的任务,将其添加至待处理表,并由第一服务器执行待处理表中的所有任务。
在一实施例中,上述通过第二服务器依次执行待处理表中的所有任务的步骤S4之后,还包括:
S5,检查是否接收到新的任务以及检查待处理表中是否存在任务;
S6,若均否,则将第三标志位赋值为第三预设值,第三标志位关联集群中的所有线程,线程包括循环线程和非循环线程,第三标志位赋值为第三预设值用于控制线程退出;
S7,基于第三标志位的赋值为第三预设值,退出非循环线程,以及控制非循环线程的循环结束并退出循环线程,以释放线程资源。
在上述步骤S5至步骤S7中,集群服务器可以通过发送Http请求以查询服务器的第一标志位是否为第一预设值,以及数据库的第二标志位是否存在,若服务器的第一标志位赋值不是第一预设值以及数据库的第二标志位不存在,说明当前集群中没有服务器正在执行任务,也没有新的任务需要被执行(即没有接收到新的任务),则将第三标志位的值为第三预设值,进而退出集群的所有线程,以减少线程资源的占用,避免线程一直在运行而导致超负载;具体地,如配置一个boolean类型的第三标志位exit并将其值赋值为默认值false:public volatile boolean exit = false;再将第三标志位关联所有线程,如关联循环线程while:while
(!exit)。当满足第一标志位赋值为第二预设值running=false,且数据库的标志位不存在时,将第三标志位赋值为第三预设值:thread.exit = true,进而控制线程退出:thread.join(); System.out.println(“线程退出!”)。
参照图2,本申请一实施例中集群服务器执行任务的装置,包括:
插入模块1,用于集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,第一服务器为集群服务器池中的任意一台服务器,数据库表设有主键,预设数据为不同于主键的数据;
判断模块2,用于基于数据库表的唯一约束,判断数据库表的其他行是否存在预设数据,其中唯一约束为规定数据库表中任意两行都不允许有相同的数据;
第一添加模块3,用于若数据库表的其他行存在预设数据,则判定第一服务器向数据库表未成功插入预设数据,并将任务添加至数据库的待处理表中,数据库表与待处理表为关联表;
第一执行模块4,用于根据向待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行待处理表中的所有任务,第二服务器为在第一服务器之前已经向数据库表成功插入预设数据的唯一服务器。
在上述插入模块1中,上述数据库表为关系型数据库中设有主键(primary
key)的表,数据库例如Oracle数据库。上述主键为数据库表中的一个或多个字段,其值用于唯一地表示表中的某一条记录,其中每条记录均有若干个属性。例如数据库表为任务表,包含任务编号、任务名称、任务处理状态等,其中每个任务的任务编号是唯一的,则任务编号就为主键,任务编号的具体数值就为主键ID;由于数据库表设有主键,则必然存在主键约束,所以上述主键为自增长主键,以避免出现主键冲突而导致无法加入任务的数据,例如,当集群接收到新任务时,将新任务的数据加入到数据库表时,任务编号为主键,则主键ID+1(即任务编号+1)以作为该新任务的唯一标识。上述插入(insert)预设数据的方式可为通过结构化查询语言(Structured Query Language,SQL)对数据库表进行插入操作。在本实施例中,当任务编号为1(主键ID为1)的任务需要被执行时,集群中的负载调度器向服务器池中的任一空闲服务器发送调用请求(将该服务器记为服务器A),服务器A向数据库表中的指定行(如任务编号为1的任务所在的行)插入预设数据(由于任务主键从“1”开始,所以预设数据如“0”与主键不同),此时,由于主键不能为空,所以预设数据不能作为主键插入数据库表中,但为了保证只有一个相同的预设数据成功插入数据库表,则预设数据可以作为唯一键插入数据库表;进一步地,对于集群后续接收到的一个任务(主键ID为2),也是由负载调度器向服务器池中的任一空闲服务器发送调用请求(将该服务器记为服务器B),并且服务器B也向数据库表中的指定行(如任务编号为2的任务所在的行)插入相同的预设数据(如上述预设数据“0”),此时,服务器A已经向数据库表成功插入预设数据,由于数据库表的唯一约束(唯一键约束),则服务器B无法向数据库表成功插入预设数据,从而保证只有一台服务器能够向数据库表成功插入预设数据。
在上述判断模块2中,上述唯一约束(唯一键约束)用来限制不受主键约束的列上的数据唯一性,其规定表中任意两行在指定列上都不允许有相同的值,但允许空(NULL)。数据库根据各服务器向数据库表插入预设数据的时间先后不同,判定只有最先向数据库表插入预设数据的服务器插入成功,例如,集群中有服务器“A、B、C”,它们几乎同时分别接收到任务编号为“1、2、3”的任务请求,若服务器“A”最先向数据库表中的任务编号为1的任务所在的行插入预设数据“0”,则服务器“A”向数据库表成功插入预设数据,而当服务器“B”或“C”也分别向数据库表中的任务编号为2的任务所在的行、任务编号为3的任务所在的行插入预设数据“0”时,由于数据库表的唯一约束,预设数据“0”与先前服务器“A”插入的预设数据重复,无法唯一标识,所以服务器“B”或“C”插入数据“0”失败,所以只能有一台服务器能够成功插入预设数据。
在上述第一添加模块3中,当第一服务器向数据库表插入预设数据失败时,则说明在第一服务器向数据库表插入预设数据之前,就已经有服务器成功向数据库表插入了预设数据。为了后续接收到的任务也能按照时间先后顺序正常被执行,则将任务添加至待处理表。进一步地,数据库表为任务表,可以将任务表的任务编号(主键ID)作为待处理表的外键添加至待处理表,即任务表关联待处理表,任务表为主键表,而待处理表相对于任务表来说是外键表。由于任务编号为主键ID,其在任务表中是唯一的,则将任务编号添加到待处理表,任务编号在待处理表中也是唯一的,所以当第二服务器执行待处理表中的任务时,不会出现重复执行的情况;以及任务编号顺序就是任务被执行的时间顺序,所以第二服务器可以按照任务编号顺序依次执行待处理表中的任务,从而避免要求按照时间先后顺序的每个任务不会被重复或并行执行执行,进而减少线程资源的占用,提高任务的执行效率。
在上述第一执行模块4中,上述第二服务器执行待处理表中的任务时,从数据库中读取上述任务的任务编号对应的任务数据,而不是将任务数据保存在服务器的内存中,从而避免服务器在执行任务过程中出现宕机而导致任务未被执行完成时,避免集群中的其他服务器无法获取到未被执行完成的任务来重新执行,保证在服务器执行任务过程出现单点故障时,其他服务器能够从数据库中读取到未被执行完成的任务以重新执行。在一实施例中,第二服务器每执行完一个待处理表中的任务,则删除待处理表中的该任务的任务编号以及清除数据库中该任务的任务数据,以减少内存的占用。
在一实施例中,上述装置还包括:
第一赋值模块,用于通过第二服务器将第二服务器的第一标志位赋值为第一预设值,第一标志位用于标识第二服务器的工作状态,第一标志位赋值为第一预设值用于标识第二服务器正在处理待处理表中的任务;
第二添加模块,用于添加数据库的第二标志位,第二标志位用于标识任务正在被执行。
在上述第一赋值模块中,在第二服务器开始执行任务时,将第二服务器的第一标志位赋值为第一预设值,例如running=true或running=1,以将第二服务器的处理状态标识为正在执行。当其他任务需要被执行时,以便于查询到第二服务器当前处于执行任务的状态,无法立即执行其他任务,进而等待第一服务器执行完当前任务后再执行下一任务,从而实现依次执行需要按时间先后顺序执行的任务。
在上述第二添加模块中,添加数据库的第二标志位,以表示当前数据库表中的任务正在被执行,从而集群中的服务器通过查询第二标志位来获取任务是否被执行,当第二标志位存在时,则其他服务器不再获取该任务,进而不会出现该任务被重复执行的情况。在一实施例中,集群中的服务器会检查数据库中的任务是否被执行,即检查数据库的第二标志位是否存在,若存在,则说明数据库中的任务正在被执行中,再检查第二服务器是否真的正在执行任务,即检查第二服务器的第一标志位是否为第一预设值,若是第一预设值,则说明第二服务器正在执行数据库中的任务,以避免数据库的任务显示被执行中,但是第二服务器又没有执行的情况。
在一实施例中,上述装置还包括:
第一检查模块,用于检查第二服务器的第一标志位的值是否为第一预设值;
第一删除模块,用于若第二服务器的第一标志位的值不为第一预设值,则删除预设数据和第二标志位,并通过集群服务器重新向数据库表插入预设数据。
在上述第一检查模块中,由于在将任务添加至待处理表之前,第二服务器向数据库表中插入了预设数据,以及数据库存在第二标志位,则说明由第二服务器执行待处理表中的所有任务,而第二标志位表示数据库的任务正在被执行中,但数据库的任务正在被执行不能代表第二服务器一定正在执行数据库的任务,也可能出现第二服务器宕机的情况,所以在将任务添加至待处理表后,集群中其他服务器会通过发送Http请求,以查询第二服务器的第一标志位的赋值是否为第一预设值,避免第二服务器宕机而导致任务被搁置。优选地,为了避免出现查询结果延迟,发送3次Http请求以查询第二服务器的第一标志位的赋值,3次能保证查询结果准确又能减少线程资源的占用。
在上述第一删除模块中,当第二标志位存在,而第一标志位的赋值不是第一预设值,即待处理表中有任务被执行,但第一服务器又处于未执行任务的状态,可以说明第一服务器故障,因此,删除第二标志位和数据库表中的预设数据,以告知集群服务器,当前没有服务器正在执行任务,集群服务器则查询待处理表中是否存在任务,若存在,向数据库表中插入相同的预设数据,基于数据库表的唯一约束,只有一台服务器向数据库表成功插入预设数据,并由该服务器执行待处理表中的任务,执行时,向数据库读取任务对应的任务数据,从而在第二服务器宕机后,也能从集群中的其他服务器选出一台服务器继续执行待处理表的任务。
在一实施例中,上述装置还包括:
第二检查模块,用于检查第二服务器是否执行完待处理表中的所有任务;
第二赋值模块,用于若是,则通过第二服务器将第二服务器的第一标志位赋值为第二预设值,第一标志位赋值为第二预设值用于标识第二服务器处于待机状态;
第二删除模块,用于删除预设数据和第二标志位。
在上述第二检查模块中,在第二服务器每执行完一个任务时,第二服务器会查询待处理表中是否还有任务,若有,则继续执行任务,若没有,则判定第二服务器执行完待处理表中的所有任务。
在上述第二赋值模块和第二删除模块中,在第二服务器执行完待处理表中的所有任务后,说明当前没有任务需要被执行了,则将第二服务器的第一标志位赋值为第二预设值,例如running=false或running=0,以及第二服务器或负载调度器向数据库发送指令以让数据库删除数据库表中的预设数据和数据库的第二标志位,以避免第二服务器一直占用线程资源而导致内存增大。
在一实施例中,上述装置还包括:
第三检查模块,用于若第二服务器执行完待处理表中的所有任务,则检查第二标志位和第二服务器的第一标志位是否出现异常,异常包括数据库存在第二标志位,但第二服务器的第一标志位的值为第二预设值,或者数据库不存在第二标志位,但第二服务器的第一标志位的值为第一预设值;
第三赋值模块,用于若出现异常,则将第二服务器的第一标志位赋值为第二预设值、删除第二标志位和删除预设数据。
在上述第三检查模块中,在第二服务器执行完待处理表中的所有任务后,第二服务器会将其第一标志位赋值为第二预设值,以及删除预设数据和第二标志位,但是第二服务器可能在标志位赋值和删除数据阶段出现宕机而导致标志位赋值或数据异常,所以集群中的其他服务器通过发送Http请求,以查询第一标志位和第二标志位的状态,并检查第一标志位和第二标志位是否出现以下异常:数据库存在第二标志位但第二服务器的第一标志位的赋值为第二预设值,或数据库不存在第二标志位但第一标志位的赋值为第一预设值,若出现上述异常,则说明未完成清理预设数据或数据库的第二标志位,或者说明未完成修改第一标志位的赋值。
在上述第三赋值模块中,为了集群服务器能够正常运行,将第二服务器的第一标志位赋值为第二预设值、删除第二标志位和/或删除预设数据。具体地,如果异常为数据库存在第二标志位但第二服务器的第一标志位的赋值为第二预设值,则删除数据库的第二标志位和预设数据;如果异常为数据库不存在第二标志位但第二服务器的第一标志位的赋值为第一预设值,则将第一标志位赋值为第二预设值。
在一实施例中,上述装置还包括:
第二执行模块,用于若数据库表的其他行不存在预设数据,则判定第一服务器向数据库表成功插入预设数据,并通过第一服务器执行任务;
第四赋值模块,用于通过第一服务器将第一服务器的第一标志位赋值为第一预设值,第一标志位用于标识第二服务器的工作状态,第一标志位赋值为第一预设值用于标识第一服务器正在执行任务;
第三添加模块,用于添加数据库的第二标志位,第二标志位用于标识任务正在被执行。
在上述第二执行模块、第四赋值模块和第三添加模块中,基于数据库表的唯一约束,若第一服务器向数据库表成功插入预设数据,则说明在第一服务器之前集群中没有服务器向数据库表成功插入预设数据,此时,由第一服务器执行任务,并标识第一服务器正在执行任务和该任务正在被执行,以避免集群中的其他服务器重新执行该任务;进一步地,对于后续加入的任务,将其添加至待处理表,并由第一服务器执行待处理表中的所有任务。
在一实施例中,上述装置还包括:
第四检查模块,用于检查是否接收到新的任务以及检查待处理表中是否存在任务;
第五赋值模块,用于若均否,则将第三标志位赋值为第三预设值,第三标志位关联集群中的所有线程,线程包括循环线程和非循环线程,第三标志位赋值为第三预设值用于控制线程退出;
退出模块,用于基于第三标志位的赋值为第三预设值,退出非循环线程,以及控制非循环线程的循环结束并退出循环线程,以释放线程资源。
在上述第四检查模块、第五赋值模块和退出模块中,集群服务器可以通过发送Http请求以查询服务器的第一标志位是否为第一预设值,以及数据库的第二标志位是否存在,若服务器的第一标志位赋值不是第一预设值以及数据库的第二标志位不存在,说明当前集群中没有服务器正在执行任务,也没有新的任务需要被执行(即没有接收到新的任务),则将第三标志位的赋值为第三预设值,进而退出集群的所有线程,以减少线程资源的占用,避免线程一直在运行而导致超负载;具体地,如配置一个boolean类型的第三标志位exit并将其值赋值为默认值false:public volatile boolean exit = false;再将第三标志位关联所有线程,如关联循环线程while:while
(!exit)。当满足第一标志位赋值为第二预设值running=false,且数据库的标志位不存在时,将第三标志位赋值为第三预设值:thread.exit = true,进而控制线程退出:thread.join(); System.out.println(“线程退出!”)。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该可读存储介质存储可以是易失性,也可以是非易失性。该可读存储介质存储有操作系统、计算机程序和数据库。该内存储器为可读存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库表等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序在执行时,执行如上述各方法的实施例的流程。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序在执行时,执行如上述各方法的实施例的流程。以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (20)
- 一种集群服务器执行任务的方法,其特征在于,包括:集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,所述第一服务器为集群服务器池中的任意一台服务器,所述数据库表设有主键,所述预设数据为不同于所述主键的数据;基于所述数据库表的唯一约束,判断所述数据库表的其他行是否存在所述预设数据,其中所述唯一约束为规定所述数据库表中任意两行都不允许有相同的数据;若所述数据库表的其他行存在所述预设数据,则判定所述第一服务器向所述数据库表未成功插入所述预设数据,并将所述任务添加至数据库的待处理表中,所述数据库表与所述待处理表存在关联关系;根据向所述待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行所述待处理表中的所有任务,所述第二服务器为在所述第一服务器之前已经向所述数据库表成功插入所述预设数据的唯一服务器。
- 根据权利要求1所述的集群服务器执行任务的方法,其特征在于,所述将所述任务添加至数据库的待处理表中的步骤之前,包括:通过所述第二服务器将所述第二服务器的第一标志位赋值为第一预设值,所述第一标志位用于标识所述第二服务器的工作状态,所述第一标志位赋值为第一预设值用于标识所述第二服务器正在处理所述任务;添加所述数据库的第二标志位,所述第二标志位用于标识所述任务正在被执行。
- 根据权利要求2所述的集群服务器执行任务的方法,其特征在于,所述将所述任务添加至数据库的待处理表中的步骤之后,包括:检查所述第二服务器的第一标志位的值是否为所述第一预设值;若所述第二服务器的第一标志位的值不为所述第一预设值,则删除所述预设数据和所述第二标志位,并通过集群服务器重新向所述数据库表插入所述预设数据。
- 根据权利要求2所述的集群服务器执行任务的方法,其特征在于,所述通过第二服务器依次执行所述待处理表中的所有任务的步骤之后,包括:检查所述第二服务器是否执行完所述待处理表中的所有任务;若是,则通过所述第二服务器将所述第二服务器的第一标志位赋值为第二预设值,所述第一标志位赋值为第二预设值用于标识所述第二服务器处于待机状态;删除所述预设数据和所述第二标志位。
- 根据权利要求4所述的集群服务器执行任务的方法,其特征在于,所述检查所述第二服务器是否执行完所述待处理表中的所有任务的步骤之后,还包括:若所述第二服务器执行完所述待处理表中的所有任务,则检查所述第二标志位和所述第二服务器的第一标志位是否出现异常,所述异常包括所述数据库存在所述第二标志位,但所述第二服务器的第一标志位的值为所述第二预设值,或者所述数据库不存在所述第二标志位,但所述第二服务器的第一标志位的值为所述第一预设值;若出现异常,则将所述第二服务器的第一标志位赋值为所述第二预设值、删除所述第二标志位和删除所述预设数据。
- 根据权利要求1所述的集群服务器执行任务的方法,其特征在于,所述判断所述数据库表的其他行是否存在所述预设数据的步骤之后,包括:若所述数据库表的其他行不存在所述预设数据,则判定所述第一服务器向所述数据库表成功插入所述预设数据,并通过所述第一服务器执行所述任务;通过所述第一服务器将所述第一服务器的第一标志位赋值为第一预设值,所述第一标志位用于标识所述第二服务器的工作状态,所述第一标志位赋值为第一预设值用于标识所述第一服务器正在执行所述任务;添加所述数据库的第二标志位,所述第二标志位用于标识所述任务正在被执行。
- 根据权利要求1所述的集群服务器执行任务的方法,其特征在于,所述通过第二服务器依次执行所述待处理表中的所有任务的步骤之后,还包括:检查是否接收到新的任务以及检查所述待处理表中是否存在任务;若均否,则将第三标志位赋值为第三预设值,所述第三标志位关联所述集群中的所有线程,所述线程包括循环线程和非循环线程,所述第三标志位赋值为第三预设值用于控制所述线程退出;基于所述第三标志位的赋值为所述第三预设值,退出所述非循环线程,以及控制所述非循环线程的循环结束并退出所述循环线程,以释放线程资源。
- 一种集群服务器执行任务的装置,其特征在于,包括:插入模块,用于集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,所述第一服务器为集群服务器池中的任意一台服务器,所述数据库表设有主键,所述预设数据为不同于所述主键的数据;判断模块,用于基于所述数据库表的唯一约束,判断所述数据库表的其他行是否存在所述预设数据,其中所述唯一约束为规定所述数据库表中任意两行都不允许有相同的数据;第一添加模块,用于若所述数据库表的其他行存在所述预设数据,则判定所述第一服务器向所述数据库表未成功插入所述预设数据,并将所述任务添加至数据库的待处理表中,所述数据库表与所述待处理表存在关联关系;第一执行模块,用于根据向所述待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行所述待处理表中的所有任务,所述第二服务器为在所述第一服务器之前已经向所述数据库表成功插入所述预设数据的唯一服务器。
- 如权利要求8所述的集群服务器执行任务的装置,其特征在于,所述装置还包括:第一赋值模块,用于通过所述第二服务器将所述第二服务器的第一标志位赋值为第一预设值,所述第一标志位用于标识所述第二服务器的工作状态,所述第一标志位赋值为第一预设值用于标识所述第二服务器正在处理所述任务;第二添加模块,用于添加所述数据库的第二标志位,所述第二标志位用于标识所述任务正在被执行。
- 如权利要求9所述的集群服务器执行任务的装置,其特征在于,所述装置还包括:第一检查模块,用于检查所述第二服务器的第一标志位的值是否为所述第一预设值;第一删除模块,用于若所述第二服务器的第一标志位的值不为所述第一预设值,则删除所述预设数据和所述第二标志位,并通过集群服务器重新向所述数据库表插入所述预设数据。
- 如权利要求9所述的集群服务器执行任务的装置,其特征在于,所述装置还包括:第二检查模块,用于检查所述第二服务器是否执行完所述待处理表中的所有任务;第二赋值模块,用于若是,则通过所述第二服务器将所述第二服务器的第一标志位赋值为第二预设值,所述第一标志位赋值为第二预设值用于标识所述第二服务器处于待机状态;第二删除模块,用于删除所述预设数据和所述第二标志位。
- 如权利要求11所述的集群服务器执行任务的装置,其特征在于,所述装置还包括:第三检查模块,用于若所述第二服务器执行完所述待处理表中的所有任务,则检查所述第二标志位和所述第二服务器的第一标志位是否出现异常,所述异常包括数据库存在所述第二标志位,但所述第二服务器的第一标志位的值为所述第二预设值,或者所述数据库不存在所述第二标志位,但所述第二服务器的第一标志位的值为所述第一预设值;第三赋值模块,用于若出现异常,则将所述第二服务器的第一标志位赋值为所述第二预设值、删除所述第二标志位和删除所述预设数据。
- 如权利要求8所述的集群服务器执行任务的装置,其特征在于,所述装置还包括:第二执行模块,用于若所述数据库表的其他行不存在所述预设数据,则判定所述第一服务器向所述数据库表成功插入所述预设数据,并通过所述第一服务器执行所述任务;第四赋值模块,用于通过所述第一服务器将所述第一服务器的第一标志位赋值为第一预设值,所述第一标志位用于标识所述第二服务器的工作状态,所述第一标志位赋值为第一预设值用于标识所述第一服务器正在执行所述任务;第三添加模块,用于添加所述数据库的第二标志位,所述第二标志位用于标识所述任务正在被执行。
- 如权利要求8所述的集群服务器执行任务的装置,其特征在于,所述装置还包括:第四检查模块,用于检查是否接收到新的任务以及检查所述待处理表中是否存在任务;第五赋值模块,用于若均否,则将第三标志位赋值为第三预设值,所述第三标志位关联集群中的所有线程,所述线程包括循环线程和非循环线程,所述第三标志位赋值为第三预设值用于控制所述线程退出;退出模块,用于基于所述第三标志位的赋值为所述第三预设值,退出所述非循环线程,以及控制所述非循环线程的循环结束并退出所述循环线程,以释放线程资源。
- 一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现集群服务器执行任务的方法,该集群服务器执行任务的方法,包括:集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,所述第一服务器为集群服务器池中的任意一台服务器,所述数据库表设有主键,所述预设数据为不同于所述主键的数据;基于所述数据库表的唯一约束,判断所述数据库表的其他行是否存在所述预设数据,其中所述唯一约束为规定所述数据库表中任意两行都不允许有相同的数据;若所述数据库表的其他行存在所述预设数据,则判定所述第一服务器向所述数据库表未成功插入所述预设数据,并将所述任务添加至数据库的待处理表中,所述数据库表与所述待处理表存在关联关系;根据向所述待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行所述待处理表中的所有任务,所述第二服务器为在所述第一服务器之前已经向所述数据库表成功插入所述预设数据的唯一服务器。
- 如权利要求15所述的计算机设备,其特征在于,所述将所述任务添加至数据库的待处理表中的步骤之前,包括:通过所述第二服务器将所述第二服务器的第一标志位赋值为第一预设值,所述第一标志位用于标识所述第二服务器的工作状态,所述第一标志位赋值为第一预设值用于标识所述第二服务器正在处理所述任务;添加所述数据库的第二标志位,所述第二标志位用于标识所述任务正在被执行。
- 如权利要求16所述的计算机设备,其特征在于,所述将所述任务添加至数据库的待处理表中的步骤之后,包括:检查所述第二服务器的第一标志位的值是否为所述第一预设值;若所述第二服务器的第一标志位的值不为所述第一预设值,则删除所述预设数据和所述第二标志位,并通过集群服务器重新向所述数据库表插入所述预设数据。
- 一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现集群服务器执行任务的方法,该集群服务器执行任务的方法,包括:集群接收到任务后,通过第一服务器向数据库表中的指定行插入预设数据,其中,所述第一服务器为集群服务器池中的任意一台服务器,所述数据库表设有主键,所述预设数据为不同于所述主键的数据;基于所述数据库表的唯一约束,判断所述数据库表的其他行是否存在所述预设数据,其中所述唯一约束为规定所述数据库表中任意两行都不允许有相同的数据;若所述数据库表的其他行存在所述预设数据,则判定所述第一服务器向所述数据库表未成功插入所述预设数据,并将所述任务添加至数据库的待处理表中,所述数据库表与所述待处理表存在关联关系;根据向所述待处理表中添加各个任务时的先后顺序,通过第二服务器依次执行所述待处理表中的所有任务,所述第二服务器为在所述第一服务器之前已经向所述数据库表成功插入所述预设数据的唯一服务器。
- 如权利要求18所述的计算机可读存储介质,其特征在于,所述处理器将所述任务添加至数据库的待处理表中的步骤之前,包括:通过所述第二服务器将所述第二服务器的第一标志位赋值为第一预设值,所述第一标志位用于标识所述第二服务器的工作状态,所述第一标志位赋值为第一预设值用于标识所述第二服务器正在处理所述任务;添加所述数据库的第二标志位,所述第二标志位用于标识所述任务正在被执行。
- 如权利要求19所述的计算机可读存储介质,其特征在于,所述处理器将所述任务添加至数据库的待处理表中的步骤之后,包括:检查所述第二服务器的第一标志位的值是否为所述第一预设值;若所述第二服务器的第一标志位的值不为所述第一预设值,则删除所述预设数据和所述第二标志位,并通过集群服务器重新向所述数据库表插入所述预设数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910300268.X | 2019-04-15 | ||
CN201910300268.XA CN110134512B (zh) | 2019-04-15 | 2019-04-15 | 集群服务器执行任务的方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020211376A1 true WO2020211376A1 (zh) | 2020-10-22 |
Family
ID=67569953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2019/119564 WO2020211376A1 (zh) | 2019-04-15 | 2019-11-20 | 集群服务器执行任务的方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110134512B (zh) |
WO (1) | WO2020211376A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134512B (zh) * | 2019-04-15 | 2024-02-13 | 平安科技(深圳)有限公司 | 集群服务器执行任务的方法、装置、设备及存储介质 |
CN110990475B (zh) * | 2019-12-13 | 2023-09-08 | 深圳前海环融联易信息科技服务有限公司 | 批量任务插入方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2187695A1 (en) * | 2007-12-28 | 2010-05-19 | Huawei Technologies Co., Ltd. | Method, device and system for realizing task in cluster environment |
CN103345423A (zh) * | 2013-07-03 | 2013-10-09 | 北京京东尚科信息技术有限公司 | 一种处理异步任务的方法和系统 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
CN105373428A (zh) * | 2015-12-09 | 2016-03-02 | 北京奇虎科技有限公司 | 一种任务调度方法和系统 |
CN108334545A (zh) * | 2017-12-27 | 2018-07-27 | 微梦创科网络科技(中国)有限公司 | 一种实现异步服务的方法及装置 |
CN110134512A (zh) * | 2019-04-15 | 2019-08-16 | 平安科技(深圳)有限公司 | 集群服务器执行任务的方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980636B (zh) * | 2016-07-22 | 2020-04-03 | 平安科技(深圳)有限公司 | 保单数据处理方法和装置 |
CN109101528A (zh) * | 2018-06-21 | 2018-12-28 | 深圳市买买提信息科技有限公司 | 数据处理方法、数据处理装置及电子设备 |
CN108984639B (zh) * | 2018-06-22 | 2021-12-24 | 联想(北京)有限公司 | 服务器集群的数据处理方法和装置 |
-
2019
- 2019-04-15 CN CN201910300268.XA patent/CN110134512B/zh active Active
- 2019-11-20 WO PCT/CN2019/119564 patent/WO2020211376A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2187695A1 (en) * | 2007-12-28 | 2010-05-19 | Huawei Technologies Co., Ltd. | Method, device and system for realizing task in cluster environment |
CN103345423A (zh) * | 2013-07-03 | 2013-10-09 | 北京京东尚科信息技术有限公司 | 一种处理异步任务的方法和系统 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
CN105373428A (zh) * | 2015-12-09 | 2016-03-02 | 北京奇虎科技有限公司 | 一种任务调度方法和系统 |
CN108334545A (zh) * | 2017-12-27 | 2018-07-27 | 微梦创科网络科技(中国)有限公司 | 一种实现异步服务的方法及装置 |
CN110134512A (zh) * | 2019-04-15 | 2019-08-16 | 平安科技(深圳)有限公司 | 集群服务器执行任务的方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110134512A (zh) | 2019-08-16 |
CN110134512B (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020211579A1 (zh) | 一种基于分布式批量处理系统的处理方法、装置及系统 | |
WO2019019400A1 (zh) | 任务分布式处理方法、装置、存储介质和服务器 | |
KR20170132873A (ko) | 분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법 | |
JP2016541056A (ja) | ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置 | |
CN107203560B (zh) | 数据库、多数据库操作事务一致性保证方法及系统 | |
CN113656157B (zh) | 一种分布式任务调度方法、装置、存储介质及电子设备 | |
WO2020211376A1 (zh) | 集群服务器执行任务的方法、装置、设备及存储介质 | |
CN111488255A (zh) | 多线程并发监控方法、装置、设备及存储介质 | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
US9444885B2 (en) | Workflow processing in a distributed computing environment | |
US10318520B2 (en) | System and method for reducing communications overhead in a distributed transactions environment by modifying implementation of the transaction end function | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN112148480A (zh) | 基于多线程的任务处理方法、装置、设备及存储介质 | |
CN114090113B (zh) | 数据源处理插件动态加载的方法、装置、设备及存储介质 | |
US20120096303A1 (en) | Detecting and recovering from process failures | |
WO2020037896A1 (zh) | 人脸特征值提取方法、装置、计算机设备及存储介质 | |
CN107247784B (zh) | 一种分布式事务的控制方法及事务管理器 | |
US20150261860A1 (en) | Predicate execution in shared distributed computing environment | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
US11366799B2 (en) | Data locking method based on alternating row and column locks | |
JP5329589B2 (ja) | トランザクション処理システム及びトランザクション処理システムの動作方法 | |
CN115269136A (zh) | 一种异构多核平台分区操作系统安全调度方法及系统 | |
CN110633300A (zh) | 一种嵌套查询的断点续运行的方法及装置 | |
CN113342511A (zh) | 一种分布式任务管理系统及方法 | |
US9984096B2 (en) | System and method for reducing communications overhead in a distributed transactions environment by modifying implementation of the transaction start function |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19924878 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19924878 Country of ref document: EP Kind code of ref document: A1 |