游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

几种主流的分布式定时任务,你知道哪些?

  单点定时任务JDK原生
  自从JDK1。5之后,提供了ScheduledExecutorService代替TimerTask来执行定时任务,提供了不错的可靠性。publicclassSomeScheduledExecutorService{publicstaticvoidmain(String〔〕args){创建任务队列,共10个线程ScheduledExecutorServicescheduledExecutorServiceExecutors。newScheduledThreadPool(10);执行任务:1秒后开始执行,每30秒执行一次scheduledExecutorService。scheduleAtFixedRate((){System。out。println(执行任务:newDate());},10,30,TimeUnit。SECONDS);}}SpringTask
  SpringFramework自带定时任务,提供了cron表达式来实现丰富定时任务配置。新手推荐使用https:cron。qqe2。com这个网站来匹配你的cron表达式。ConfigurationEnableSchedulingpublicclassSomeJob{privatestaticfinalLoggerLOGGERLoggerFactory。getLogger(SomeJob。class);每分钟执行一次(例:18:01:00,18:02:00)秒分钟小时日月星期年Scheduled(cron001?)publicvoidsomeTask(){。。。}}
  单点的定时服务在目前微服务的大环境下,应用场景越来越局限,所以尝鲜一下分布式定时任务吧。基于Redis实现
  相较于之前两种方式,这种基于Redis的实现可以通过多点来增加定时任务,多点消费。但是要做好防范重复消费的准备。通过ZSet的方式
  将定时任务存放到ZSet集合中,并且将过期时间存储到ZSet的Score字段中,然后通过一个循环来判断当前时间内是否有需要执行的定时任务,如果有则进行执行。
  具体实现代码如下:Description:基于Redis的ZSet的定时任务。
  authormxyConfigurationEnableSchedulingpublicclassRedisJob{publicstaticfinalStringJOBKEYredis。job。task;privatestaticfinalLoggerLOGGERLoggerFactory。getLogger(RedisJob。class);AutowiredprivateStringRedisTemplatestringRedisTemplate;添加任务。paramtaskpublicvoidaddTask(Stringtask,Instantinstant){stringRedisTemplate。opsForZSet()。add(JOBKEY,task,instant。getEpochSecond());}定时任务队列消费每分钟消费一次(可以缩短间隔到1s)Scheduled(cron001?)publicvoiddoDelayQueue(){longnowSecondInstant。now()。getEpochSecond();查询当前时间的所有任务SetStringstringsstringRedisTemplate。opsForZSet()。range(JOBKEY,0,nowSecond);for(Stringtask:strings){开始消费taskLOGGER。info(执行任务:{},task);}删除已经执行的任务stringRedisTemplate。opsForZSet()。remove(JOBKEY,0,nowSecond);}}
  适用场景如下:订单下单之后15分钟后,用户如果没有付钱,系统需要自动取消订单。红包24小时未被查收,需要延迟执退还业务;某个活动指定在某个时间内生效失效;
  优势是:省去了MySQL的查询操作,而使用性能更高的Redis做为代替;不会因为停机等原因,遗漏要执行的任务;键空间通知的方式
  我们可以通过Redis的键空间通知来实现定时任务,它的实现思路是给所有的定时任务设置一个过期时间,等到了过期之后,我们通过订阅过期消息就能感知到定时任务需要被执行了,此时我们执行定时任务即可。
  默认情况下Redis是不开启键空间通知的,需要我们通过configsetnotifykeyspaceeventsEx的命令手动开启。开启之后定时任务的代码如下:自定义监听器自定义监听器。publicclassKeyExpiredListenerextendsKeyExpirationEventMessageListener{publicKeyExpiredListener(RedisMessageListenerContainerlistenerContainer){super(listenerContainer);}OverridepublicvoidonMessage(Messagemessage,byte〔〕pattern){channelStringchannelnewString(message。getChannel(),StandardCharsets。UTF8);过期的keyStringkeynewString(message。getBody(),StandardCharsets。UTF8);todo你的处理}}设置该监听器Description:通过订阅Redis的过期通知来实现定时任务。
  authormxyConfigurationpublicclassRedisExJob{AutowiredprivateRedisConnectionFactoryredisConnectionFactory;BeanpublicRedisMessageListenerContainerredisMessageListenerContainer(){RedisMessageListenerContainerredisMessageListenerContainernewRedisMessageListenerContainer();redisMessageListenerContainer。setConnectionFactory(redisConnectionFactory);returnredisMessageListenerContainer;}BeanpublicKeyExpiredListenerkeyExpiredListener(){returnnewKeyExpiredListener(this。redisMessageListenerContainer());}}
  Spring会监听符合以下格式的Redis消息privatestaticfinalTopicTOPICALLKEYEVENTSnewPatternTopic(keyevent);
  基于Redis的定时任务能够适用的场景也比较有限,但实现上相对简单,但对于功能幂等有很大要求。从使用场景上来说,更应该叫做延时任务。
  场景举例:订单下单之后15分钟后,用户如果没有付钱,系统需要自动取消订单。红包24小时未被查收,需要延迟执退还业务;
  优劣势是:被动触发,对于服务的资源消耗更小;Redis的PubSub不可靠,没有ACK机制等,但是一般情况可以容忍;键空间通知功能会耗费一些CPU分布式定时任务引入分布式定时任务组件or中间件
  将定时任务作为单独的服务,遏制了重复消费,独立的服务也有利于扩展和维护。quartz
  依赖于MySQL,使用相对简单,可多节点部署,通过竞争数据库锁来保证只有一个节点执行任务。没有图形化管理页面,使用相对麻烦。elasticjoblite
  依赖于Zookeeper,通过zookeeper的注册与发现,可以动态的添加服务器。多种作业模式失效转移运行状态收集多线程处理数据幂等性容错处理支持spring命名空间有图形化管理页面LTS
  依赖于Zookeeper,集群部署,可以动态的添加服务器。可以手动增加定时任务,启动和暂停任务。业务日志记录器SPI扩展支持故障转移节点监控多样化任务执行结果支持FailStore容错动态扩容对spring相对友好有监控和管理图形化界面xxljob
  国产,依赖于MySQL,基于竞争数据库锁保证只有一个节点执行任务,支持水平扩容。可以手动增加定时任务,启动和暂停任务。弹性扩容分片广播故障转移Rolling实时日志GLUE(支持在线编辑代码,免发布)任务进度监控任务依赖数据加密邮件报警运行报表优雅停机国际化(中文友好)总结
  微服务下,推荐使用xxljob这一类组件服务将定时任务合理有效的管理起来。而单点的定时任务有其局限性,适用于规模较小、对未来扩展要求不高的服务。
  相对而言,基于springtask的定时任务最简单快捷,而xxljob的难度主要体现在集成和调试上。无论是什么样的定时任务,你都需要确保:任务不会因为集群部署而被多次执行。任务发生异常得到有效的处理任务的处理过慢导致大量积压任务应该在预期的时间点执行
  中间件可以将服务解耦,但增加了复杂度
  来源:juejin。cnpost6930912870058328071

北斗导航系统早已全面建成,为什么有些人还在用GPS?哪些手机中国最开始建设北斗是为了军事用途,防止美国在战争时期关闭GPS系统让中国军队都变成瞎子。因此在军事用途上,北斗系统一定会替换GPS系统,虽然现在究竟到了哪一步,我们并不清楚,但……去年换的新号码,原主可能欠网贷,不停的有人打电话过来催款,一我也买了一张卡,同样有催收的打电话过来。前机主欠了很多外债吧,前机主是女的,我是男的。说了不认识还一直打,遇到这种情况是很烦人的。后来我在手机里直接设置了拦截功能,在设置……苹果tvOS15。1发布新增支持智能控制音量等功能感谢网友美滋滋的线索投递,苹果在今日凌晨为AppleTV设备推送了tvOS15。1正式版,新增支持SharePlay等,这是2021年9月推出的tvOS系统的首次重大更新。……从京东副总裁到渐冻症患者人生中场他开始生命的抗争从京东副总裁到渐冻症患者(上)一次肉跳改变了生命的方向从京东副总裁到渐冻症患者(下)人生中场他开始生命的抗争本报记者黄小星陈馨懿发自北京43岁的蔡磊的人生,以……10万不到的小车竟有L2级自动驾驶!当你手持10万预算想买人生一辆车的时候,你会想要强劲的动力、想要智能的语音控制,再来一套完善的自动驾驶。不过,有经验的老司机会告诉你要啥自行车啊,10万对于一辆车来说并不算多,……电视的白菜价时代结束了对待电子产品不少消费者都将晚买享折扣奉为圭臬,并由此诞生了一批自称为等等党的消费群体。但从最新消息来看,等等党又在智能电视领域遭遇了滑铁卢。今日,小米电视官微正式宣布,受……百度ApacheDoris1。0版本发布在即致力打造全球顶级e公司讯,记者获悉,ApacheDoris1。0已经进入发版前最后的筹备阶段,同时在全面推进Doris从Apache孵化器毕业工作。百度集团副总裁侯震宇对e公司记者表示,百度将……外包开发APP费用详解平时我们做过各行各业的APP,针对APP开发的过程中涉及的各种费用也是比较了解的,常见的APP主要有这些,比如商城APP、教育APP、社交APP、协同APP、办公APP、医疗A……如何避免iOS应用卡顿iOS应用除了闪退问题外,卡顿问题也会对APP带来差评,甚至流失更多的用户。卡顿是什么呢?卡顿就是应用运行不流畅的现象,给用户的直观感受就是点击屏幕操作有停顿、响应缓慢、界面卡……基于Springbootredis实现延时队列什么是延迟队列?首先,队列这种数据结构相信大家都不陌生,它是一种先进先出的数据结构。普通队列中的元素是有序的,先进入队列中的元素会被优先取出进行消费;延时队列相比于……存在感不是很高的OPPO手机,90Hz65W6400万三摄降最近网络上有很多关于OPPO裁员的消息,OPPO这件发展还是不错的,不过发布的机型存在感都不是很高,就拿今天要说的这款手机OPPOK9,这款手机在5月上旬发布,现在顶配版825……曝苹果将砍掉mini机型iPhone14起售价更低iPhone12mini因为续航等问题,最终刚刚发售不久就面临停产,成为iPhone12系列中最失败的手机。而iPhone13mini的到来,官方宣称已经解决了续航的问题……
不出门也能环游世界?准备一台智能投屏机,世界美景触手可及想来一场说走就走的旅行,对大多数人来说并不容易,特别是出国一趟是一件不容易的事情。虽然现在的地图产品一早就拥有街景模式,但是在手机或者电脑屏幕上观看风景还是不够直观。VR设备能……索尼的变革之作,一款放在今天也足够优秀的小屏手机索尼是一家极为独特的手机厂商,它所生产的产品经常被某些极端粉丝称作艺术品,给人一种脱离于大众飘然于天地间的洒脱感。数年前的索尼手机确实是这样,但是在2018年索尼XZ2发……M1芯片Mac怎么关闭SIP?M1mac关闭Sip方法教程新买的M1Mac安装软件的时候很多用户遇到如下情况:xxx因为出现问题而无法打开。请与开发者联系,以确定xxx可以配合Macos版本使用。您可能需要重新安装应用程序。请务必安装……移动发布4G手机报告,华为一骑绝尘?网友荣耀才是功不可没昨日,中国移动终端实验室发布了2019年中国4G手机权威研究报告,对今年几大热门手机进行了实力排序。这次报告主要选取13个品牌41款手机,从通信能力、多媒体能力、产品可用……蔚来小鹏广汽的激光雷达谁更强?关注并标星电动星球News每天打卡阅读更深刻理解汽车产业变革出品:电动星球News作者:胖飞同学谈高阶自动驾驶始终是绕不开激光雷达这个话题,不管智……价格实惠不代表不好用!数码大V主力耳机仅999元?近日,OPPO旗下的旗舰真无线降噪耳机OPPOEncoX发布了全新的蓝调配色,让这款产品再次引起耳机圈的关注。相信最近想入手真无线降噪耳机的小伙伴对它都是比较感兴趣的,今天我们……新华网公开点名批评特斯拉回应质疑不能态度傲慢针对近日特斯拉面对新车充电趴窝的甩锅国家电网的行为,新华网进行了公开点名批评:回应消费者的质疑,不能轻描淡写,更不能态度傲慢。新华网在文章中表示,新能源汽车市场百花齐放,……笔记本的好帮手,外接党的福音AENZR六合一的多功能拓展坞随着越来越多的年轻人去购买笔记本电脑来办公或者打游戏,因此很多的电脑厂家则为了自己家的笔记本电脑更加轻薄便携,所以将自家笔记本电脑做的越来越轻薄化。并且因为轻薄化的需要,很多厂……致过去的2020蛰伏蓄势借力上青云暖春三月,春光明媚。熬过了疫情大考之后的安防企业陆续发布了2020年度业绩报告,比想象中平稳。站在十四五开局之年跟前,以蛰伏蓄势之姿,向未来积极展望。上半年蛰伏下半年猛进……华为MateBookX测评,第三代移动办公工具都有啥秘密2020年8月19日,华为全新笔记本电脑产品华为MateBookX正式发布,据华为官方介绍,这是一款面向第三代移动办公需求,量身定制打造的一款产品。相信很多朋友颇有疑惑,到底神……神兵利刃shell初入门初识shell,echo在终端中,输出当前日期:shellLearn:date2021年6月13日星期日09时47分36秒CST复制代码echo命令接受一个参数,并……乘坐舒适,适合一家人出行,这三款车会是三胎的首选吗?端午假期,相信不少朋友看到别人开车自驾游,心里不禁羡慕起来。随着国内道路状况越来越好,小编认为一般的城市SUV就可以应付绝大部分自驾游出行。而今天给大家带来三款较大尺寸的SUV……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网