CN118012584A - 一种应用于天翼云备份产品的分布式任务调度方法 - Google Patents
一种应用于天翼云备份产品的分布式任务调度方法 Download PDFInfo
- Publication number
- CN118012584A CN118012584A CN202311703095.9A CN202311703095A CN118012584A CN 118012584 A CN118012584 A CN 118012584A CN 202311703095 A CN202311703095 A CN 202311703095A CN 118012584 A CN118012584 A CN 118012584A
- Authority
- CN
- China
- Prior art keywords
- backup
- task
- scheduling
- service
- web service
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000015654 memory Effects 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
Classifications
-
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种应用于天翼云备份产品的分布式任务调度方法,包括:用户指定客户端并向Web服务发送创建备份计划指令;Web服务生成指定的versionID,并将指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点;Scheduler服务创建对应调度任务,记录所述对应调度任务的备份计划信息数据库;调度任务中备份计划到达执行时间,Scheduler服务调用Web服务的立即执行备份接口,并下发一个备份任务执行命令;Web服务通过RabbitMQ发送执行备份任务命令给指定客户端,指定客户端执行备份,并向Web服务发送备份完成的消息。本申请实现了备份任务稳定可靠的准时运行。
Description
技术领域
本申请涉及传统容灾备份,云灾备,任务调度等领域技术领域,特别涉及一种应用于天翼云备份产品的分布式任务调度方法。
背景技术
随着互联网的飞速发展,云计算已经是当今计算行业中不可缺少的关键部分,它的出现满足了众多企业信息化的需求。对于云服务提供商来说,在用户数量多、任务规模庞大的云环境中,高效且可靠地任务调度关系到业务处理的稳定运行与综合效率。任务调度是指在云计算环境中根据任务和资源的实际情况,将任务分配到合适的资源上进行执行的过程。
针对操作***的任务调度问题,目前已经有一些很成熟的算法,比如先来先服务调度算法、短作业优先调度算法、优先权调度算法、时间片轮转调度算法等。但是这些算法在分布式任务调度问题上存在着一些局限性。这些已有的调度算法都是基于单个节点的调度,而现在云环境下的执行节点具备高可用特性,往往是多个节点同时在对外提供服务,即分布式***。分布式架构的一个服务往往会部署多个冗余实例来运行业务,在这种分布式***环境下运行任务调度,称之为分布式任务调度。如何把任务分配到合适的节点去执行,成为分布式调度场景下需要解决的关键问题。
分布式***虽然实现了服务的高可用,但也面临如何在多个节点之间管理状态和共享数据的问题,特别是一些关键资源操作上,往往需要选出主节点去管理和协调成员。针对这种场景,目前常见的解决方案是可以使用keepalived、Ctdb等组件实现服务高可用,并对外只暴露一个虚拟IP提供服务。但是这种方式只适合对外提供服务的场景,而且在第三方库和客户端工具上支持较少。而Etcd采用Raft算法,是强一致性、高可用的key-value存储,且能够提供原子操作,所以基于Etcd实现的高可用是更理想的设计方案。
综上所述,针对云环境下的分布式备份任务调度场景,需要设计更加合适的任务调度策略,确保任务能够稳定可靠且高效地运行。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本申请的一个目的在于提出一种应用于天翼云备份产品的分布式任务调度方法、***、电子设备以及可读存储介质,可以实现备份任务稳定可靠的准时运行。
本申请公开的第一个方面,提供一种应用于天翼云备份产品的分布式任务调度方法,所述方法包括:
用户指定客户端并向Web服务发送为所述指定客户端创建备份计划指令,所述Web服务接收创建备份计划指令;
所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务;
所述Scheduler服务根据所述指定的versionID创建对应调度任务,记录所述对应调度任务的备份计划信息和指定的versionID到数据库DB并将所述对应调度任务到放入调度任务列队中;
所述对应调度任务中备份计划到达执行时间,所述Scheduler服务调用Web服务的立即执行备份接口,并下发一个备份任务执行命令;
所述Web服务通过RabbitMQ发送执行备份任务命令给所述指定客户端;
所述指定客户端通过RabbitMQ接收需要执行备份任务的消息并执行备份;
所述指定客户端完成备份并通过RabbitMQ向Web服务发送备份完成的消息;
Web服务接收所述完成备份的消息。
本申请公开的第二个方面,提供一种应用于天翼云备份产品的分布式任务调度***,所述***包括:
Web服务接收创建备份计划模块,用于用户选择指定客户端并向Web服务发送为所述指定客户端创建备份计划指令,所述Web服务接收创建备份计划指令;
发送模块,用于所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务实例作为主节点并绑定虚拟IP提供调度服务;
创建调度任务模块,用于所述Scheduler服务根据所述指定的versionID创建对应调度任务,记录所述对应调度任务的备份计划信息和指定的versionID到数据库DB并将所述对应调度任务到放入调度任务列队中;
下发备份任务模块,用于所述对应调度任务中备份计划到达执行时间,所述Scheduler服务调用Web服务的立即执行备份计划接口,并下发一个备份任务执行命令;
发送执行备份任务命令模块,用于所述Web服务通过RabbitMQ发送执行备份任务命令给所述用户指定客户端;
指定客户端执行备份模块,用于所述指定客户端通过RabbitMQ接收需要执行备份任务命令并执行备份;
所述指定客户端进行备份,用于所述指定客户端完成备份并通过RabbitMQ向Web服务发送备份完成备份的消息;
接收完成备份的消息模块,用于Web服务接收所述完成备份的消息。
本申请公开的第三个方面,一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,以实现一种应用于天翼云备份产品的分布式任务调度方法中的步骤。
本申请公开的第四个方面,一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行所述的一种应用于天翼云备份产品的分布式任务调度方法中的步骤。
与现有技术相比,本申请提出的一种应用于天翼云备份产品的分布式任务调度方法,本申请的优点在于:
1、基于分布式***设计备份任务调度***,能够很好地适应在云计算环境下的备份业务。
2、基于Etcd选主节点实现的Scheduler服务高可用方案,既保证了Scheduler在部署环境不稳定的情况下持续提供服务,又解决了多个Scheduler同时调度可能造成的数据不一致问题。
3、Scheduler服务基于cron表达式设计了一套备份任务调度时间的计算方法,帮助被调度的备份任务能够在规定时间窗口内正确执行。
4、备份客户端集中包含了所有读写数据的代码逻辑,而Web服务实现了对管控数据流的控制。通过rabbitMQ集群,Web服务稳定高效地实现了与客户端的通信与命令下发。客户端直接与对象存储连接,保证了高并发场景下多个备份任务读写数据的高IO速度。
附图说明
图1是本申请一个实施例提供了一种应用于天翼云备份产品的分布式任务调度方法流程示意图;
图2是本申请一个实施例提供了备份调度任务整体架构示意图;
图3是本申请一个实施例提供了Scheduler服务集群通过Etcd实现选主节点示意图;
图4是本申请一个实施例提供了天翼云备份产品的分布式调度原理示意图;
图5是本申请一个实施例提供了创建调度任务时序示意图;
图6是本申请一个实施例提供了备份任务调度执行流程;
图7是本申请一个实施例提供了一种应用于天翼云备份产品的分布式任务调度***;
图8是本申请一个实施例提供的电子设备结构示意图;
图9是本申请一个实施例提供的计算机可读存储介质结构示意图。
具体实施方式
为了更好地理解本申请,将参考附图对本申请的各个方面作出更详细的说明。应理解,这些详细说明只是对本申请的示例性实施方式的描述,而非以任何方式限制本申请的范围。在说明书全文中,相同的附图标号指代相同的元件。表述“和/或”包括相关联的所列项目中的一个或多个的任何和全部组合。
在附图中,为了便于说明,已稍微调整了元素的大小、尺寸和形状。附图仅为示例而并非严格按比例绘制。如在本文中使用的,用语“大致”“大约”以及类似的用语用作表近似的用语,而不用作表程度的用语,并且旨在说明将由本领域普通技术人员认识到的、测量值或计算值中的固有偏差。另外,在本申请中,各步骤处理描述的先后顺序并不必然表示这些处理在实际操作中出现的顺序,除非有明确其它限定或者能够从上下文推导出的除外。
还应理解的是,诸如“包括”“包括有”“具有”“包含”和/或“包含有”等表述在本说明书中是开放性而非封闭性的表述,其表示存在所陈述的特征、元件和/或部件,但不排除一个或多个其它特征、元件、部件和/或它们的组合的存在。此外,当诸如“...中的至少一个”的表述出现在所列特征的列表之后时,其修饰整列特征,而非仅仅修饰列表中的单独元件。此外,当描述本申请的实施方式时,使用“可”表示“本申请的一个或多个实施方式”。并且,用语“示例性的”旨在指代示例或举例说明。
除非另外限定,否则本文中使用的所有措辞(包括工程术语和科技术语)均具有与本申请所属领域普通技术人员的通常理解相同的含义。还应理解的是,除非本申请中有明确的说明,否则在常用词典中定义的词语应被解释为具有与它们在相关技术的上下文中的含义一致的含义,而不应以理想化或过于形式化的意义解释。
需要说明的是,在不冲突的情况下,本申请中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明本申请。
实施例1
图1是本申请一个实施例提供了一种应用于天翼云备份产品的分布式任务调度方法流程示意图,如图1所示,一种应用于天翼云备份产品的分布式任务调度方法流程,包括:
如图4所示,用户选择指定客户端并向Web服务发送为所述指定客户端创建备份计划指令,所述Web服务接收创建备份计划指令,其中,Web服务是一种通过网络提供服务的技术,允许不同的软件应用程序之间进行交互。
所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务,所述Scheduler服务集群采用通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务的步骤,包括:
Scheduler服务集群中N个Scheduler服务启动,在公共前缀“election/”下创建key,其中,N为自然数;
定义TLL周期为t,且各个节点的客户端运行周期为t/2;
N个Scheduler服务在启动时通过CAS去创建key并设置TTL,若key值已经存在,创建失败;
若N个Scheduler服务都创建了key值,通过Etcd的watch机制去判断哪一个Scheduler服务成为主节点,其中,主节点是通过Etcd选举机制成功获得主身份的Scheduler服务;
若原来的主节点出现故障,原来主节点的key没有在过期时间t之前续约,就会被超时删除,竞选版本号排在所述原来主节点下一位的节点就会自动成为主节点。
其中,Scheduler服务集群中N个Scheduler服务,在网络中,Scheduler服务叫作节点,Scheduler服务集群中有N个节点,通过Etcd选主节点的方式选出一个Scheduler服务作为主节点。
所述Scheduler服务根据所述指定的versionID创建对应调度任务,记录所述对应调度任务的备份计划信息和指定的versionID到数据库DB并将所述对应调度任务到放入调度任务列队中;
所述对应调度任务中备份计划到达执行时间,所述Scheduler服务调用Web服务的立即执行备份计划接口,并下发一个备份任务执行命令的步骤。
所述对应调度任务中备份计划到达执行时间,包括调度任务列队中对应调度任务中的备份计划到达执行时间,Scheduler服务将从调度任务列队取出对应调度任务,根据所述对应调度任务的备份计划ID和所述指定的versionID,从数据库DB中读取备份计划的详细信息,所述Scheduler服务会检查所述备份计划的状态,正常状态的备份计划能执行备份任务。
所述Scheduler服务调用Web服务的立即执行备份计划接口,并下发一个备份任务执行命令的步骤,包括:
Scheduler服务调用Web服务的立即执行备份计划接口;
Web服务检查调度任务中备份计划的versionID和数据库DB中所述指定的versionID是否相同;
若不同则说明Scheduler服务正在调度任务的备份计划是过期的,停止执行备份任务;
若相同,Web服务会在数据库DB中此次调度记录,并通过RabbitMQ发送备份任务命令给指定客户端。
所述Web服务通过RabbitMQ发送执行备份任务命令给所述指定客户端,其中,RabbitMQ是一个消息代理,支持多种消息协议和流式传输,RabbitMQ用于实现应用程序的异步和解耦,同时也起到消息缓冲和消息分发的作用,RabbitMQ支持消息的持久化,即将数据写在磁盘上,目的是保证数据的安全。
所述指定客户端通过RabbitMQ接收需要执行备份任务的消息,指定客户端执行备份的步骤,包括:
指定客户端和RabbitMQ的消息通知接口连接;
所述指定客户端通过RabbitMQ的消息通知接口接收需要执行备份任务的命令,并返回接收成功的消息给Web服务;
创建一个子线程用以执行具体的备份代码逻辑;
备份任务执行成功,更新数据库DB的备份任务状态;
Web服务接收指定客户端的接收成功消息后,视为任务发起成功,并返回发起成功信息给Scheduler服务;
Scheduler服务重新计算备份任务的下次调度时间,并将调度任务重新放回到调度备份任务列队中。
所述Scheduler服务重新计算备份任务的下次调度时间,包括:
Scheduler服务通过Cron表达式来计算任务的调度时间,Cron表达式分为6个域并以空格隔开,每个域都代表一个含义,左到右的6个域分别为秒、分钟、小时、月份中的日期、月份和星期中的日期;Scheduler服务计算备份任务的具体调度时间的公式如下:
其中是第i个备份任务下次被Scheduler服务调度的具体时间,单位为秒;C0是备份任务执行的误差时间,根据Scheduler主节点的实时情况动态调整;误差值不会超过1分钟,否则该次的备份任务不会被调度;/>这6个值分别表示6个域的具体配置值,而C1-C6则分别是6个域对应的常量值。
Web服务接收所述完成备份的消息。
实施例2
图7是本申请一个实施例提供了一种应用于天翼云备份产品的分布式任务调度***示意图,如图7所示,一种应用于天翼云备份产品的分布式任务调度***,所述***包括:
Web服务接收创建备份计划模块,用于用户指定客户端并向Web服务发送为所述指定客户端创建备份计划指令,所述Web服务接收创建备份计划指令;
发送模块,用于所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务;
创建调度任务模块,用于所述Scheduler服务根据所述指定的versionID创建对应调度任务,记录所述对应调度任务的备份计划信息和指定的versionID到数据库DB并将所述对应调度任务到放入调度任务列队中;
下发备份任务模块,用于所述对应调度任务中备份计划到达执行时间,所述Scheduler服务调用Web服务的立即执行备份接口,并下发一个备份任务执行命令;
发送执行备份任务命令模块,用于所述Web服务通过RabbitMQ发送执行备份任务命令给所述指定客户端;
指定客户端执行备份模块,用于所述指定客户端通过RabbitMQ接收需要执行备份任务的消息并执行备份;
所述指定客户端进行备份,用于所述指定客户端完成备份并通过RabbitMQ向Web服务发送备份完成的消息;
接收完成备份的消息模块,用于Web服务接收所述完成备份的消息。
实施例3
图2是本申请一个实施例提供了备份调度任务整体架构示意图,天翼云备份产品主要有Web服务、备份客户端、Scheduler服务、数据库集群和RabbitMQ集群组成,整体架构如图2所示。
Web服务集群采用分布式部署的方式,通过负载均衡的方式,从统一的公网IP接收用户下发的为所述指定客户端创建备份计划指令。Web服务在创建备份计划时,会通知Scheduler同时创建周期性调度任务,并将调度任务相关信息写入到数据库DB。如果用户下发立即执行备份任务的命令,Web服务会通过rabbitMQ直接发送消息给客户端,通知客户端立即执行备份任务。
Scheduler服务集群采用主备模式部署,通过Etcd选主节点的方式竞选成为主Scheduler并绑定虚拟IP提供调度服务。Scheduler服务会记录所有的调度任务到内存中,如果备份任务到达执行时间,就会调用Web服务接口并且下发一个备份任务执行命令。
分布式消息队列RabbitMQ也是通过负载均衡的方式,在统一的虚拟IP下对外提供服务。RabbitMQ是Web服务与指定客户端通信的桥梁,备份任务的下发与状态更新等流程都需要通过RabbitMQ消息队列的方式。
指定客户端是负责具体执行备份任务,部署在用户的生产云主机上。指定客户端会在成功部署后通过RabbitMQ消息队列与Web服务通信,通信成功后才可以执行备份任务。客户端负责备份任务的执行,并周期性汇报备份任务执行进度。
数据库集群主要包括cassandra集群和Etcd集群。Cassandra是高度可扩展的高性能分布式数据库,是NoSQL数据库的一种,负责保存备份服务的任务数据表等信息。Etcd是一个高可用的分布式键值对数据库,主要用于Scheduler服务选主节点流程。
实施例4
图3是本申请一个实施例提供了Scheduler服务集群通过Etcd实现选主节点示意图。Scheduler服务对外提供创建和删除调度任务的能力,为了保证调度任务的准确执行,通过Etcd选主节点的方式确保同一时间只有一个Scheduler实例工作。当主Scheduler服务因为突发原因关闭后,其他备用Scheduler服务也能通过Etcd重新竞选主节点的方式重新成为主Scheduler服务并提供服务。
如图3所示,Scheduler服务此时按照一主两备的方式部署,需要通过选主节点机制选出一个主节点,而竞选失败的自动降级为备份节点,并且主备节点可以自动切换。每个Scheduler服务可以简单分为3个模块:选举模块、监听模块和调度模块。选举模块负责进行选举,监听模块负责主备节点的切换,而调度模块负责执行具体的调度操作。
通过Etcd可以实现主节点选举,主要依靠于Etcd自身的2个核心机制:TTL,全称为Time To Live,CAS,全称为Atomic Compare-and-Swap。TTL存活时间指的是给一个key设置一个有效期,到期后这个key就会被自动失效,这个机制可以在分布式锁的实现上保证锁的实时有效性。CAS原子操作是一种乐观锁机制,指的是在对key进行赋值的时候,指定客户端需要提供一些条件,只有当所有条件都满足时才能赋值成功。
通过Etcd选主节点的原理的步骤,包括:
当N个Scheduler服务启动时,会在公共前缀“election/”下创建key,这个key值的构成为“election/{LeaseId}”。LeaseId是服务启动从Etcd服务端拿到的客户端唯一标识;
定义TLL周期为t,且各个节点的客户端运行周期为t/2,这样可以保证key可以被及时地创建或者更新;
N个Scheduler在启动时尝试通过CAS去创建key并设置TTL,若key值已经存在那么就会创建失败。Scheduler服务会启动一个线程去定时刷新过期时间,通过这个方式证明服务自己是良好的;
若N个Scheduler服务都创建了key值,通过Etcd的watch机制去判断哪个Scheduler服务成为主节点。示例性的,如图所示,有3个节点a、b、c同时竞选,分别对应竞选的版本号为0、1、2,这3个节点都会监听比自己版本号小并且最大的节点,只有竞选版本号最小的a节点才能成为主节点。N个Scheduler服务通过Etcd机制去竞选主节点的公式如下:
其中,Ni是第i个节点的Scheduler服务,Vn(i)是第i个节点的创建版本号。Si是第i个节点是否竞选成功的指标,当存在任意一个节点j且它的版本号小于等于i的版本号,那么节点i就竞选失败。反之,当i之外的所有节点的版本号都大于i的版本号时,节点i竞选成功;
若原来的主节点出现故障,那么原来的主节点的key没有在过期时间t之前续约,就会被超时删除。此时,竞选版本号排在第2的b节点就会自动成功主节点。
Scheduler服务在选举模块成功竞选成为主节点后,才可调用监听模块去绑定虚拟IP,最后通过调度模块开始向指定客户端调度备份任务。
实施例5
图5是本申请一个实施例提供了创建调度任务时序示意图,如图5所示,Web服务在创建备份计划时首先会生成一个指定versionID,并且把调度时间、备份目标、指定versionID信息写入job表。然后Web会把versionID和调度时间信息作为参数,通过虚拟IP发送给Scheduler服务集群的主节点。Scheduler会根据指定versionID去创建对应的调度任务,记录到数据库DB中和放入到调度任务队列中。如果调度任务队列中的任务到达运行时间后,Scheduler服务就会根据调度任务去执行。当用户更新备份计划的调度时间等信息时,Web服务会计算出一个新的36位versionID,并把新的配置和versionID都更新到原job表记录中。同时,Scheduler服务会根据新的versionID去创建新的Scheduler调度任务,并删除旧versionID对应的调度任务。Web服务在执行备份任务时会检查versionID,可以有效避免多线程环境下调度出错的场景。
实施例6
图6是本申请一个实施例提供了备份任务调度执行流程,如图6所示,用户创建的备份计划都会记录到Scheduler服务中,Scheduler会维护一个内存队列,其中内存队列为调度任务队列,把每个备份计划的执行时间等信息作为定时任务放入内存队列中。如图所示,当一个备份计划到达执行时间后,Scheduler服务将从内存队列中取出调度任务。根据调度任务的备份任务ID和versionID,可以从数据库集群中读取备份计划的详细信息。Scheduler服务会检查每一个备份计划的状态,正常状态的备份计划才能继续进行调度。然后,Scheduler服务会把备份计划信息和versionID作为参数,调用Web服务的立即执行备份计划接口。Web服务会检查传入的versionID和数据库DB记录的versionID是否相同,如果不同则说明Scheduler服务正在调度的备份任务是过期的,并停止执行该任务。如果versionID正确,Web服务会在数据库DB中写入这次调度记录,并通过RabbitMQ发送备份任务消息给客户端。
指定客户端会监听RabbitMQ的消息通知接口,若收到需要执行备份任务的消息,会首先返回接收成功的消息给Web服务,然后再创建一个子线程用以执行具体的备份代码逻辑,若备份任务最终执行成功或者因遇到错误中途结束,都会更新数据库DB的备份任务状态。而当Web服务收到客户端的返回消息后,便可视为任务发起成功,并返回成功给Scheduler服务。Scheduler服务会重新计算备份任务的下次执行时间,并重新放回到内存队列中,向Web服务返回此次调度成功的消息。
实施例7
图8是本申请一个实施例提供的电子设备结构示意图。如图8所示,根据本申请的又一方面还提供了一种电子设备500。该电子设备500可包括一个或多个处理器以及一个或多个存储器。其中,存储器中存储有计算机可读代码,计算机可读代码当由一个或多个处理器运行时,可以执行一种应用于天翼云备份产品的分布式任务调度方法。
根据本申请实施方式的方法或***也可以借助于图8所示的电子设备的架构来实现。如图8所示,电子设备500可包括总线501、一个或多个CPU502、只读存储器(ROM)503、随机存取存储器(RAM)504、连接到网络的通信端口505、输入/输出组件506、硬盘507等。电子设备500中的存储设备,例如ROM503或硬盘507可存储本申请提供的一种应用于天翼云备份产品的分布式任务调度方法。一种云电脑全链路时延的测量方法可例如包括:进一步地,电子设备500还可包括用户界面508。当然,图8所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图8示出的电子设备中的一个或多个组件。
实施例8
图9是本申请一个实施例提供的计算机可读存储介质结构示意图。如图9所示,是根据本申请一个实施方式的计算机可读存储介质600。计算机可读存储介质600上存储有计算机可读指令。当计算机可读指令由处理器运行时,可执行参照以上附图描述的根据本申请实施方式的一种应用于天翼云备份产品的分布式任务调度方法。存储介质600包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可包括随机存取存储器(RAM)和高速缓冲存储器(cache)等。非易失性存储器例如可包括只读存储器(ROM)、硬盘、闪存等。
应当理解,以许多方式来实现本申请的方法和装置、设备。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本申请的方法和装置、设备。用于方法的步骤的上述顺序仅是为了进行说明,本申请的方法的步骤不限于以上具体描述的顺序,除非以其他方式特别说明。此外,在一些实施例中,还可将本申请实施为记录在记录介质中的程序,这些程序包括用于实现根据本申请的方法的机器可读指令。因而,本申请还覆盖存储用于执行根据本申请的方法的程序的记录介质。
另外,本申请的实施方式中提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
如上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明。应理解的是,以上所述仅为本发明的具体实施方式,并不用于限制本发明。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等均应包含在本发明的保护范围之内。
Claims (10)
1.一种应用于天翼云备份产品的分布式任务调度方法,其特征在于,包括以下步骤:
用户指定客户端并向Web服务发送为所述指定客户端创建备份计划指令,所述Web服务接收创建备份计划指令;
所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务;
所述Scheduler服务根据所述指定的versionID创建对应调度任务,记录所述对应调度任务的备份计划信息和指定的versionID到数据库DB并将所述对应调度任务到放入调度任务列队中;
所述对应调度任务中备份计划到达执行时间,所述Scheduler服务调用Web服务的立即执行备份接口,并下发一个备份任务执行命令;
所述Web服务通过RabbitMQ发送执行备份任务命令给所述指定客户端;
所述指定客户端通过RabbitMQ接收需要执行备份任务的消息并执行备份;
所述指定客户端完成备份并通过RabbitMQ向Web服务发送备份完成的消息;
Web服务接收所述完成备份的消息。
2.根据权利要求1所述一种应用于天翼云备份产品的分布式任务调度方法,其特征在于,所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务,包括:
Web服务根据所述创建备份计划指令,生成指定的versionID;
所述指定的versionID、调度时间和备份目标写入job表;
Web服务把versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点。
3.根据权利要求2所述一种应用于天翼云备份产品的分布式任务调度方法,所述Scheduler服务集群采用通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务的步骤,包括:
Scheduler服务集群中N个Scheduler服务启动,在公共前缀“election/”下创建key,其中,N为自然数;
定义TLL周期为t,且各个节点的客户端运行周期为t/2;
N个Scheduler服务在启动时通过CAS去创建key并设置TTL,若key值已经存在,创建失败;
若N个Scheduler服务都创建了key值,通过Etcd的watch机制去判断哪一个Scheduler服务成为主节点,其中,主节点是通过Etcd选举机制成功获得主身份的Scheduler服务;
若原来的主节点出现故障,原来主节点的key没有在过期时间t之前续约,就会被超时删除,竞选版本号排在所述原来主节点下一位的节点自动成为主节点。
4.根据权利要求1所述一种应用于天翼云备份产品的分布式任务调度方法,其特征在于,所述对应调度任务中备份计划到达执行时间,包括:
调度任务列队中对应调度任务中的备份计划到达执行时间,Scheduler服务将从调度任务列队取出对应调度任务,根据所述对应调度任务的备份计划ID和所述指定的versionID,从数据库DB中读取备份计划的详细信息,所述Scheduler服务会检查所述备份计划的状态,正常状态的备份计划能执行备份任务。
5.根据权利要求1所述一种应用于天翼云备份产品的分布式任务调度方法,其特征在于,所述Scheduler服务调用Web服务的立即执行备份计划接口,并下发一个备份任务执行命令的步骤,包括:
Scheduler服务调用Web服务的立即执行备份计划接口;
Web服务检查调度任务中备份计划的versionID和数据库DB中所述指定的versionID是否相同;
若不同则说明Scheduler服务正在调度任务的备份计划是过期的,停止执行备份任务;
若相同,Web服务会在数据库DB中此次调度记录,并通过RabbitMQ发送备份任务命令给指定客户端。
6.根据权利要求1所述一种应用于天翼云备份产品的分布式任务调度方法,其特征在于,所述指定客户端通过RabbitMQ接收需要执行备份任务的消息,指定客户端执行备份的步骤,包括:
指定客户端和RabbitMQ的消息通知接口连接;
所述指定客户端通过RabbitMQ的消息通知接口接收需要执行备份任务的命令,并返回接收成功的消息给Web服务;
创建一个子线程用以执行具体的备份代码逻辑;
备份任务执行成功,更新数据库的备份任务状态;
Web服务接收指定客户端的接收成功消息后,视为任务发起成功,并返回发起成功信息给Scheduler服务;
Scheduler服务重新计算备份任务的下次调度时间,并将调度任务重新放回到调度备份任务列队中。
7.根据权利要求6所述一种应用于天翼云备份产品的分布式任务调度方法,其特征在于,所述Scheduler服务重新计算备份任务的下次调度时间,包括:
Scheduler服务通过Cron表达式来计算任务的调度时间,Cron表达式分为6个域并以空格隔开,每个域都代表一个含义,左到右的6个域分别为秒、分钟、小时、月份中的日期、月份和星期中的日期;Scheduler服务计算备份任务的具体调度时间的公式如下:
其中是第i个备份任务下次被Scheduler服务调度的具体时间,单位为秒;C0是备份任务执行的误差时间,根据Scheduler主节点的实时情况动态调整;误差值不会超过1分钟,否则该次的备份任务不会被调度;/>这6个值分别表示6个域的具体配置值,而C1-C6则分别是6个域对应的常量值。
8.一种应用于天翼云备份产品的分布式任务调度***,其特征在于,所述***包括:
Web服务接收创建备份计划模块,用于用户指定客户端并向Web服务发送为所述指定客户端创建备份计划指令,所述Web服务接收创建备份计划指令;
发送模块,用于所述Web服务根据所述创建备份计划指令,生成指定的versionID,所述Web服务将所述指定的versionID、调度时间和备份目标通过虚拟IP发送给Scheduler服务集群的主节点,其中,Scheduler服务集群通过Etcd选主节点的方式选出一个Scheduler服务作为主节点并绑定虚拟IP提供调度服务;
创建调度任务模块,用于所述Scheduler服务根据所述指定的versionID创建对应调度任务,记录所述对应调度任务的备份计划信息和指定的versionID到数据库DB并将所述对应调度任务到放入调度任务列队中;
下发备份任务模块,用于所述对应调度任务中备份计划到达执行时间,所述Scheduler服务调用Web服务的立即执行备份接口,并下发一个备份任务执行命令;
发送执行备份任务命令模块,用于所述Web服务通过RabbitMQ发送执行备份任务命令给所述指定客户端;
指定客户端执行备份模块,用于所述指定客户端通过RabbitMQ接收需要执行备份任务的消息并执行备份;
所述指定客户端进行备份,用于所述指定客户端完成备份并通过RabbitMQ向Web服务发送备份完成的消息;
接收完成备份的消息模块,用于Web服务接收所述完成备份的消息。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,以实现如权利要求1-7任一所述的一种应用于天翼云备份产品的分布式任务调度方法中的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1-7任一项所述的一种应用于天翼云备份产品的分布式任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311703095.9A CN118012584A (zh) | 2023-12-12 | 2023-12-12 | 一种应用于天翼云备份产品的分布式任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311703095.9A CN118012584A (zh) | 2023-12-12 | 2023-12-12 | 一种应用于天翼云备份产品的分布式任务调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012584A true CN118012584A (zh) | 2024-05-10 |
Family
ID=90954393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311703095.9A Pending CN118012584A (zh) | 2023-12-12 | 2023-12-12 | 一种应用于天翼云备份产品的分布式任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012584A (zh) |
-
2023
- 2023-12-12 CN CN202311703095.9A patent/CN118012584A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yan et al. | Tr-spark: Transient computing for big data analytics | |
US9794305B2 (en) | Consistent messaging with replication | |
US7779298B2 (en) | Distributed job manager recovery | |
US10101991B2 (en) | Managing a software-patch submission queue | |
CN101501652B (zh) | 检查点及一致性标记符 | |
US6421701B1 (en) | Method and system for replication support in a remote method invocation system | |
CN109992354A (zh) | 容器处理方法、装置、主体服务器、***和存储介质 | |
CA2816380C (en) | Techniques for capturing data sets | |
US20210073198A1 (en) | Using persistent memory and remote direct memory access to reduce write latency for database logging | |
WO2024051454A1 (zh) | 处理事务日志的方法及装置 | |
US11042454B1 (en) | Restoration of a data source | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
CN108933813B (zh) | 防止读取器饥饿的方法、***和存储介质 | |
US20170235600A1 (en) | System and method for running application processes | |
RU2721235C2 (ru) | Способ и система для маршрутизации и выполнения транзакций | |
JP4571090B2 (ja) | スケジューラプログラム、サーバシステム、スケジューラ装置 | |
CN118012584A (zh) | 一种应用于天翼云备份产品的分布式任务调度方法 | |
CN113687935A (zh) | 一种基于超融合设计的云原生存储调度方式 | |
CN112925614B (zh) | 一种分布式事务处理方法、装置、介质和设备 | |
RU2714602C1 (ru) | Способ и система для обработки данных | |
RU2714219C1 (ru) | Способ и система для планирования передачи операций ввода/вывода | |
CN117762495A (zh) | 一种基于Kafka实现高并发高可用的异步命令处理方法 | |
CN114168283A (zh) | 一种分布式定时任务调度方法及*** | |
CN110750340A (zh) | 调度任务并行执行的方法、***、设备及存储介质 | |
CN114880093A (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 |