一种基于etcd集群的分布式定时任务系统的设计方法

文档序号:10515719阅读:401来源:国知局
一种基于etcd集群的分布式定时任务系统的设计方法
【专利摘要】本发明属于定时任务系统领域,特别涉及一种基于etcd集群的分布式定时任务系统的设计方法。本发明的执行服务集群中的第二服务器通过共享同一个配置文件,采用竞争方式来完成一个定时任务,对于不同的定时任务,可以根据业务需求随时更新配置文件,并且直接用新的配置文件替换etcd集群中的配置文件,避免了配置文件逐一更新各个第二服务器的繁琐,第二服务器根据配置文件中的每个定时任务的时间点向etcd集群申请执行定时任务,当第二服务器执行所述定时任务的时间条件满足定时任务的时间点时,第二服务器申请执行定时任务,etcd集群检测到定时任务未被其它第二服务器申请,则申请成功。因此本发明保证了开发的分布式定时任务系统的高效性。
【专利说明】
-种基于etcd集群的分布式定时任务系统的设计方法
技术领域
[0001] 本发明属于定时任务系统领域,特别设及一种基于etcd集群的分布式定时任务系 统的设计方法。
【背景技术】
[0002] 定时任务系统是一种按照指定策略周期性执行任务的业务应用系统,是业务应用 系统中一个常见的组成部分,通常用于处理周期性的重复任务,定时任务系统被广泛应用 于数据同步、数据预处理等领域中。
[0003] 传统的定时任务系统通常在一台主机上,通过crontab等工具来实现定时任务的 调度,但随着定时任务数量的增多,单机的处理能力已经成为定时任务处理能力的瓶颈,同 时,单机系统还存在单点故障的隐患。
[0004] 将定时任务系统扩展到一个分布式集群中是一种可行的改进的方法,但由于分布 式集群实现起来非常复杂性,W至于分布式定时任务系统难W高效的开发,设计出的分布 式定时任务系统的稳定性和可靠性都难W保证。

【发明内容】

[0005] 本发明为了克服上述现有技术的不足,提供了一种基于etcd集群的分布式定时任 务系统的设计方法,保证了开发的分布式定时任务系统的高效性。
[0006] 为实现上述目的,本发明采用了 W下技术措施:
[0007] -种基于etcd集群的分布式定时任务系统的设计方法,包括W下步骤:
[000引S1、根据业务需求准备定时任务的配置文件;
[0009] S2、定时任务配置服务将所述配置文件存入etcd集群中的第一服务器,再由所述 etcd集群将所述配置文件的存储路径传送至执行服务集群中的第二服务器;
[0010] S3、所述第二服务器按照所述存储路径从第一服务器中读取配置文件,并应用所 述配置文件;
[0011] S4、需要更新配置文件时,直接用新的配置文件替换etcd集群中的配置文件;
[0012] S5、所述第二服务器监听配置文件的更新;
[0013] S6、所述第二服务器申请执行定时任务;
[0014] S7、当所述第二服务器申请到定时任务时,开始执行所述定时任务,并更新定时任 务的申请状态至etcd集群中,增加当前定时任务的描述信息至新的配置文件中;否则,重复 步骤S5。
[0015] 步骤S5具体包括:
[0016] S51、所述第二服务器通过etcd集群中的Watch API监听配置文件的更新;
[0017] S52、所述第二服务器应用新的配置文件配置自身,并重新调用所述Watch API继 续监听配置文件的变更。
[0018] 步骤S6具体包括:
[0019] S61、当第二服务器判定时间条件满足定时任务的时间点时,所述第二服务器申请 执行定时任务;
[0020] S62、通过etcd集群中的checkAndSet API检测所述定时任务是否已被其它第二服 务器申请;
[0021] S63、若所述定时任务已被申请,则定时任务申请失败,否则,定时申请成功。
[0022] 优选的,所述配置文件为全局的配置文件,所述定时任务的配置信息均保存在配 置文件中。
[0023] 优选的,所述配置文件的格式为yaml格式。
[0024] 进一步的,所述配置文件通过REST化1接口存入etcd集群中的第一服务器。
[00巧]进一步的,所述存储路径为/crontab/conf ig.yaml路径。
[0026] 进一步的,所述描述信息包括所述第二服务器的编号、第二服务器所在主机名称、 第二服务器的网络地址、第二服务器的端口号、定时任务的进程号、W及定时任务的启动时 间。
[0027] 更进一步的,所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通 信连接。
[00%]更进一步的,每一个所述第一服务器可对应多个所述第二服务器。
[0029] 本发明的有益效果在于:
[0030] 1)、本发明的执行服务集群中的第二服务器通过共享同一个配置文件,采用竞争 方式来完成一个定时任务,对于不同的定时任务,可W根据业务需求随时更新配置文件,并 且直接用新的配置文件替换etcd集群中的配置文件,避免了配置文件逐一更新第二服务器 的繁琐,保证了第二服务器读取到的配置文件的一致性,因此本发明保证了开发的分布式 定时任务系统的高效性。
[0031] 2)、所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通信连接,保 证了 etcd集群中的第一服务器能够同时同步地读取到配置文件;所述第二服务器按照所述 存储路径从第一服务器中读取配置文件,并应用所述配置文件,有效的保证了读取配置文 件的一致性。
[0032] 3)、所述第二服务器通过etcd集群中的Watch API监听配置文件的更新,所述第二 服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监听配置文件的变更, 确保在配置文件更新后,第二服务器能够及时准确的变更自身的配置文件,使设计出的分 布式定时任务系统具备更高的准确性和可靠性。
【附图说明】
[0033] 图1为本发明的系统架构图;
[0034] 图2为本发明的系统配置时序图。
[0035] 图中的附图标记含义如下:
[0036] 10-定时任务配置服务20-etcd集群30-执行服务集群
【具体实施方式】
[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0038] 如图1所示,从系统架构角度来看,分布式定时任务系统主要由3部分组成,包括定 时任务配置服务l〇、etcd集群20、执行服务集群30,它们分别用于系统的配置W及系统配置 更新、存储系统配置W及定时任务状态、按照系统的配置内容执行定时任务。
[0039] 如图1、2所示,从系统架构和功能实现两个方面来讨论分布式定时任务系统的设 计实现。
[0040] S1、根据业务需求准备定时任务的配置文件;
[0041] 所述配置文件用来描述分布式定时任务系统需要执行的定时任务的细节,所述配 置文件中至少包含一个定时任务列表,每一条任务包括任务名称、crontab格式的定时任务 描述等,配置文件格式可W为yaml格式、json格式、xml格式等,优选使用yaml格式。
[0042] 为了更好的理解配置文件,表1为一个简化的配置文件,其中定义了两个定时任 务。任务一的名称为111八曰341,每隔1小时执行一次mycommandl;任务二的名称为111八曰342,每 天固定01:00时执行mycommand2。
[0043] 表1:
[0044]
[0045] S2、定时任务配置服务10将所述配置文件存入etcd集群20中的第一服务器,由所 述etcd集群20将所述配置文件的存储路径传送至执行服务集群30中的第二服务器,所述存 储路径为/crontab/conf ig. yaml 路径。
[0046] S3、所述第二服务器按照/crontab/config.yaml路径从第一服务器中读取配置文 件,并应用所述配置文件。
[0047] 如上述的配置文件,将在系统中创建两个定时任务。
[004引 S4、可W根据业务需求随时更新配置文件,需要更新配置文件时,直接用新的配置 文件替换etcd集群20中的配置文件。
[0049] S5、所述第二服务器监听配置文件的更新;
[0050] 所述第二服务器通过etcd集群20中的Watch API监听配置文件的更新;所述第二 服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监听配置文件的变更, 确保了在配置文件更新后,第二服务器能够及时准确的变更自身的配置文件。
[0051] S6、执行服务申请执行定时任务;
[0052] 所述第二服务器根据所述配置文件中的每个定时任务的时间点向etcd集群20申 请执行定时任务,当第二服务器执行所述定时任务的时间条件满足定时任务的时间点时, 所述第二服务器申请执行定时任务,通过etcd集群20中的checkAndSet API检测所述定时 任务是否已被其它第二服务器申请,若所述定时任务已被申请,则定时任务申请失败,否 贝ij,定时申请成功。
[0053] 如任务一mytaskl在2015年11月13日14:00时的任务,文件路径即为/妊〇111曰6/ m5Ttaskl/2015-ll-13-14-00,根据etcd集群20的特性可W保证只有一个第二服务器会返回 成功的结果。
[0054] 当某一个第二服务器的负载较高时,可W考虑在步骤S2前,等待一段时间,运样可 W让负载W较低的第二服务器优先申请到任务。
[0055] S7、当所述第二服务器申请到定时任务时,开始执行所述定时任务,并更新定时任 务的申请状态至etcd集群10中,增加当前定时任务的描述信息至新的配置文件中;否则,重 复步骤S5。
[0056] 所述描述信息包括所述第二服务器的编号、第二服务器所在主机名称、第二服务 器的网络地址、第二服务器的端口号、定时任务的进程号、W及定时任务的启动时间。
[0057] 进一步,所述第一服务器设置为多个,两个所述第一服务器之间彼此双向通信连 接,且所述第一服务器之间的数据进行同步更新,即为在一个所述第一服务器取得所述配 置文件的同时,其他所述第一服务器也同步取得配置文件的数据。
[005引更进一步的,每一个所述第一服务器可对应多个所述第二服务器。
【主权项】
1. 一种基于etcd集群的分布式定时任务系统的设计方法,其特征在于,包括以下步骤: 51、 根据业务需求准备定时任务的配置文件; 52、 定时任务配置服务(10)将所述配置文件存入etcd集群(20)中的第一服务器,再由 所述etcd集群(20)将所述配置文件的存储路径传送至执行服务集群(30)中的第二服务器; 53、 所述第二服务器按照所述存储路径从第一服务器中读取配置文件,并应用所述配 置文件; 54、 需要更新配置文件时,直接用新的配置文件替换etcd集群(20)中的配置文件; 55、 所述第二服务器监听配置文件的更新; 56、 所述第二服务器申请执行定时任务; 57、 当所述第二服务器申请到定时任务时,开始执行所述定时任务,并更新定时任务的 申请状态至etcd集群(20)中,增加当前定时任务的描述信息至新的配置文件中;否则,重复 步骤S5。2. 如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征 在于,步骤S5具体包括: 551、 所述第二服务器通过etcd集群(20)中的Watch API监听配置文件的更新; 552、 所述第二服务器应用新的配置文件配置自身,并重新调用所述Watch API继续监 听配置文件的变更。3. 如权利要求1所述的一种基于etcd集群的分布式定时任务系统的设计方法,其特征 在于,步骤S6具体包括: 561、 当第二服务器判定时间条件满足定时任务的时间点时,所述第二服务器申请执行 定时任务; 562、 通过etcd集群(20)中的checkAndSet API检测所述定时任务是否已被其它第二服 务器申请; 563、 若所述定时任务已被申请,则定时任务申请失败,否则,定时申请成功。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集群的分布式定时任务系统的设计方法,其特征 在于:每一个所述第一服务器可对应多个所述第二服务器。
【文档编号】H04L29/08GK105872073SQ201610287542
【公开日】2016年8月17日
【申请日】2016年4月28日
【发明人】余保华, 刘春珲, 周春寅
【申请人】安徽四创电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1