CN106993019B - 分布式任务调度方法和系统 - Google Patents

分布式任务调度方法和系统 Download PDF

Info

Publication number
CN106993019B
CN106993019B CN201611076472.0A CN201611076472A CN106993019B CN 106993019 B CN106993019 B CN 106993019B CN 201611076472 A CN201611076472 A CN 201611076472A CN 106993019 B CN106993019 B CN 106993019B
Authority
CN
China
Prior art keywords
server
intermediate server
application server
application
job
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
Application number
CN201611076472.0A
Other languages
English (en)
Other versions
CN106993019A (zh
Inventor
熊杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
OneConnect Smart Technology Co Ltd
Original Assignee
OneConnect Smart Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by OneConnect Smart Technology Co Ltd filed Critical OneConnect Smart Technology Co Ltd
Priority to CN201611076472.0A priority Critical patent/CN106993019B/zh
Priority to PCT/CN2017/091101 priority patent/WO2018099067A1/zh
Publication of CN106993019A publication Critical patent/CN106993019A/zh
Application granted granted Critical
Publication of CN106993019B publication Critical patent/CN106993019B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

本发明提出了一种分布式任务调度系统,所述系统包括:应用服务器,所述应用服务器有多个,用于与中间服务器建立TCP连接,将IP地址和Job信息注册到所述中间服务器,执行被分配的子任务;中间服务器,所述中间服务器有多个,用于管理应用服务器;分布式协调服务器,用于部署Zookeeper,与所述中间服务器建立连接,由所述Zookeeper统一对所述中间服务器进行协调。通过引入多个中间服务器来管理应用服务器,分布式协调服务器中部署的Zookeeper只需要对中间服务器进行协调,大大减少了Zookeeper的负担,且可以实现了动态扩充应用服务器。

Description

分布式任务调度方法和系统
技术领域
本发明涉及计算机处理领域,特别是涉及一种分布式任务调度方法和系统。
背景技术
分布式任务调度,是指将一个应用或者业务划分出的多个任务交由多个服务器进行处理。分布式任务调度可解决单个服务器资源不足等问题,达到大规模数据计算的目的。传统的分布式框架有很多,例如,Quartz、Zookeeper等技术都可以实现分布式任务调度。其中,Quartz的集群方式是利用数据库的锁,同一时间只允许有一台服务器能拿到锁执行任务,没有利用集群的优势并行执行,处理的速度比较慢。Zookeeper是分布式应用程序协调服务,其对数据进行分片,分配给多个应用服务器去执行处理,实现了并行执行,从而提升了处理速度。但是由于Zookeeper往往需要管理很多应用服务器,每个任务开始及结束的记录也都需要写入Zookeeper,造成Zookeeper的负担比较重,而且如果要加入新的应用服务器,也需要在Zookeeper上进行操作,进一步加大了其负担,且不能实现应用服务器的动态扩充。
发明内容
基于此,有必要针对上述问题,提出一种能够减少Zookeeper的负担且可以动态进行应用服务器扩充的分布式任务调度的方法和系统。
一种分布式任务调度系统,所述系统包括:应用服务器,所述应用服务器有多个,用于与中间服务器建立TCP连接,将IP地址和Job信息注册到所述中间服务器;中间服务器,所述中间服务器有多个,用于管理应用服务器,获取所述应用服务器注册的IP地址和Job信息,将具有相同Job信息的应用服务器划分为一个Job群组,在该Job群组中的多个应用服务器中选举出一个leader应用服务器,并将对应的任务配置信息和Job群组内的各个应用服务器的IP地址下发到该leader应用服务器;所述leader应用服务器用于根据所述任务配置信息中的分片数将任务进行拆分,并根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配;所述应用服务器还用于执行被分配的子任务;分布式协调服务器,用于部署Zookeeper,与所述中间服务器建立连接,由所述Zookeeper统一对所述中间服务器进行协调。
在其中一个实施例中,所述中间服务器还用于根据所述Job信息查找实际管理该Job的目标中间服务器,将所述目标中间服务器的地址返回给所述应用服务器;所述应用服务器还用于根据所述目标中间服务器的地址与所述目标中间服务器建立TCP连接。
在其中一个实施例中,所述中间服务器还用于监控Job群组中的应用服务器的上线或下线,当Job群组中有应用服务器上线或下线时,指示Job群组中的leader应用服务器将对应的任务进行重新分配,并接收所述leader应用服务器返回的新的分配结果。
在其中一个实施例中,所述分布式协调服务器还用于通过Zookeeper在多个中间服务器中选举出一个leader中间服务器;所述leader中间服务器还用于实时监控集群中其他中间服务器节点,若发现有中间服务器掉线,则为所述掉线的中间服务器管理的Job群组分配给一个在线的中间服务器来接管,并在所述Job群组中设置migrate节点,所述migrate节点用于标注Job群组的迁移状态,当迁移完成后,删除该migrate节点;所述中间服务器还用于实时监控Job群组下的migrate节点,若发现所述migrate节点的IP地址和自身的相同,则接管所述migrate节点所在的Job群组。
在其中一个实施例中,所述leader中间服务器还用于若监控到有中间服务器掉线,则判断所述掉线的中间服务器是否正在接管Job群组,若是,则为该Job群组重新分配接管的中间服务器。
在其中一个实施例中,所述应用服务器还用于根据所述Job信息判断是否到达任务的执行时间,若是,则从管理该应用服务器的中间服务器中获取对应的分片信息,根据所述分片信息开始执行对应的子任务,并将任务开始执行的信息记录到中间服务器。
在其中一个实施例中,所述系统还包括:数据库,用于存储Job信息,接收中间服务器发送的任务开始及结束的记录并进行存储。
一种分布式任务调度方法,所述方法包括:应用服务器向中间服务器发起TCP连接请求,所述中间服务器根据所述TCP连接请求与所述应用服务器建立TCP连接;所述应用服务器向所述中间服务器注册该应用服务器的IP地址和Job信息;所述中间服务器获取所述应用服务器注册的IP地址和Job信息,将具有相同Job信息的应用服务器划分为同一个Job群组,在该Job群组中的多个应用服务器中选举出一个leader应用服务器,将所述Job信息对应的任务配置信息和Job群组内的各个应用服务器的IP地址下发到所述leader应用服务器;所述leader应用服务器根据所述任务配置信息中的分片数将任务进行拆分,并根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配。
在其中一个实施例中,在所述中间服务器获取所述应用服务器注册的IP地址和Job信息的步骤之后还包括:所述中间服务器根据所述Job信息查找实际管理该Job的目标中间服务器,将所述目标中间服务器的地址返回给应用服务器;所述应用服务器根据所述目标中间服务器的地址和所述目标中间服务器建立TCP连接。
在其中一个实施例中,所述方法还包括:所述中间服务器监控Job群组中的应用服务器的上线或下线,当Job群组中有应用服务器上线或下线时,指示Job群组中的leader应用服务器将对应的任务进行重新分配;所述leader应用服务器按照所述指示根据Job群组中当前在线的应用服务器数量将所述任务进行重新分配,并将分配结果返回给所述中间服务器。
上述分布式任务调度方法和系统,通过引入多个中间服务器来管理应用服务器,分布式协调服务器中部署的Zookeeper只需要对中间服务器进行协调,由于应用服务器由中间服务器来管理,任务的开始以及结束的记录都只需要写入中间服务器,而不需要写入Zookeeper,减少了Zookeeper的负担,且一个中间服务器可以管理多个应用服务器,Zookeeper只需要对少量的中间服务器进行协调管理即可,大大减少了Zookeeper的负担,进一度的,由于由中间服务器来管理应用服务器,如果需要扩充应用服务器,只需要在中间服务器中进行注册即可,不需要在Zookeeper进行操作,从而实现了能够动态扩充应用服务器的目的。
附图说明
图1为一个实施例中分布式任务调度系统的架构图;
图2为一个实施例中Zookeeper的目录结构图;
图3为另一个实施例中分布式任务调度系统的架构图;
图4为一个实施例中分布式任务调度方法流程图;
图5为另一个实施例中分布式任务调度方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提出了一种分布式任务调度系统,该系统包括:应用服务器102,中间服务器104和分布式协调服务器106;其中,
应用服务器102,应用服务器有多个,用于与中间服务器建立TCP连接,将IP地址和Job信息注册到中间服务器。
在本实施例中,应用服务器102有多个,应用服务器是具体执行任务的服务器,由于是和客户端直接交互的,也称为“客户端应用服务器”。应用服务器102与中间服务器104建立TCP连接后,将该应用服务器102的IP地址和Job信息注册到中间服务器106。其中,Job信息包括任务配置信息、任务标识、任务执行时间等,任务标识用来唯一标识一个任务,可以是任务的编号,如图1中所示,其中一个应用服务器102中包括Job1,Job2,Job3。其中,Job1,Job2,Job3分别代表不同的任务。在本实施例中,为了能够快速执行任务,一般是将一个任务拆分为多个子任务,然后分配给多个应用服务器106来并行执行的,每个应用服务器106只需要执行被分配的子任务即可。
中间服务器104,中间服务器有多个,用于管理应用服务器,获取应用服务器注册的IP地址和Job信息,将具有相同Job信息的应用服务器划分为一个Job群组,在该Job群组中的多个应用服务器中选举出一个leader应用服务器,并将对应的任务配置信息和Job群组内的各个应用服务器的IP地址下发到该leader应用服务器;该leader应用服务器根据任务配置信息中的分片数将任务进行拆分,并根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配。
在本实施例中,中间服务器104也有多个,但是比应用服务器102的数量少很多,中间服务器用于管理应用服务器,首先,中间服务器104获取应用服务器102注册的IP地址和Job信息,然后将具有相同Job信息的应用服务器划分为一个Job群组,比如,如果应用服务器1和应用服务器2以及应用服务器3都具有相同的Job1,那么该Job1群组中就包括应用服务器1、2和3。然后,在Job群组中的多个应用服务器中选举出一个leader应用服务器,一般是将最早接入该中间服务器的应用服务器作为leader应用服务器,将该Job信息对应的任务配置信息和群组内的多个应用服务器的IP地址都下发到该leader应用服务器,由该leader应用服务器进行任务的拆分及分配,其中,任务配置信息包括任务的分片数以及对应的分片算法。需要说明的是,虽然leader应用服务器中的Job信息中本身包括任务配置信息,但是Job的任务配置信息是可以通过后台来动态进行修改的,而中间服务器能够从后台获取到最新的Job任务配置信息,所以在选举出leader应用服务器后,中间服务器会将最新的Job任务配置信息下发到leader应用服务器,以便leader应用服务器可以根据该最新的任务配置信息进行分片。
具体的,leader应用服务器根据任务配置信息中的分片数将任务进行拆分,然后根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配。比如,任务配置信息中任务的分片数为6个,那么leader应用服务器就按照对应的分片算法将任务拆分为6个子任务,然后分配给Job群组内的应用服务器,包括leader应用服务器本身。其中,应用服务器IP地址用来唯一标识一个应用服务器。具体的,比如,6个子任务分别为0,1,2,3,4,5;当前Job群组中包括leader应用服务器在内有3个应用服务器,分别为Server1,Server2,Server3,其中,假设Server1为leader应用服务器。子任务的分配可以采用轮循的方法、也可以采用顺序的分配方法,还可以是其他分配方法,这里并不对分配的方法作限定。不管是哪种分配方法,leader应用服务器一般是尽量做到平均分配,将6个子任务分配给3台应用服务器,即每个应用服务器分配2个子任务,比如,以顺序的分配方法为例,将0和1分配给Server1;2和3分配给Server2;4和5分配给Server3。由于系统中是采用IP地址来区分不同的应用服务器的,所以任务的分配结果是以群组名、子任务编号与IP地址进行对应存储的。比如,将Job1群组中的子任务0和1与Server1的IP地址进行存储,将Job1群组中的子任务2和3与Server2的IP地址进行存储,将Job1群组中的子任务4和5与Server3的IP地址进行存储。
应用服务器102还用于执行被分配的子任务。
在本实施例中,leader应用服务器按照任务配置信息中的分片数进行拆分,然后将拆分后的子任务分配给Job群组中的应用服务器,即将哪个分片分给哪个应用服务器来执行,最终是由应用服务器102来执行被分配的子任务。分布式协调服务器106,用于部署Zookeeper,与中间服务器建立连接,由Zookeeper统一对中间服务器进行协调。
在本实施例中,Zookeeper是一个分布式应用程序协调服务,部署在分布式协调服务器106中,通过与中间服务器建立连接来对中间服务器进行协调。中间服务器有多个,Zookeeper在该多个中间服务器中选择出一个leader中间服务器,由该leader中间服务器来监控其他中间服务器,当发现其他某个中间服务器掉线或故障时,则将该中间服务器负责管理的群组重新分配给其他中间服务器来接管。与此同时,其他中间服务器同时监控该leader中间服务器,一旦该leader中间服务器故障或掉线,则触发集群重新选举leader中间服务器。这样,通过这种监控规则,可以有效的保证在某个中间服务器故障或掉线的情况下,应用服务器可以正常的进行任务的执行。
在本实施例中,通过引入多个中间服务器来管理应用服务器,分布式协调服务器中部署的Zookeeper只需要对中间服务器进行协调,由于应用服务器由中间服务器来管理,任务的开始以及结束的记录都只需要写入中间服务器,而不需要写入Zookeeper,减少了Zookeeper的负担,且一个中间服务器可以管理多个应用服务器,也就是说,Zookeeper只需要对少量的中间服务器进行协调管理即可,大大减少了Zookeeper的负担,进一度的,由于由中间服务器来管理应用服务器,如果需要扩充应用服务器,只需要在中间服务器中进行注册即可,不需要在Zookeeper进行操作,不但能够减少Zookeeper的负担,也能够实现动态扩充应用服务器的目的。
在一个实施例中,中间服务器104还用于根据Job信息查找实际管理该Job信息的目标中间服务器,将目标中间服务器的地址返回给应用服务器;应用服务器还用于根据目标中间服务器的地址与目标中间服务器建立TCP连接。
在本实施例中,不同的中间服务器管理不同的Job信息。中间服务器接收到应用服务器注册的Job信息后,首先,在自身的列表中查找该Job信息是否存在,即判断该Job信息是否是由该中间服务器来管理的,若没有查找到,则需要查找实际管理该Job信息的中间服务器,即目标中间服务器,获取该目标中间服务器的IP地址,然后将该目标中间服务器的IP地址返回给应用服务器,应用服务器接收到返回的目标中间服务器的IP地址后,根据该IP地址与目标中间服务器建立TCP连接,然后申请加入对应的Job群组。此外,由于每个应用服务器中有多个Job,如图1中所示的,其中一个应用服务器中包括Job1,Job2,Job3,而Job1,Job2,Job3可能由不同的中间服务器来管理,这样就会导致一个应用服务器需要同时维持多个TCP通道。为了避免应用服务器同时维持多个TCP通道,将同一类Job优先交由同一个中间服务器来管理,如图1所示,同一个应用服务器的Job由同一个中间服务器管理。
在一个实施例中,中间服务器104还用于监控Job群组中的应用服务器的上线或下线,当Job群组中有应用服务器上线或下线时,指示Job群组中的leader应用服务器将对应的任务进行重新分配,接收leader应用服务器返回的新的分配结果。
在本实施例中,中间服务器104还用于监控其维护的Job群组中的应用服务器的上线或下线,当有新的应用服务器加入该Job群组时,中间服务器104指示Job群组中的leader应用服务器将对应的任务进行重新分配,即将子任务也同时分配给该新加入的应用服务器进行处理。当Job群组中有应用服务器由于故障或网络等问题掉线时,中间服务器104也需要指示leader应用服务器将对应的任务进行重新分配。比如,最初Job群组中有3台应用服务器,任务分为10个片,分配结果如下:{Server1:[0,1,2],Server2:[3,4,5],Server 3:[6,7,8,9]},如果一台应用服务器崩溃,则重新分配如下:{Server1:[0,1,2,3,4],Server2:[5,6,7,8,9]}。如果新增一台应用服务器,则重新分配如下:{Server1:[0,1],Server2:[2,3],Server3:[4,5,6],Server4:[7,8,9]}。leader应用服务器将最新分配的情况更新到中间服务器。
在一个实施例中,分布式协调服务器106还用于通过Zookeeper在多个中间服务器中选举出一个leader中间服务器;所述leader中间服务器用于实时监控集群中其他中间服务器节点,若发现有中间服务器掉线,则为该掉线的中间服务器管理的群组重新分配给一个中间服务器来接管,并在群组中设置migrate(迁移)节点,所述migrate(迁移)节点用于标注Job群组的迁移状态,当迁移完成后,删除该migrate(迁移)节点;所述中间服务器还用于实时监控群组下的migrate节点,若发现migrate节点的IP地址和自身的相同,则接管该migrate节点所在的群组。
在本实施例中,部署有Zookeeper的分布式协调服务器106通过Zookeeper在多个中间服务器中选举出一个leader中间服务器,如图2所示,为一个实施例中Zookeeper的目录结构示意图,图2种左边为管理中间服务器的中间服务器根节点以及下面的中间服务器节点(包括leader中间服务器节点)。右边为Job群组的根节点以及对应的Job群组节点,还有Job群组节点下的子节点,子节点包括owner(主)节点,migrate(迁移)节点和modified(修改)节点。在本实施例中,将该leader中间服务器作为分布式集群的leader节点,该leader节点用于实时监控其他中间服务器节点(如图2中的中间服务器1节点,中间服务器2节点),若发现有中间服务器掉线,则为掉线的中间服务器管理的Job群组重新分配一个中间服务器来接管,并在该Job群组中设置migrate(迁移)节点,该migrate节点用于标注Job群组的迁移状态,当迁移完成后,删除该migrate节点。其他中间服务器实时监控Job群组下的migrate节点,若发现migrate节点的IP地址和自身的相同,则接管该migrate节点所在的群组,其中,migrate节点的IP地址就是重新为该群组分配的中间服务器的IP地址。
此外,如图2所示,在Job群组下有一个owner节点,该owner节点用于标识该Job群组有哪台中间服务器管理,leader中间服务器监听此节点,当管理该Job群组的中间服务器掉线后,重新分配一个中间服务器接管并在将要被接管的Job群组下设置migrate节点,其中,该migrate节点用于标注Job群组的迁移状态。进一步的,为了能够在不重启中间服务器的情况下,动态的修改Job群组的任务配置信息,当Job群组的任务配置信息被修改后,在该Job群组中设置modified(修改)节点,由管理该Job群组的中间服务器实时的监控modified节点,当发现配置信息变更时,通知该群组中的leader应用服务器,然后删除此节点。
在一个实施例中,leader中间服务器还用于若监控到有中间服务器掉线,则判断掉线的中间服务器是否正在接管群组,若是,则为该群组重新分配接管的中间服务器。
在本实施例中,leader中间服务器若监控到某个中间服务器掉线,除了要在该中间服务器当前管理的Job群组下设置migrate节点,还要查找掉线的该中间服务器是否正在接管其他群组,若是,则为其他群组重新分配接管的中间服务器。具体的,参考图2,在leader中间服务器监控到某个中间服务器掉线后,遍历群组下的migrate节点,若migrate节点所在的群组对应的接管中间服务器的IP地址与该掉线的中间服务器IP地址相同,则重新为该migrate节点所在的群组分配接管的中间服务器。
在一个实施例中,应用服务器102还用于根据Job信息判断是否到达任务的执行时间,若是,则从管理该应用服务器的中间服务器中获取对应的分片信息,根据所述分片信息开始执行对应的子任务,并将任务开始执行的信息记录到中间服务器。
在本实施例中,每个Job群组的leader应用服务器将任务进行分片并分配给对应的中间服务器后,然后将分片结果,即具体分为几片,每一片由那个应用服务器来执行等情况发送到管理该群组的中间服务器。当应用服务器根据自身中的Job信息判断该任务到达执行时间后,从管理该应用服务器的中间服务器中获取对应的分片信息,其中,Job信息包括执行该任务的时间设置;分片信息是指该应用服务器需要执行的分片编号,比如,执行分片0和1。那么该应用服务器就会根据该分片信息执行对应的子任务,并将任务开始执行的信息记录到中间服务器。
如图3所示,在一个实施例中,上述分布式任务调度系统还包括:数据库108,用于存储Job信息,接收中间服务器发送的任务开始及结束的记录并进行存储。
在本实施例中,分布式任务调度系统中还包括数据库108,该数据库用于存储Job信息,即存储每个任务对应的任务配置信息。还用于记录每个任务开始及结束的状态,后台可以通过管控平台来查看每个任务的状态,也可以通过该管控平台手动的对Job的任务配置信息进行修改。
如图4所示,在一个实施例中,提出了一种分布式任务调度方法,该方法包括:
步骤402,应用服务器向中间服务器发起TCP连接请求,中间服务器根据所述TCP连接请求与所述应用服务器建立TCP连接。
在本实施例中,首先,应用服务器向中间服务器发送建立TCP连接的请求,中间服务器接收到该TCP连接请求后,与该应用服务器建立TCP连接。
步骤404,应用服务器向中间服务器注册该应用服务器的IP地址和Job信息。
在本实施例中,应用服务器与中间服务器建立TCP连接后,应用服务器将自身的IP地址和Job信息注册到中间服务器,其中,Job信息包括任务配置信息、任务标识、任务执行时间等。应用服务器的IP地址用于唯一标识该应用服务器。
步骤406,中间服务器获取所述应用服务器注册的IP地址和Job信息,将具有相同Job信息的应用服务器划分为同一个Job群组,在该Job群组中的多个应用服务器中选举出一个leader应用服务器,将所述Job信息对应的任务配置信息和Job群组内的各个应用服务器的IP地址下发到所述leader应用服务器。
在本实施例中,在本实施例中,中间服务器也有多个,但是比应用服务器的数量少很多,中间服务器用于管理应用服务器,首先,中间服务器获取应用服务器注册的IP地址和Job信息,然后将具有相同Job信息的应用服务器划分为一个Job群组,比如,如果应用服务器1和应用服务器2以及应用服务器3都具有相同的Job1,那么该Job1群组中就包括应用服务器1、2和3。然后,在Job群组中的多个应用服务器中选举出一个leader应用服务器,一般是将最早接入该中间服务器的应用服务器作为leader应用服务器,将该Job信息对应的任务配置信息和Job群组内的多个应用服务器的IP地址都下发到该leader应用服务器。
步骤408,leader应用服务器根据所述任务配置信息中的分片数将任务进行拆分,并根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配。
在本实施例中,由leader应用服务器进行任务的拆分及分配,其中,任务配置信息包括任务的分片数以及对应的分片算法。具体的,leader应用服务器根据任务配置信息中的分片数将任务进行拆分,然后根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配。比如,任务配置信息中任务的分片数为6个,那么leader应用服务器就按照对应的分片算法将任务拆分为6个子任务,然后分配给Job群组内的应用服务器,包括leader应用服务器本身。其中,应用服务器IP地址用来唯一标识一个应用服务器。子任务的分配可以采用轮循的方法,也可以采用顺序分配的方法,当然也可以采用其他的分配方法,比如,随机分配方法。以轮循分配方法为例,假设Job群组中有3台应用服务器,该Job任务分为6个分片,分别为0,1,2,3,4,5;将6个分片按照轮循的方法进行分配,将分片0分给第一台应用服务器,分片1分配给第二台应用服务器,分片2分配给第三台应用服务器;然后再将3分给第一台应用服务器,依次循环类推,最终,将分片0和3分配给了第一台应用服务器,分片1和4分配给了第二台应用服务器,分片2和5分配给了第三台应用服务器。由于系统中是采用IP地址来区分不同的应用服务器的,所以任务的分配结果是以群组名、子任务编号与IP地址进行对应存储的。比如,将Job1群组中的子任务0和3与Server1的IP地址进行存储,将Job1群组中的子任务1和4与Server2的IP地址进行存储,将Job1群组中的子任务2和5与Server3的IP地址进行存储。
在一个实施例中,在中间服务器获取所述应用服务器注册的IP地址和Job信息的步骤之后还包括:中间服务器根据所述Job信息查找实际管理该Job的目标中间服务器,将所述目标中间服务器的地址返回给应用服务器;所述应用服务器根据所述目标中间服务器的地址和所述目标中间服务器建立TCP连接。
在本实施例中,不同的中间服务器管理不同的Job信息。中间服务器接收到应用服务器注册的Job信息后,首先,在自身的列表中查找该Job信息是否存在,即判断该Job信息是否是由该中间服务器来管理的,若没有查找到,则需要查找实际管理该Job信息的中间服务器,即目标中间服务器,获取该目标中间服务器的IP地址,然后将该目标中间服务器的IP地址返回给应用服务器,应用服务器接收到返回的目标中间服务器的IP地址后,根据该IP地址与目标中间服务器建立TCP连接,然后申请加入对应的Job群组。
如图5所示,在一个实施例中,上述分布式任务调度的方法还包括:
步骤410,中间服务器监控Job群组中的应用服务器的上线或下线,当群组中有应用服务器上线或下线时,指示Job群组中的leader应用服务器将对应的任务进行重新分配。
在本实施例中,中间服务器还用于监控其维护的Job群组中的应用服务器的上线或下线,当有新的应用服务器加入该Job群组时,中间服务器指示Job群组中的leader应用服务器将对应的任务进行重新分配,即将子任务也同时分配给该新加入的应用服务器进行处理。当Job群组中有应用服务器由于故障或网络等问题掉线时,中间服务器也需要指示leader应用服务器将对应的任务进行重新分配。
步骤412,leader应用服务器按照所述指示根据Job群组中当前在线的应用服务器数量将所述任务进行重新分配,并将分配结果返回给所述中间服务器。
在本实施例中,leader应用服务器按照中间服务器的指示,根据Job群组中当前在线的应用服务器数量将任务进行重新分配,并将分配结果更新到中间服务器。具体的,比如,最初Job群组中有3台应用服务器,任务分为10个片,分配结果如下:{Server1:[0,1,2],Server2:[3,4,5],Server 3:[6,7,8,9]},如果一台应用服务器崩溃,则重新分配如下:{Server1:[0,1,2,3,4],Server 2:[5,6,7,8,9]}。如果新增一台应用服务器,则重新分配如下:{Server1:[0,1],Server2:[2,3],Server3:[4,5,6],Server4:[7,8,9]}。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种分布式任务调度系统,所述系统包括:
应用服务器,所述应用服务器有多个,用于与中间服务器建立TCP连接,将IP地址和Job信息注册到所述中间服务器;
中间服务器,所述中间服务器有多个,用于管理应用服务器,获取所述应用服务器注册的IP地址和Job信息,将具有相同Job信息的应用服务器划分为一个Job群组,在该Job群组中的多个应用服务器中选举出一个leader应用服务器,并将对应的任务配置信息和Job群组内的各个应用服务器的IP地址下发到该leader应用服务器;
所述leader应用服务器用于根据所述任务配置信息中的分片数将任务进行拆分,并根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配;
所述应用服务器还用于执行被分配的子任务;
分布式协调服务器,用于部署Zookeeper,与所述中间服务器建立连接,由所述Zookeeper统一对所述中间服务器进行协调;
其中,所述Job信息包括任务配置信息、任务标识以及任务执行时间。
2.根据权利要求1所述的系统,其特征在于,所述中间服务器还用于根据所述Job信息查找实际管理该Job信息所对应的任务的目标中间服务器,将所述目标中间服务器的地址返回给所述应用服务器;
所述应用服务器还用于根据所述目标中间服务器的地址与所述目标中间服务器建立TCP连接。
3.根据权利要求1所述的系统,其特征在于,所述中间服务器还用于监控Job群组中的应用服务器的上线或下线,当Job群组中有应用服务器上线或下线时,指示Job群组中的leader应用服务器将对应的任务进行重新分配,并接收所述leader应用服务器返回的新的分配结果。
4.根据权利要求1所述的系统,其特征在于,所述分布式协调服务器还用于通过Zookeeper在多个中间服务器中选举出一个leader中间服务器;
所述leader中间服务器还用于实时监控集群中其他中间服务器节点,若发现有中间服务器掉线,则为所述掉线的中间服务器管理的Job群组分配给一个在线的中间服务器来接管,并在所述Job群组中设置migrate节点,所述migrate节点用于标注Job群组的迁移状态,当迁移完成后,删除该migrate节点;
所述中间服务器还用于实时监控Job群组下的migrate节点,若发现所述migrate节点的IP地址和自身的相同,则接管所述migrate节点所在的Job群组;其中,所述migrate节点的IP地址为重新为该群组分配的中间服务器的IP地址。
5.根据权利要求4所述的系统,其特征在于,所述leader中间服务器还用于若监控到有中间服务器掉线,则判断所述掉线的中间服务器是否正在接管Job群组,若是,则为该Job群组重新分配接管的中间服务器。
6.根据权利要求1所述的系统,其特征在于,所述应用服务器还用于根据所述Job信息判断是否到达任务的执行时间,若是,则从管理该应用服务器的中间服务器中获取对应的分片信息,根据所述分片信息开始执行对应的子任务,并将任务开始执行的信息记录到中间服务器。
7.根据权利要求1-6任一所述的系统,其特征在于,所述系统还包括:
数据库,用于存储Job信息,接收中间服务器发送的任务开始及结束的记录并进行存储。
8.一种分布式任务调度方法,所述方法包括:
应用服务器向中间服务器发起TCP连接请求,所述中间服务器根据所述TCP连接请求与所述应用服务器建立TCP连接;
所述应用服务器向所述中间服务器注册该应用服务器的IP地址和Job信息;其中,所述Job信息包括任务配置信息、任务标识以及任务执行时间;
所述中间服务器获取所述应用服务器注册的IP地址和Job信息,将具有相同Job信息的应用服务器划分为同一个Job群组,在该Job群组中的多个应用服务器中选举出一个leader应用服务器,将所述Job信息对应的任务配置信息和Job群组内的各个应用服务器的IP地址下发到所述leader应用服务器;
所述leader应用服务器根据所述任务配置信息中的分片数将任务进行拆分,并根据Job群组内的各个应用服务器的IP地址将拆分后的子任务进行分配;
分布式协调服务器,用于部署Zookeeper,与所述中间服务器建立连接,由所述Zookeeper统一对所述中间服务器进行协调。
9.根据权利要求8所述的方法,其特征在于,在所述中间服务器获取所述应用服务器注册的IP地址和Job信息的步骤之后还包括:
所述中间服务器根据所述Job信息查找实际管理该Job信息所对应的任务的目标中间服务器,将所述目标中间服务器的地址返回给应用服务器;
所述应用服务器根据所述目标中间服务器的地址和所述目标中间服务器建立TCP连接。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述中间服务器监控Job群组中的应用服务器的上线或下线,当Job群组中有应用服务器上线或下线时,指示Job群组中的leader应用服务器将对应的任务进行重新分配;
所述leader应用服务器按照所述指示根据Job群组中当前在线的应用服务器数量将所述任务进行重新分配,并将分配结果返回给所述中间服务器。
CN201611076472.0A 2016-11-29 2016-11-29 分布式任务调度方法和系统 Active CN106993019B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611076472.0A CN106993019B (zh) 2016-11-29 2016-11-29 分布式任务调度方法和系统
PCT/CN2017/091101 WO2018099067A1 (zh) 2016-11-29 2017-06-30 分布式任务调度方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611076472.0A CN106993019B (zh) 2016-11-29 2016-11-29 分布式任务调度方法和系统

Publications (2)

Publication Number Publication Date
CN106993019A CN106993019A (zh) 2017-07-28
CN106993019B true CN106993019B (zh) 2019-11-19

Family

ID=59414280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611076472.0A Active CN106993019B (zh) 2016-11-29 2016-11-29 分布式任务调度方法和系统

Country Status (2)

Country Link
CN (1) CN106993019B (zh)
WO (1) WO2018099067A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107562522A (zh) * 2017-10-12 2018-01-09 国电南瑞科技股份有限公司 一种基于ZooKeeper的分布式应用管理方法
CN109933422A (zh) * 2017-12-19 2019-06-25 北京京东尚科信息技术有限公司 处理任务的方法、装置、介质及电子设备
CN109995842B (zh) * 2018-01-02 2022-12-02 北京奇虎科技有限公司 一种用于分布式服务器集群的分组方法及装置
CN108717379B (zh) * 2018-05-08 2023-07-25 平安证券股份有限公司 电子装置、分布式任务调度方法及存储介质
CN108829505A (zh) * 2018-06-28 2018-11-16 北京奇虎科技有限公司 一种分布式调度系统及方法
CN108958920B (zh) * 2018-07-13 2021-04-06 众安在线财产保险股份有限公司 一种分布式任务调度方法及系统
CN109032796B (zh) * 2018-07-18 2020-12-22 北京京东金融科技控股有限公司 一种数据处理方法和装置
CN109088947A (zh) * 2018-09-29 2018-12-25 北京奇虎科技有限公司 基于分层传输的数据分发系统、方法及服务器
CN111163117B (zh) * 2018-11-07 2023-01-31 北京京东尚科信息技术有限公司 一种基于Zookeeper的对等式调度方法和装置
CN111158896A (zh) * 2018-11-08 2020-05-15 中国移动通信集团上海有限公司 一种分布式进程调度方法及系统
CN111198753A (zh) * 2018-11-16 2020-05-26 北京京东尚科信息技术有限公司 任务调度方法和装置
CN110287228B (zh) * 2019-05-20 2022-08-23 广西电网有限责任公司 基于电网调度域设备监测实时数据采集的实现方法
CN110233886B (zh) * 2019-05-30 2021-07-20 华南理工大学 一种面向海量微服务的高可用服务治理系统及实现方法
CN110673933A (zh) * 2019-08-15 2020-01-10 平安普惠企业管理有限公司 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质
CN110532096B (zh) * 2019-08-28 2022-12-30 深圳市云存宝技术有限公司 一种多节点分组并行部署的系统和方法
CN110928662B (zh) * 2019-11-28 2022-09-09 国网信息通信产业集团有限公司 一种面向微服务架构的分布式定时任务调度器
CN111147291B (zh) * 2019-12-18 2024-02-06 深圳前海微众银行股份有限公司 一种服务维护方法及装置
CN113760485A (zh) * 2020-07-16 2021-12-07 北京沃东天骏信息技术有限公司 定时任务的调度方法、装置、设备及存储介质
CN112118291B (zh) * 2020-08-13 2022-11-18 北京思特奇信息技术股份有限公司 一种业务流量的负载均衡系统和方法
CN112231098A (zh) * 2020-09-29 2021-01-15 北京三快在线科技有限公司 任务处理方法、装置、设备及存储介质
CN114020408A (zh) * 2021-10-28 2022-02-08 北京沃东天骏信息技术有限公司 一种任务分片配置方法及装置、设备、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521044A (zh) * 2011-12-30 2012-06-27 北京拓明科技有限公司 一种基于消息中间件的分布式任务调度方法及系统
CN104869154A (zh) * 2015-04-27 2015-08-26 江务学 统筹资源可信度与用户满意度的分布式资源调度方法
CN105187327A (zh) * 2015-08-14 2015-12-23 广东能龙教育股份有限公司 一种分布式消息队列中间件
CN105589756A (zh) * 2014-12-03 2016-05-18 中国银联股份有限公司 批处理集群系统以及方法
CN106020940A (zh) * 2015-03-31 2016-10-12 国际商业机器公司 用于确定数据集的放置的存储层级的方法和系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8584131B2 (en) * 2007-03-30 2013-11-12 International Business Machines Corporation Method and system for modeling and analyzing computing resource requirements of software applications in a shared and distributed computing environment
US9122535B2 (en) * 2011-11-22 2015-09-01 Netapp, Inc. Optimizing distributed data analytics for shared storage
CN105095327A (zh) * 2014-05-23 2015-11-25 深圳市珍爱网信息技术有限公司 一种分布式etl系统及调度方法
CN105338028B (zh) * 2014-07-30 2018-12-07 浙江宇视科技有限公司 一种分布式服务器集群中主从节点选举方法及装置
CN105447097A (zh) * 2015-11-10 2016-03-30 北京北信源软件股份有限公司 数据采集方法及系统
CN105893497A (zh) * 2016-03-29 2016-08-24 杭州数梦工场科技有限公司 一种任务处理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521044A (zh) * 2011-12-30 2012-06-27 北京拓明科技有限公司 一种基于消息中间件的分布式任务调度方法及系统
CN105589756A (zh) * 2014-12-03 2016-05-18 中国银联股份有限公司 批处理集群系统以及方法
CN106020940A (zh) * 2015-03-31 2016-10-12 国际商业机器公司 用于确定数据集的放置的存储层级的方法和系统
CN104869154A (zh) * 2015-04-27 2015-08-26 江务学 统筹资源可信度与用户满意度的分布式资源调度方法
CN105187327A (zh) * 2015-08-14 2015-12-23 广东能龙教育股份有限公司 一种分布式消息队列中间件

Also Published As

Publication number Publication date
WO2018099067A1 (zh) 2018-06-07
CN106993019A (zh) 2017-07-28

Similar Documents

Publication Publication Date Title
CN106993019B (zh) 分布式任务调度方法和系统
CN108958920B (zh) 一种分布式任务调度方法及系统
WO2019090523A1 (zh) 一种无服务器架构下业务部署的方法和函数管理平台
CN108881512B (zh) Ctdb的虚拟ip均衡分配方法、装置、设备及介质
CN110941481A (zh) 资源调度方法、装置及系统
US10846185B2 (en) Method for processing acquire lock request and server
US11831562B2 (en) Distributed database-driven resource management and locking in a cloud native mobile core network node architecture
US8396968B2 (en) Information processor and resource scheduling method
CN112052068A (zh) 一种Kubernetes容器平台CPU绑核的方法与装置
EP3442201B1 (en) Cloud platform construction method and cloud platform
US10761869B2 (en) Cloud platform construction method and cloud platform storing image files in storage backend cluster according to image file type
CN108616424B (zh) 一种资源调度方法、计算机设备和系统
CN105744001B (zh) 分布式缓存系统扩容方法、数据访问方法及装置和系统
CN114070822B (zh) 一种Kubernetes Overlay IP地址管理方法
CN110798507B (zh) 一种dhcp地址分配记忆的方法与系统
CN111427670A (zh) 任务调度方法和系统
CN112860386A (zh) 分布式主从系统中节点的切换方法
CN106708608A (zh) 一种分布式锁服务方法、获取方法及相应装置
US20200133728A1 (en) Data based scheduling for horizontally scalable clusters
CN111163140A (zh) 资源获取和分配的方法、装置和计算机可读存储介质
CN112631727A (zh) 一种容器组pod的监控方法及装置
CN117453357A (zh) 节点任务调度方法、装置、计算机设备及存储介质
CN110113217B (zh) 微服务管理方法、装置、管理平台及存储介质
KR102124897B1 (ko) 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법
CN115037754A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180605

Address after: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant after: Shenzhen one ledger Intelligent Technology Co., Ltd.

Address before: 200000 Xuhui District, Shanghai Kai Bin Road 166, 9, 10 level.

Applicant before: Shanghai Financial Technologies Ltd

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 Room 201, building A, 1 front Bay Road, Shenzhen Qianhai cooperation zone, Shenzhen, Guangdong

Applicant after: Shenzhen one ledger Intelligent Technology Co., Ltd.

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant before: Shenzhen one ledger Intelligent Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant