一种分布式系统下执行定时任务的配置方法及系统与流程

文档序号:11949780阅读:626来源:国知局
一种分布式系统下执行定时任务的配置方法及系统与流程

本发明属于数据库应用的技术领域,具体地涉及一种分布式系统下执行定时任务的配置方法,以及配置系统。



背景技术:

在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件(middleware)负责实现这个模型。一个著名的分布式系统的例子是万维网(World Wide Web),在万维网中,所有的一切看起来就好像是一个文档(Web页面)一样。

分布式系统下执行定时任务的配置技术用于分布式系统下的定时任务的调度,淘宝tbschedule、当当网Elastic-Job、tbschedule使用了java的Timer来完成任务的调度,配置策略不是很灵活。当当Elastic-Job的机理是通过客户端quartz来触发任务,通过在zk中设置相关标记来调度各节点执行任务。这些技术的共同缺点如下:

1、代码量庞大,复杂,不便于定制扩展,使用不方便;

2、有一些bug没有修复,或没有考虑到;

3、系统依赖quartz,从而限制了其必须在java平台上使用。



技术实现要素:

为克服现有技术的不足,本发明提供一种分布式系统下执行定时任务的配置方法及其配置系统。

本发明的技术解决方案是:所述分布式系统下执行定时任务的配置方法为:服务端采用分布式架构,服务端前端使用react来作视图的展现,后端使用spring mvc为前端提供rest数据接口,使用spring security来保证数据的操作权限,避免数据被末授权的用户访问和修改,使用quartz触发配置的任务,使用服务发现工具来动态发现和协调各个机器执行作业,使用redis作为资源竞争的仲裁;

客户端将节点自身注册为任务节点,处理任务逻辑。

本发明的服务端采用分布式架构,服务端前端使用react来作视图的展现,后端使用spring mvc为前端提供rest数据接口,使用quartz触发配置的任务,使用服务发现工具来动态发现和协调各个机器执行作业,使用redis作为资源竞争的仲裁;客户端将节点自身注册为任务节点,处理任务逻辑;因此解决分布式系统下任务调度问题,能够在多语言模式下进行任务调度,能够执行情况查看、手工触发任务、动态更新任务、删除任务,充分利用机器的性能,并且避免单点部署时任务节点故障出现的问题,实现任务节点和任务中心弹性升缩。

更进一步地,所述服务发现工具为zk或consul。

更进一步地,客户端将节点自身注册为java或python版的任务节点。

更进一步地,该方法包括以下步骤:

(1)在任务中心配置任务;

(2)Quartz动态添加或者个性任务配置;

(3)Quartz触发配置过的任务,执行本地的任务;

(4)本地任务通过写redis获取本次任务的执行资格,写成功的负责调度此次任务;

(5)本地任务从注册中心读取该任务的存活节点;

(6)本地任务按照任务分片信息进行各任务节点的任务分配;

(7)本地任务按照客户端网络配置发送相应的任务请求到任务节点;

(8)任务节点收到请求后响应已收到任务请求,并在服务端执行此任务;

(9)服务端任务执行完毕;

(10)任务节点执行完毕后,将任务结果回送给任务中心。

更进一步地,所述步骤(3)中,轻量级的本地任务调用客户端的实际任务。

更进一步地,所述步骤(7)中,任务请求为自定义二进制消息或http请求。

本发明还提供了一种分布式系统下执行定时任务的配置系统,其包括:

服务端,其配置为分布式架构,服务端前端使用react来作视图的展现,后端使用spring mvc为前端提供rest数据接口,使用spring security来保证数据的操作权限,避免数据被末授权的用户访问和修改,使用quartz触发配置的任务,使用服务发现工具来动态发现和协调各个机器执行作业,使用redis作为资源竞争的仲裁;

客户端,其配置来将节点自身注册为任务节点,处理任务逻辑。

本发明克服现有技术的不足,能解决分布式系统下任务调度问题,能够在多语言模式下进行任务调度,能够执行情况查看、手工触发任务、动态更新任务、删除任务,充分利用机器的性能,并且避免单点部署时任务节点故障出现的问题,实现任务节点和任务中心弹性升缩。

附图说明

图1为根据本发明的分布式系统下执行定时任务的配置方法的一个优选实施例的流程图;

图2示出了根据本发明的目前系统中注册的任务;

图3示出了根据本发明的添加任务;

图4示出了根据本发明的添加任务,http或https方式配置;

图5示出了根据本发明的添加任务,分片配置;

图6示出了根据本发明的修改任务。

具体实施方式

这种分布式系统下执行定时任务的配置方法,

服务端采用分布式架构,服务端前端使用react来作视图的展现,后端使用spring mvc为前端提供rest数据接口,使用spring security来保证数据的操作权限,避免数据被末授权的用户访问和修改,使用quartz触发配置的任务,使用服务发现工具来动态发现和协调各个机器执行作业,使用redis作为资源竞争的仲裁;

客户端将节点自身注册为任务节点,处理任务逻辑。

本发明的服务端采用分布式架构,服务端前端使用react来作视图的展现,后端使用spring mvc为前端提供rest数据接口,使用quartz触发配置的任务,使用服务发现工具来动态发现和协调各个机器执行作业,使用redis作为资源竞争的仲裁;客户端将节点自身注册为任务节点,处理任务逻辑;因此解决分布式系统下任务调度问题,能够在多语言模式下进行任务调度,能够执行情况查看、手工触发任务、动态更新任务、删除任务,充分利用机器的性能,并且避免单点部署时任务节点故障出现的问题,实现任务节点和任务中心弹性升缩。

目前已经在线上执行的实例有用户中心,行情宝,渔联网。

图2示出了根据本发明的目前系统中注册的任务;图3示出了根据本发明的添加任务;图4示出了根据本发明的添加任务,http或https方式配置;图5示出了根据本发明的添加任务,分片配置;图6示出了根据本发明的修改任务。

客户端配置包括以下:

1.配置服务注册中心

<bean id="serviceRegister"class="com.nxin.framework.core.ZkServiceRegister"init-method="startUp"destroy-method="shutDown"p:namespace="job-center"p:servers="${zk.address}"/>

2.配置消息编码方式

3.配置任务,用户中心任务配置示例如下

更进一步地,所述服务发现工具为zk或consul。

更进一步地,客户端将节点自身注册为java或python版的任务节点。加入其它语言也很容易,基本上有zk客户端的语言都能方便写出。

如图1所示,这种分布式系统下执行定时任务的配置方法,包括以下步骤:

(1)在任务中心配置任务;

(2)Quartz动态添加或者个性任务配置;

(3)Quartz触发配置过的任务,执行本地的任务;

(4)本地任务通过写redis获取本次任务的执行资格,写成功的负责调度此次任务;

(5)本地任务从注册中心读取该任务的存活节点;

(6)本地任务按照任务分片信息进行各任务节点的任务分配;

(7)本地任务按照客户端网络配置发送相应的任务请求到任务节点;

(8)任务节点收到请求后响应已收到任务请求,并在服务端执行此任务;

(9)服务端任务执行完毕;

(10)任务节点执行完毕后,将任务结果回送给任务中心。

更进一步地,所述步骤(3)中,轻量级的本地任务调用客户端的实际任务。

更进一步地,所述步骤(7)中,任务请求为自定义二进制消息或http请求。

本发明还提供了一种分布式系统下执行定时任务的配置系统,其包括:

服务端,其配置为分布式架构,服务端前端使用react来作视图的展现,后端使用spring mvc为前端提供rest数据接口,使用spring security来保证数据的操作权限,避免数据被末授权的用户访问和修改,使用quartz触发配置的任务,使用服务发现工具来动态发现和协调各个机器执行作业,使用redis作为资源竞争的仲裁;

客户端,其配置来将节点自身注册为任务节点,处理任务逻辑。

本发明的技术效果如下:

1.解决分布式系统下任务调度问题,比如从一个数据源同步数据,如果是单机,写一个定时任务,让他一直跑没有问题,多机情况下如果配置不变,则二个节点同时执行此任务会导致数据冗余或出错(主键冲突等),在多机情况下一般保留一个节点的任务配置,其它节点注释掉任务的配置,这样增加了运维部署的难度。

2.多语言模式下的任务调度,由于其它平台没有相关的库或者相关实现比较落后,而他们也有定时任务的需求,比如python,.net,php平台等,目前任务中心有二种任务调度的方式,一种是java上的socket通信,基于netty的自定义消息协议,一种基于http的通知。

3.任务执行情况查看,手工触发任务,动态更新任务,删除任务等,出于某些目的,有时候需要马上触发一下任务,或者不中断业务的情况下修改任务配置,比如将任务的执行间隔从1小时一次调整至20分钟一次等等。

4.充分利用硬件资源,避免单点故障,任务可以通过切片后在多台机器同时执行,从而充分利用机器的性能,并且避免单点部署时任务节点故障出现的问题。

5.任务节点和任务中心弹性升缩。

以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1