分布式定时任务解决方案

16 篇文章 4 订阅
订阅专栏

分布式定时任务解决方案

一、背景

服务有定时任务,当服务部署到多个节点时,每个节点在同一个时间点都会执行相同的定时任务,需要做的是,让同一个时间点,每一个定时任务只在一个节点上执行,避免重复执行。

二、 解决方案思路

  • 单独设置任务调度服务
  • 使用Redis实现
  • 使用XXL-JOB实现
  • 使用Elastic-Job框架实现–参考 springBoot中使用elasticjob
  • 使用LTS框架实现

三、方案

3.1 方案一:单独设置任务调度服务

任务调度服务部署在单结点,定时任务以Http请求的方式去向网关调用任务请求,网关将请求分发到集群中的某一个节点,某一个节点执行任务。

3.2 方案二:使用Redis分布式锁实现

每个定时任务都在Redis中设置一个Key-Value的分布式锁,Key为自定义的每个定时任务的名字(如task1:redis:lock),Value为服务器Ip,同时设置合适的过期时间(例如设置为5min),只有获取到锁的服务才能执行任务,其他服务则只能等待轮询。

每个节点在执行时,都要进行以下操作:
1.是否存在Key,若不存在,则设置Key-Value,Value为当前节点的IP
2.若存在Key,则比较Value是否是当前Ip,若是则获取到了锁继续执行定时任务,若不是,则没有获取到锁就不往下执行并定时任务轮询 直到它抢到锁为止。

3.3 方案三:开源分布式框架(推荐)

1、使用XXL-JOB实现
xxl-job是一个轻量级的分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

xxl-job的设计思想为:

(1)将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求

(2)将任务抽象成分散的JobHandler,交由执行器统一管理,执行器负责接收调度请求并执行对应的JobHandler中业务逻辑

因此,“调度”和“任务”可以互相解偶,提高系统整体的稳定性和扩展性。

2、Elastic-Job:
Elastic-job在2.x之后,出现了两个相互独立的产品线:Elastic-job-lite和Elastic-job-cloud
Elastic-job-lite:定位为轻量级无中心化的解决方案,使用jar包的形式提供分布式任务的协调服务,外部依赖仅依赖于zookeeper。

选型

1、Quartz集群模式:Java事实上的定时任务标准,但是关注点在于定时任务而非数据,虽然实现了高可用,但是缺少分布式并行调度的功能,性能低。

2、TBSchedule:阿里早期开源的分布式任务调度系统。代码略陈旧,使用的是Timer而不是线程池执行任务调度。TBSchedule的作业类型比较单一,只能是获取/处理数据一种模式,文档缺失比较严重。

框架名称xxl-jobelastic-job
简介大众点评员工徐雪里于2015年发布的分布式任务调度平台,是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。当当开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片,并且可以支持云开发,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
社区力量大众点评公司下员工许雪里、贡献者16人,官网登记使用公司有133家当当网开源,贡献者29人,官网公布使用公司有46家
链接http://www.xuxueli.com/xxl-job/#/http://elasticjob.io/index_zh.html
文档完善完善
集群部署执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。集群部署唯一要求为:保证集群中每个执行器的配置项 “xxl.job.admin.addresses/调度中心地址” 保持一致,执行器根据该配置进行执行器自动注册等操作作业注册中心: 基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行
多节点任务执行使用Quartz基于数据库的分布式功能避免重复执行任务将任务拆分为n个任务项后,各个服务器分别执行各自分配到的任务项。一旦有新的服务器加入集群,或现有服务器下线,elastic-job将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片
日志跟踪支持,有日志查询界面可通过事件订阅的方式处理调度过程的重要事件,用于查询、统计和监控。Elastic-Job目前提供了基于关系型数据库两种事件订阅方式记录事件
监控告警任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔通过事件订阅方式可自行实现
弹性扩容缩容使用Quartz基于数据库的分布式功能,服务器超出一定数量会给数据库造成一定的压力通过zk实现各服务的注册、控制及协调
并行调度调度系统多线程(默认10个线程)触发调度运行,确保调度精确执行,不被堵塞采用任务分片方式实现。将一个任务拆分为n个独立的任务项,由分布式的服务器并行执行各自分配到的分片项
高可用策略“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行调度器的高可用是通过运行几个指向同一个ZooKeeper集群的Elastic-Job-Cloud-Scheduler实例来实现的。ZooKeeper用于在当前主Elastic-Job-Cloud-Scheduler实例失败的情况下执行领导者选举。通过至少两个调度器实例来构成集群,集群中只有一个调度器实例提供服务,其他实例处于”待命”状态。当该实例失败时,集群会选举剩余实例中的一个来继续提供服务
失败处理策略调度失败时的处理策略,策略包括:失败告警(默认)、失败重试弹性扩容缩容在下次作业运行前重分片,但本次作业执行的过程中,下线的服务器所分配的作业将不会重新被分配。失效转移功能可以在本次作业运行中用空闲服务器抓取孤儿作业分片执行。同样失效转移功能也会牺牲部分性能
难易程度简单较复杂,需要深入理解分片原理算法
动态分片策略分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度(执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时传递分片参数;可根据分片参数开发分片任务)默认包含三种分片策略: 基于平均分配算法的分片策略、 作业名的哈希值奇偶数决定IP升降序算法的分片策略、根据作业名的哈希值对Job实例列表进行轮转的分片策略,支持自定义分片策略。elastic-job的分片是通过zookeeper来实现的。分片的分片由主节点分配,如下三种情况都会触发主节点上的分片算法执行:
a、新的Job实例加入集群
b、现有的Job实例下线(如果下线的是leader节点,那么先选举然后触发分片算法的执行)
c、主节点选举”
侧重点侧重的业务实现的简单和管理的方便,学习成本简单,失败策略和路由策略丰富。推荐使用在“用户基数相对少,服务器数量在一定范围内”的情景下使用关注的是数据,增加了弹性扩容和数据分片的思路,以便于更大限度的利用分布式服务器的资源。但是学习成本相对高些,推荐在“数据量庞大,且部署服务器数量较多”时使用
对比Quartz1.调用API的的方式操作任务,不人性化;
2.需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重。
3.调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况加,此时调度系统的性能将大大受限于业务;
4.Quartz关注点在于定时任务而非数据,并无一套根据数据处理而定制化的流程。虽然Quartz可以基于数据库实现作业的高可用,但缺少分布式并行调度的功能。
 

参考文档

[1]: XXL-JOB 官网文档地址
[2]: Elastic-Job
[3]: LTS

作者: CoffeJoy
出处:https://www.cnblogs.com/fonxian/p/10858101.html
版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

分布式定时任务调度系统技术解决方案.pdf
09-14
Java后端资源
Fourinone分布式并行计算四合一框架
06-12
  Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机器一起用起来计算,把更多的cpu和内存利用上,来解决我们数量大和计算复杂的问题,当然这个过程中要考虑到分布式的协同和故障处理。如果仅仅是为了实现这个简单的初衷,为什么一切会那么复杂,我觉的自己可以写一个更简单的东西,它不需要过度设计,只需要看上去更酷一点,更小巧一点,功能更强一点。于是我将自己对分布式的理解融入到这个框架中,考虑到底层实现技术的相似性,我将Hadoop,Zookeeper,MQ,分布式缓存四大主要的分布式计算功能合为一个框架内,对复杂的分布式计算应用进行了大量简化和归纳。   首先,对分布式协同方面,它实现了Zookeeper所有的功能,并且做了很多改进,包括简化Zookeeper的树型结构,用domain/node两层结构取代,简化Watch回调多线程等待编程模型,用更直观的容易保证业务逻辑完整性的内容变化事件以及状态轮循取代,Zookeeper只能存储信息不大于1M的内容,Fourinone超过1M的内容会以内存隐射文件存储,增强了它的存储功能,简化了Zookeeper的ACL权限功能,用更为程序员熟悉rw风格取代,简化了Zookeeper的临时节点和序列节点等类型,取代为在创建节点时是否指定保持心跳,心跳断掉时节点会自动删除。Fourinone是高可用的,没有单点问题,可以有任意多个复本,它的复制不是定时而是基于内容变更复制,有更高的性能,Fourinone实现了领导者选举算法(但不是Paxos),在领导者服务器宕机情况下,会自动不延时的将请求切换到备份服务器上,选举出新的领导者进行服务,这个过程中,心跳节点仍然能保持健壮的稳定性,迅速跟新的领导者保持心跳连接。基于Fourinone可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。   其次, Fourinone可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上百万的并发读写吞吐量,会超出单台服务器的承受力,Fourinone提供了fa?ade的解决方案去解决大集群的分布式缓存,利用硬件负载均衡路由到一组fa?ade服务器上,fa?ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的跟这个时间匹配,这样在扩容后还能准确找到之前分配到的服务器。另外,基于Fourinone可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。   Fourinone对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。Fourinone有“包工头”,“农民工”,“手工仓库”的几个核心概念。“农民工”为一个计算节点,可以部署在多个机器,它由开发者自由实现,计算时,“农民工”到“手工仓库”获取输入资源,再将计算结果放回“手工仓库”返回给“包工头”。“包工头”负责承包一个复杂项目的一部分,可以理解为一个分配任务和调度程序,它由开发者自己实现,开发者可以自由控制调度过程,比如按照“农民工”的数量将源数据切分成多少份,然后远程分配给“农民工”节点进行计算处理,它处理完的中间结果数据不限制保存在hdfs里,而可以自由控制保存在分布式缓存、数据库、分布式文件里。如果需要结果数据的合并,可以新建立一个“包工头”的任务分配进行完成。多个“包工头”之间进行责任链式处理。总的来说,是将大数据的复杂分布式计算,设计为一个链式的多“包工头”环节去处理,每个环节包括利用多台“农民工”机器进行并行计算,无论是拆分计算任务还是合并结果,都可以设计为一个单独的“包工头”环节。这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且链式的每个环节也方便进行监控过程。   Fourinone也可以当成简单的mq来使用,将domain视为mq队列,每个node为一个队列消息,监控domain的变化事件来获取队列消息。也可以将domain视为订阅主题,将每个订阅者注册到domain的node上,发布者将消息逐一更新每个node,订阅者监控每个属于自己的node的变化事件获取订阅消息,收到后删除内容等待下一个消息。但是Fourinone不实现JMS的规范,不提供JMS的消息确认和消息过滤等特殊功能,不过开发者可以基于Fourinone自己去扩充这些功能,包括mq集群,利用一个独立的domain/node建立队列或者主题的key隐射,再仿照上面分布式缓存的智能根据key定位服务器的做法实现集群管理。   Fourinone整体代码短小精悍,跟Hadoop, Zookeeper, Memcache, ActiveMq等开源产品代码上没有任何相似性,不需要任何依赖,引用一个jar包就可以嵌入式使用,良好支持window环境,可以在一台机器上模拟分布式环境,更方便开发。   开发包里自带了一系列傻瓜上手demo,包括分布式计算、统一配置管理、集群管理、分布式锁、分布式缓存、MQ等方面, 每个demo均控制在少许行代码内,但是涵盖了Fourinone主要的功能,方便大家快速理解并掌握。   Fourinone 2.0新增功能:   Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。Fourinone框架提供了一系列并行计算模式(农民工/包工头/职介绍/手工仓库)用于利用多机多核cpu的计算能力;提供完整的分布式缓存和小型缓存用于利用多机内存能力;提供像操作本地文件一样操作远程文件(访问,并行读写,拆分,排它,复制,解析,事务等)用于利用多机硬盘存储能力;由于多计算机物理上独立,Fourinone框架也提供完整的分布式协同和锁以及简化MQ功能,用于实现多机的协作和通讯。   一、提供了对分布式文件的便利操作, 将集群中所有机器的硬盘资源利用起来,通过统一的fttp文件路径访问,如:   windows:fttp://v020138.sqa.cm4/d:/data/a.log   linux:fttp://v020138.sqa.cm4/home/user/a.log   比如以这样的方式读取远程文件:   FttpAdapter fa = FttpAdapter("fttp://v020138.sqa.cm4/home/log/a.log");   fa.getFttpReader().readAll();   提供对集群文件的操作支持,包括:   1、元数据访问,添加删除,按块拆分, 高性能并行读写,排他读写(按文件部分内容锁定),随机读写,集群复制等   2、对集群文件的解析支持(包括按行,按分割符,按最后标识读取)   3、对整形数据的高性能读写支持(ArrayInt比ArrayList存的更多更快)   4、两阶段提交和事务补偿处理   5、自带一个集群文件浏览器,可以查看集群所有硬盘上的文件(不同于hadoop的namenode,没有单点问题和容量限制)   总的来说, 将集群看做一个操作系统,像操作本地文件一样操作远程文件。   但是fourinone并不提供一个分布式存储系统,比如文件数据的导入导出、拆分存储、负载均衡,备份容灾等存储功能,不过开发人员可以利用这些api去设计和实现这些功能,用来满足自己的特定需求。   二、自动化class和jar包部署   class和jar包只需放在工头机器上, 各工人机器会自动获取并执行,兼容操作系统,不需要进行安全密钥复杂配置   三、网络波动状况下的策略处理,设置抢救期,抢救期内网络稳定下来不判定结点死亡   本软件由www.gg265.net www.fmrpg.com站长提供
(1)分布式定时任务解决方案
allensandy的博客
08-18 299
一、背景 服务有定时任务,当服务部署到多个节点时,每个节点在同一个时间点都会执行相同的定时任务,需要做的是,让同一个时间点,每一个定时任务只在一个节点上执行。 二、 解决方案思路 单独设置任务调度服务 使用Redis实现 使用XXL-JOB实现 使用Elastic-Job框架实现 使用LTS框架实现 三、方案 3.1 方案一:单独设置任务调度服务 任务调度服务部署在单结点,定时任务以Http请求的方式去向网关调用任务请求,网关将请求分发到集群中的某一个节点,某一个节点执行任务。 3.2
Fourinone分布式计算框架
08-29
FourInOne(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我也看了老外写的其他开源框架,也对分布式计算进行了长时间的思考,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机器一起用起来计算,把更多的cpu和内存利用上,来解决我们数量大和计算复杂的问题,当然这个过程中要考虑到分布式的协同和故障处理。如果仅仅是为了实现这个简单的初衷,为什么一切会那么复杂,我觉的自己可以写一个更简单的东西,它不需要过度设计,只需要看上去更酷一点,更小巧一点,功能更强一点。于是我将自己对分布式的理解融入到这个框架中,考虑到底层实现技术的相似性,我将Hadoop,Zookeeper,MQ,分布式缓存四大主要的分布式计算功能合为一个框架内,对复杂的分布式计算应用进行了大量简化和归纳。 首先,对分布式协同方面,它实现了Zookeeper所有的功能,并且做了很多改进,包括简化Zookeeper的树型结构,用domain/node两层结构取代,简化Watch回调多线程等待编程模型,用更直观的容易保证业务逻辑完整性的内容变化事件以及状态轮循取代,Zookeeper只能存储信息不大于1M的内容,FourInOne超过1M的内容会以内存隐射文件存储,增强了它的存储功能,简化了Zookeeper的ACL权限功能,用更为程序员熟悉rw风格取代,简化了Zookeeper的临时节点和序列节点等类型,取代为在创建节点时是否指定保持心跳,心跳断掉时节点会自动删除。FourInOne是高可用的,没有单点问题,可以有任意多个复本,它的复制不是定时而是基于内容变更复制,有更高的性能,FourInOne实现了领导者选举算法(但不是Paxos),在领导者服务器宕机情况下,会自动不延时的将请求切换到备份服务器上,选举出新的领导者进行服务,这个过程中,心跳节点仍然能保持健壮的稳定性,迅速跟新的领导者保持心跳连接。基于FourInOne可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。 其次, FourInOne可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上百万的并发读写吞吐量,会超出单台服务器的承受力,FourInOne提供了fa?ade的解决方案去解决大集群的分布式缓存,利用硬件负载均衡路由到一组fa?ade服务器上,fa?ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的跟这个时间匹配,这样在扩容后还能准确找到之前分配到的服务器。另外,基于FourInOne可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。 FourInOne对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。FourInOne有“包工头”,“农民工”,“手工仓库”的几个核心概念。“农民工”为一个计算节点,可以部署在多个机器,它由开发者自由实现,计算时,“农民工”到“手工仓库”获取输入资源,再将计算结果放回“手工仓库”返回给“包工头”。“包工头”负责承包一个复杂项目的一部分,可以理解为一个分配任务和调度程序,它由开发者自己实现,开发者可以自由控制调度过程,比如按照“农民工”的数量将源数据切分成多少份,然后远程分配给“农民工”节点进行计算处理,它处理完的中间结果数据不限制保存在hdfs里,而可以自由控制保存在分布式缓存、数据库、分布式文件里。如果需要结果数据的合并,可以新建立一个“包工头”的任务分配进行完成。多个“包工头”之间进行责任链式处理。总的来说,是将大数据的复杂分布式计算,设计为一个链式的多“包工头”环节去处理,每个环节包括利用多台“农民工”机器进行并行计算,无论是拆分计算任务还是合并结果,都可以设计为一个单独的“包工头”环节。这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且链式的每个环节也方便进行监控过程。 FourInOne也可以当成简单的mq来使用,将domain视为mq队
集群模式下的定时任务与Redis分布式
热门推荐
Kaybee - 练级之路
05-23 1万+
业务场景:在电商项目中,往往会有这样的一个功能设计,当用户下单后一段时间没有付款,系统就会在超时后关闭该订单。 通常我们会做一个定时任务每分钟来检查前半小时的订单,将没有付款的订单列表查询出来,然后对订单中的商品进行库存的恢复,然后将该订单设置为无效。 比如我们这里使用Spring Schedule的方式做一个定时任务: @Component @Slf4j public class Cl...
关于当前开源分布式任务框架的比较
guotufu的博客
04-23 3403
最近有对分布式任务调度框架的选型,下面是个人整理的一个比较文档,供大家参考使用。分布式任务调度框架各有利弊,需根据实际需求决定使用。 框架名称 xxl-job elastic-job 简介 大众点评员工徐雪里于2015年发布的分布式任务调度平台,是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 当当开发的弹性分布式任务调度系统...
简单粗暴的分布式定时任务解决方案
客官不爱喝酒的博客
03-10 1519
因为有时候我们需要定时的执行一些操作,比如业务中产生的一些临时文件,临时文件不能立即删除,因为不清楚用户是否操作完毕,不能立即删除,需要隔一段时间然后定时清楚,还有像是一些电商项目,每月进行数据清算。比如某些业务的排行榜,实时性不是高的也可以使用定时任务去统计,然后在做更新。当然技术是为业务服务的,我们怎么选择合适的技术,还得是看业务场景,比如一些任务的执行频率不高,也不是特别要求效率,也不复杂,我们完全用不上为了一个定时任务去引入一些第三方的框架作为定时任务实现,我们来介绍两种方式来实现分布式定时任务
分布式定时任务解决方案
外星喵的博客
07-07 5251
前言 什么是分布式定时任务? 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式,就叫做分布式定时任务。 它有两层含义: 它是运行在分布式集群环境下的调度任务,同⼀个定时任务程序部署多份,则同一时刻应当只允许⼀个定时任务执行。 定时任务的拆分,就是把⼀个大的作业任务拆分为多个小的作业任务,同时执行。 分布式定时任务的意义 为什么使用分布式定时任务?主要有如下两点原因: 1. **高可用**:单机版的定式任务调度只能在一台机器上运行,如果程序或者系统出现异常
分布式定时任务原理(附解决方案
weixin_44421461的博客
01-05 4244
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细...
分布式任务调度,定时任务的处理方案
qq_56533553的博客
04-08 1998
4.复制配置文件,文件在xxl-job项目的 xxl-job-2.3.1\xxl-job-executor-samples\xxl-job-executor-sample-springboot\src\main\java\com\xxl\job\executor\core\config 的XxlJobConfig。这个命令将会创建一个名为 xxl-job-admin 的容器,并且将容器的 8080 端口映射到宿主机的 8080 端口,使得我们可以通过浏览器访问到 XXL-Job 的管理界面。
分布式定时任务重复执行解决方案--redis篇.docx
06-27
解决方案: 1. 利用数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。 这里我使用的是redis分布锁的方式实现,自己封装了一个注解,如有问题请联系我一下,谢谢! 加锁 : 同一个定时任务同时多...
分布式定时任务调度系统技术选型指南.docx
10-16
分布式定时任务调度系统技术选型指南.docx
探寻繁杂定时任务解决方案分布式任务调度系统.docx
10-26
探寻繁杂定时任务解决方案分布式任务调度系统.docx
ElasticJob分布式调度解决方案.rar
07-14
定时任务: 基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。 作业注册中心: 基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。 作业分片: 将一个...
遇见未知的Saturn |准备篇:分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
沁雅学院
05-22 5320
一般的技术quartz、spring task、java.util.Timer,这几种如果在单一机器上跑其实问题不大,但是如果一旦应用于集群环境做分布式部署,就会带来一个致命的问题,那就是重复执行,当然解决方案有,但是必须依赖数据库,将任务执行状态持久化下来。Saturn (任务调度系统)是唯品会开源的一个分布式任务调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用以及分片并发处理。如分片过程中主服务器下线,则先选举主服务器,再分片。
【java】【布式锁实战多节点】【多节点定时任务只执行一次】
qq_34125999的博客
08-25 2411
需求,由于现在定时任务较多,bash项目单机部署压力过大、效率太低,现需要多机部署,并且当前时刻只能有一个定时任务成功执行。 3 JAVA demo环境概述 启3个springboot项目,端口不一致,定时任务代码一致。 当前任务获取锁,如果获取到锁,则执行任务,如果获取不到,则什么都不干。 Code: 检测任务:日志: 检测结果: 问题: 由于任务执行的时间很短,A节点抢到锁释放锁完成了,B节点抢锁去发现就没有锁,导致上报任务重复执行。 检测任务:日志: 检测结果:没有重复任务缺陷: 如果节点A抢到锁,
分布式定时器的一些解决方案
oKong | 趔趄的猿
03-06 1655
前言 之前写SpringBoot时,有简单介绍过分布式定时器的一些思路(SpringBoot | 第二十二章:定时任务的使用)。原来的项目本身使用dubbo实现了一个简单的实现,目前项目迁移至SpringCloud后,原来的就不适用了,但基本原理都是差不多的,都是集中管理需要调用的api及调度等相关信息。故本篇会简单介绍下一些常见的分布式定时器的实现方案,还会编写一个基于http调用的统一调度项...
分布式定时任务开源方案
my_miuye的博客
03-25 3970
整理了常用的几种分布式定时任务开源方案的优缺点对比。
分布式定时任务秒级调度解决方案
inaoen的专栏
04-01 1283
定时任务秒级调度方案 1、任务抢占 业务系统新增调度表控制并发,uts调度会到调度表取需要执行的任务,取到任务之后更新任务表该条任务的状态,防止任务并发执行,处理完成之后将状态更新到处理状态。 2、循环执行 对于实时性要求较高的任务,等待指定时间之后继续取任务执行,不返回任务调度平台,做到秒级调度 3、减少uts平台强依赖 uts平台只配置触发U...
go语言分布式定时任务
最新发布
08-12
2. 使用消息队列:一种常见的分布式定时任务解决方案是使用消息队列。你可以将定时任务的执行逻辑封装为消息,并将其发送到消息队列中。然后,在不同的节点上启动消费者来监听消息队列并执行相应的任务。这样可以...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • SpringBoot使用Nacos作为配置中心服务和服务注册中心 229109
  • SpringBoot自动配置的原理及实现以及SpringBoot3.0的变化 121407
  • Logstash常用配置和日志解析 80151
  • JMM概述 62553
  • Springboot实现filter拦截token验证和跨域 51625

分类专栏

  • BPM 1篇
  • 数据仓库
  • 数据库 19篇
  • 数据库工具 1篇
  • redis 13篇
  • elasticsearch 17篇
  • flink 1篇
  • MongodDB 2篇
  • solr 3篇
  • 分布式
  • spring-cloud 16篇
  • 分布式任务 3篇
  • dubbo 2篇
  • RPC 1篇
  • PowerDesigner 1篇
  • 日志工具 1篇
  • K8S 9篇
  • docker 12篇
  • SSO 1篇
  • scala 1篇
  • c/c++ 2篇
  • java 14篇
  • 个人 15篇
  • android 5篇
  • 编码风格 1篇
  • hadoop 9篇
  • Linux 2篇
  • python 3篇
  • FastDFS
  • nginx 7篇
  • java笔记 24篇
  • spring 4篇
  • 算法 4篇
  • JVM 12篇
  • springboot 18篇
  • jquery 6篇
  • git 2篇
  • gitlab 3篇
  • 架构设计 14篇
  • centos 3篇
  • 设计模式 7篇
  • IDE 7篇
  • vue 5篇
  • zookeeper 6篇
  • MQ 8篇
  • 通识 6篇
  • blockchain 5篇
  • go 8篇
  • Jenkins 2篇
  • 微信小程序 1篇

最新评论

  • centos系统虚拟机安装和服务配置初始化

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)使用更多的站内链接。

  • Nginx 配置反向代理 WebSocket

    默o。: 文章写的很详细,条理清晰,很容易看进去, 学到了很多知识,感谢博主分享, 支持博主.希望博主也支持我的博客,一起进步

  • windows11安装docker desktop和K8S环境创建镜像和运行dashboard

    牧竹子: 第一个是系统管理员授权可以启动wsl服务,第二个是启动服务,它们两个命令确实是一模一样,我当时执行都没注意到这个一模一样的哈哈,感谢指正

  • Gin+Gorm+MySql 搭建web脚手架

    牧竹子: 设置公开已经完成

  • Gin+Gorm+MySql 搭建web脚手架

    牧竹子: 现在好像默认都被系统设置为私有了 我去改改哈

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • SublimeText4版本为_4169_x64的个人使用配置
  • 服务网格Service Mesh和Istio
  • kettle spoon创建带参数定时任务并关闭它
2024年5篇
2023年21篇
2022年15篇
2021年17篇
2020年8篇
2019年83篇
2018年36篇
2017年79篇
2015年8篇
2012年1篇
2011年9篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源魔兽争霸1越南房价真高达无双给女宝宝起名字大全2015给宝宝起名字姓苗的起名 与易经瓷都起名网免费取甜蜜蜜在线观看心脏起搏器排名京东商城刘强东女生起名用什么字好情定三生剧情分集介绍起名五行字库大全牛年起什么名好植物名称公司起名韩姓女孩起名简单大方玩物人生免费起名大全免费商铺起名字1983手机关机了还能定位到准确位置吗斗破苍穹三年之约完整版在线观看盾安环境股票自助餐韩国游戏网站机器人机构起名从港综签到成为传说潘氏女孩取名起名大全山水画起名字女孩姓肖起什么名字好微视号起什么名字好淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化