CN105872073A - 一种基于etcd集群的分布式定时任务系统的设计方法 - Google Patents
一种基于etcd集群的分布式定时任务系统的设计方法 Download PDFInfo
- Publication number
- CN105872073A CN105872073A CN201610287542.0A CN201610287542A CN105872073A CN 105872073 A CN105872073 A CN 105872073A CN 201610287542 A CN201610287542 A CN 201610287542A CN 105872073 A CN105872073 A CN 105872073A
- Authority
- CN
- China
- Prior art keywords
- server
- configuration file
- timed task
- etcd cluster
- timed
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明属于定时任务系统领域,特别涉及一种基于etcd集群的分布式定时任务系统的设计方法。本发明的执行服务集群中的第二服务器通过共享同一个配置文件,采用竞争方式来完成一个定时任务,对于不同的定时任务,可以根据业务需求随时更新配置文件,并且直接用新的配置文件替换etcd集群中的配置文件,避免了配置文件逐一更新各个第二服务器的繁琐,第二服务器根据配置文件中的每个定时任务的时间点向etcd集群申请执行定时任务,当第二服务器执行所述定时任务的时间条件满足定时任务的时间点时,第二服务器申请执行定时任务,etcd集群检测到定时任务未被其它第二服务器申请,则申请成功。因此本发明保证了开发的分布式定时任务系统的高效性。
Description
技术领域
本发明属于定时任务系统领域,特别涉及一种基于etcd集群的分布式定时任务系统的设计方法。
背景技术
定时任务系统是一种按照指定策略周期性执行任务的业务应用系统,是业务应用系统中一个常见的组成部分,通常用于处理周期性的重复任务,定时任务系统被广泛应用于数据同步、数据预处理等领域中。
传统的定时任务系统通常在一台主机上,通过crontab等工具来实现定时任务的调度,但随着定时任务数量的增多,单机的处理能力已经成为定时任务处理能力的瓶颈,同时,单机系统还存在单点故障的隐患。
将定时任务系统扩展到一个分布式集群中是一种可行的改进的方法,但由于分布式集群实现起来非常复杂性,以至于分布式定时任务系统难以高效的开发,设计出的分布式定时任务系统的稳定性和可靠性都难以保证。
发明内容
本发明为了克服上述现有技术的不足,提供了一种基于etcd集群的分布式定时任务系统的设计方法,保证了开发的分布式定时任务系统的高效性。
为实现上述目的,本发明采用了以下技术措施:
一种基于etcd集群的分布式定时任务系统的设计方法,包括以下步骤:
S1、根据业务需求准备定时任务的配置文件;
S2、定时任务配置服务将所述配置文件存入etcd集群中的第一服务器,再由所述etcd集群将所述配置文件的存储路径传送至执行服务集群中的第二服务器;
S3、所述第二服务器按照所述存储路径从第一服务器中读取配置文件,并应用所述配置文件;
S4、需要更新配置文件时,直接用新的配置文件替换etcd集群中的配置文件;
S5、所述第二服务器监听配置文件的更新;
S6、所述第二服务器申请执行定时任务;
S7、当所述第二服务器申请到定时任务时,开始执行所述定时任务,并更新定时任务的申请状态至etcd集群中,增加当前定时任务的描述信息至新的配置文件中;否则,重复步骤S5。
步骤S5具体包括:
S51、所述第二服务器通过etcd集群中的Watch API监听配置文件的更新;
S52、所述第二服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监听配置文件的变更。
步骤S6具体包括:
S61、当第二服务器判定时间条件满足定时任务的时间点时,所述第二服务器申请执行定时任务;
S62、通过etcd集群中的checkAndSet API检测所述定时任务是否已被其它第二服务器申请;
S63、若所述定时任务已被申请,则定时任务申请失败,否则,定时申请成功。
优选的,所述配置文件为全局的配置文件,所述定时任务的配置信息均保存在配置文件中。
优选的,所述配置文件的格式为yaml格式。
进一步的,所述配置文件通过RESTful接口存入etcd集群中的第一服务器。
进一步的,所述存储路径为/crontab/config.yaml路径。
进一步的,所述描述信息包括所述第二服务器的编号、第二服务器所在主机名称、第二服务器的网络地址、第二服务器的端口号、定时任务的进程号、以及定时任务的启动时间。
更进一步的,所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通信连接。
更进一步的,每一个所述第一服务器可对应多个所述第二服务器。
本发明的有益效果在于:
1)、本发明的执行服务集群中的第二服务器通过共享同一个配置文件,采用竞争方式来完成一个定时任务,对于不同的定时任务,可以根据业务需求随时更新配置文件,并且直接用新的配置文件替换etcd集群中的配置文件,避免了配置文件逐一更新第二服务器的繁琐,保证了第二服务器读取到的配置文件的一致性,因此本发明保证了开发的分布式定时任务系统的高效性。
2)、所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通信连接,保证了etcd集群中的第一服务器能够同时同步地读取到配置文件;所述第二服务器按照所述存储路径从第一服务器中读取配置文件,并应用所述配置文件,有效的保证了读取配置文件的一致性。
3)、所述第二服务器通过etcd集群中的Watch API监听配置文件的更新,所述第二服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监听配置文件的变更,确保在配置文件更新后,第二服务器能够及时准确的变更自身的配置文件,使设计出的分布式定时任务系统具备更高的准确性和可靠性。
附图说明
图1为本发明的系统架构图;
图2为本发明的系统配置时序图。
图中的附图标记含义如下:
10—定时任务配置服务 20—etcd集群 30—执行服务集群
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,从系统架构角度来看,分布式定时任务系统主要由3部分组成,包括定时任务配置服务10、etcd集群20、执行服务集群30,它们分别用于系统的配置以及系统配置更新、存储系统配置以及定时任务状态、按照系统的配置内容执行定时任务。
如图1、2所示,从系统架构和功能实现两个方面来讨论分布式定时任务系统的设计实现。
S1、根据业务需求准备定时任务的配置文件;
所述配置文件用来描述分布式定时任务系统需要执行的定时任务的细节,所述配置文件中至少包含一个定时任务列表,每一条任务包括任务名称、crontab格式的定时任务描述等,配置文件格式可以为yaml格式、json格式、xml格式等,优选使用yaml格式。
为了更好的理解配置文件,表1为一个简化的配置文件,其中定义了两个定时任务。任务一的名称为mytask1,每隔1小时执行一次mycommand1;任务二的名称为mytask2,每天固定01:00时执行mycommand2。
表1:
S2、定时任务配置服务10将所述配置文件存入etcd集群20中的第一服务器,由所述etcd集群20将所述配置文件的存储路径传送至执行服务集群30中的第二服务器,所述存储路径为/crontab/config.yaml路径。
S3、所述第二服务器按照/crontab/config.yaml路径从第一服务器中读取配置文件,并应用所述配置文件。
如上述的配置文件,将在系统中创建两个定时任务。
S4、可以根据业务需求随时更新配置文件,需要更新配置文件时,直接用新的配置文件替换etcd集群20中的配置文件。
S5、所述第二服务器监听配置文件的更新;
所述第二服务器通过etcd集群20中的Watch API监听配置文件的更新;所述第二服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监听配置文件的变更,确保了在配置文件更新后,第二服务器能够及时准确的变更自身的配置文件。
S6、执行服务申请执行定时任务;
所述第二服务器根据所述配置文件中的每个定时任务的时间点向etcd集群20申请执行定时任务,当第二服务器执行所述定时任务的时间条件满足定时任务的时间点时,所述第二服务器申请执行定时任务,通过etcd集群20中的checkAndSet API检测所述定时任务是否已被其它第二服务器申请,若所述定时任务已被申请,则定时任务申请失败,否则,定时申请成功。
如任务一mytask1在2015年11月13日14:00时的任务,文件路径即为/crontab/mytask1/2015-11-13-14-00,根据etcd集群20的特性可以保证只有一个第二服务器会返回成功的结果。
当某一个第二服务器的负载较高时,可以考虑在步骤S2前,等待一段时间,这样可以让负载以较低的第二服务器优先申请到任务。
S7、当所述第二服务器申请到定时任务时,开始执行所述定时任务,并更新定时任务的申请状态至etcd集群10中,增加当前定时任务的描述信息至新的配置文件中;否则,重复步骤S5。
所述描述信息包括所述第二服务器的编号、第二服务器所在主机名称、第二服务器的网络地址、第二服务器的端口号、定时任务的进程号、以及定时任务的启动时间。
进一步,所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通信连接,且所述第一服务器之间的数据进行同步更新,即为在一个所述第一服务器取得所述配置文件的同时,其他所述第一服务器也同步取得配置文件的数据。
更进一步的,每一个所述第一服务器可对应多个所述第二服务器。
Claims (10)
1.一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于,包括以下步骤:
S1、根据业务需求准备定时任务的配置文件;
S2、定时任务配置服务(10)将所述配置文件存入etcd集群(20)中的第一服务器,再由所述etcd集群(20)将所述配置文件的存储路径传送至执行服务集群(30)中的第二服务器;
S3、所述第二服务器按照所述存储路径从第一服务器中读取配置文件,并应用所述配置文件;
S4、需要更新配置文件时,直接用新的配置文件替换etcd集群(20)中的配置文件;
S5、所述第二服务器监听配置文件的更新;
S6、所述第二服务器申请执行定时任务;
S7、当所述第二服务器申请到定时任务时,开始执行所述定时任务,并更新定时任务的申请状态至etcd集群(20)中,增加当前定时任务的描述信息至新的配置文件中;否则,重复步骤S5。
2.如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于,步骤S5具体包括:
S51、所述第二服务器通过etcd集群(20)中的Watch API监听配置文件的更新;
S52、所述第二服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监听配置文件的变更。
3.如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于,步骤S6具体包括:
S61、当第二服务器判定时间条件满足定时任务的时间点时,所述第二服务器申请执行定时任务;
S62、通过etcd集群(20)中的checkAndSet API检测所述定时任务是否已被其它第二服务器申请;
S63、若所述定时任务已被申请,则定时任务申请失败,否则,定时申请成功。
4.如权利要求2所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:所述配置文件为全局的配置文件,所述定时任务的配置信息均保存在配置文件中。
5.如权利要求4所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:所述配置文件的格式为yaml格式。
6.如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:所述配置文件通过RESTful接口存入etcd集群(20)中的第一服务器。
7.如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:所述存储路径为/crontab/config.yaml路径。
8.如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:所述描述信息包括所述第二服务器的编号、第二服务器所在主机名称、第二服务器的网络地址、第二服务器的端口号、定时任务的进程号、以及定时任务的启动时间。
9.如权利要求1~8任一项所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通信连接。
10.如权利要求9所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于:每一个所述第一服务器可对应多个所述第二服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610287542.0A CN105872073B (zh) | 2016-04-28 | 2016-04-28 | 一种基于etcd集群的分布式定时任务系统的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610287542.0A CN105872073B (zh) | 2016-04-28 | 2016-04-28 | 一种基于etcd集群的分布式定时任务系统的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105872073A true CN105872073A (zh) | 2016-08-17 |
CN105872073B CN105872073B (zh) | 2019-08-02 |
Family
ID=56629061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610287542.0A Active CN105872073B (zh) | 2016-04-28 | 2016-04-28 | 一种基于etcd集群的分布式定时任务系统的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105872073B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529682A (zh) * | 2016-10-28 | 2017-03-22 | 北京奇虎科技有限公司 | 一种在大数据集群中处理深度学习任务的方法和装置 |
CN107065616A (zh) * | 2017-05-08 | 2017-08-18 | 浙江风向标科技有限公司 | 联动控制方法及装置、计算机可读存储介质 |
CN109800068A (zh) * | 2018-12-20 | 2019-05-24 | 航天信息股份有限公司 | 处理定时任务的方法、系统、主服务器和定时任务服务器 |
CN112597131A (zh) * | 2020-12-25 | 2021-04-02 | 广州趣丸网络科技有限公司 | 一种分布式脚本控制方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140528A (zh) * | 2007-08-31 | 2008-03-12 | 中兴通讯股份有限公司 | 一种实现集群内定时任务负载均衡的方法、装置及系统 |
CN103647840A (zh) * | 2013-12-19 | 2014-03-19 | 深圳市青葡萄科技有限公司 | 一种对称式集群的分布式管理方法 |
US20140289733A1 (en) * | 2013-03-22 | 2014-09-25 | Palo Alto Research Center Incorporated | System and method for efficient task scheduling in heterogeneous, distributed compute infrastructures via pervasive diagnosis |
CN104536809A (zh) * | 2014-11-26 | 2015-04-22 | 上海瀚之友信息技术服务有限公司 | 一种基于客户端、服务器系统的分布式定时任务调度系统 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
-
2016
- 2016-04-28 CN CN201610287542.0A patent/CN105872073B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140528A (zh) * | 2007-08-31 | 2008-03-12 | 中兴通讯股份有限公司 | 一种实现集群内定时任务负载均衡的方法、装置及系统 |
US20140289733A1 (en) * | 2013-03-22 | 2014-09-25 | Palo Alto Research Center Incorporated | System and method for efficient task scheduling in heterogeneous, distributed compute infrastructures via pervasive diagnosis |
CN103647840A (zh) * | 2013-12-19 | 2014-03-19 | 深圳市青葡萄科技有限公司 | 一种对称式集群的分布式管理方法 |
CN104536809A (zh) * | 2014-11-26 | 2015-04-22 | 上海瀚之友信息技术服务有限公司 | 一种基于客户端、服务器系统的分布式定时任务调度系统 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529682A (zh) * | 2016-10-28 | 2017-03-22 | 北京奇虎科技有限公司 | 一种在大数据集群中处理深度学习任务的方法和装置 |
CN107065616A (zh) * | 2017-05-08 | 2017-08-18 | 浙江风向标科技有限公司 | 联动控制方法及装置、计算机可读存储介质 |
CN109800068A (zh) * | 2018-12-20 | 2019-05-24 | 航天信息股份有限公司 | 处理定时任务的方法、系统、主服务器和定时任务服务器 |
CN112597131A (zh) * | 2020-12-25 | 2021-04-02 | 广州趣丸网络科技有限公司 | 一种分布式脚本控制方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105872073B (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8301600B1 (en) | Failover recovery in a distributed data store | |
CN102404390B (zh) | 高速实时数据库的智能化动态负载均衡方法 | |
CN105100259B (zh) | 一种分布式定时任务执行方法和系统 | |
US9063790B2 (en) | System and method for performing distributed parallel processing tasks in a spot market | |
EP2648114B1 (en) | Method, system, token conreoller and memory database for implementing distribute-type main memory database system | |
US8756455B2 (en) | Synchronized failover for active-passive applications | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
US10127077B2 (en) | Event distribution pattern for use with a distributed data grid | |
US9201747B2 (en) | Real time database system | |
CN105872073A (zh) | 一种基于etcd集群的分布式定时任务系统的设计方法 | |
CN104408071A (zh) | 一种基于集群管理器的分布式数据库高可用方法及系统 | |
CN103312809A (zh) | 云平台中服务的分布式管理方法 | |
US20140059315A1 (en) | Computer system, data management method and data management program | |
CN114301972B (zh) | 一种基于云边协同的区块链节点分级部署方法和系统 | |
CN102983996A (zh) | 一种高可用集群资源管理的动态配置方法与系统 | |
CN102937964A (zh) | 基于分布式系统的智能数据服务方法 | |
CN106850269A (zh) | 一种云平台的管理系统 | |
CN105069152A (zh) | 数据处理方法及装置 | |
CN112631764A (zh) | 任务调度方法、装置、计算机设备和计算机可读介质 | |
CN111708659B (zh) | 一种基于kubernetes构建云原生容灾架构的方法 | |
CN105959078A (zh) | 一种集群时间同步方法、集群及时间同步系统 | |
CN104484228A (zh) | 基于Intelli-DSC的分布式并行任务处理系统 | |
CN105100185A (zh) | 事务中间件机器环境中处理数据库状态通知的系统和方法 | |
CN107800501A (zh) | 一种时间同步方法、装置及系统 | |
CN112231399A (zh) | 一种应用于图数据库的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |