幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

架构方案优化分布式延迟任务触达时效性

  作者:小傅哥
  博客:https:bugstack。cn包含:Java基础,面经手册,Netty4。x,手写Spring,用Java实现JVM,重学Java设计模式,SpringBoot中间件开发,IDEA插件开发,DDD系统架构项目开发,字节码编程。。。
  沉淀、分享、成长,让自己和他人都能有所收获!一、前言
  不卷了,能用就行!
  哈哈哈,说好的不卷了,能凑活用就行了。但每次接到新需求时都手痒,想结合着上一次的架构设计和落地经验,在这一次需求上在迭代更新,或者找到完全颠覆之前的更优方案。卷完代码的那一刻总是神清气爽
  其实大部分喜欢写代码的一类纯粹码农,都是比较卷的,就比如一个需求在实现上是能用大概是P5、如果这个做出来的功能不只是能用还非常好用是P6、除了好用还凝练共性需求开发成通用的组件服务是P7。每一个成长过来的码农,都是在造轮子的路上一次次验证自己的想法和加以实践,绝对不是一篇篇的八股文就能累出来一个高级的技术大牛。二、延迟任务场景
  什么是延迟任务?
  当我们的实际业务需求场景中,有一些活动开始前的状态变更、订单结算后的T1对账、贷款单息费的产生,都是需要使用到延迟任务来进行触达。实际的操作一般会有Quartz、Schedule来对你的库表数据进行定时扫描和处理,当条件满足后做数据状态的变更或者产生新的数据插入到表中。
  这样一个简单的需求就是延迟任务最初需求,如果需求前期内容较少、使用方不多,可能在实际开发中就只是一个单台机器直接对着表一顿轮训就完事了。但随着业务需求的发展和功能的复杂度提升,往往反馈到研发设计和实现,就不那么简单了,比如:你需要保障尽可能低延迟完成较大规模的数据量扫描处理,否则就像贷款单息费的产生,已经到了第二天用户还没看到自己的息费信息或者是还款后的重新对账,可能就这个时候就要产生客诉了。
  那么,类似这样的场景该如何设计呢?三、延迟任务设计
  通常的任务中心处理流程主要,主要是由定时任务扫描任务库表,把即将达到超时时间的任务信息扫描到处理队列(内存MQ消息),再由业务系统进行处理任务,处理完成后更新库表中的任务状态。
  高延时任务调度
  问题:海量数据规模较大的任务列表数据,在分库分表下该需要快速扫描。任务扫描服务与业务逻辑处理,耦合在一起,不具有通用性和复用性。细分任务体系有些是需要低延迟处理的,不能等待过长时间。1。任务表方式
  除了一些较小的状态变更场景,例如在各自业务的库表中,就包含了一个状态字段,这个字段一方面有程序逻辑处理变更的状态,也有到达指定到期时间后由任务服务自动变更处理的操作,一般这类功能,直接设计到自己的库表中即可。
  那么还有一些较大也较为频繁使用的场景,如果都是在每个系统的各自所需的N多个表中,都添加这样的字段进行维护,就显得非常冗余了,也不那么易于维护。所以针对这样的场景就很适合做一个通用的任务延时系统,各业务系统把需要被延时执行的动作提交到延时系统中,再有延时系统在指定时间下进行回调,回调的动作可以是接口或者MQ消息进行触达。例如可以设计这样一个任务调度表:
  任务调度库表设计抽取的任务调度表,主要是拿到什么任务,在什么时间发起动作,具体的动作处理仍交给业务工程处理。大批量的各自业务的任务进行集中处理,则需要设计一个分库分表,满足于后续业务体量的增长。门牌号设计,针对一张表的扫描,如果数据量较大,又不希望只是一个任务扫描一个表,可以多个任务扫描一个表,加到扫描的体量。这个时候就需要一个门牌号来隔离不同任务扫描的范围,避免扫描出重复的任务数据。2。低延迟方式
  低延迟处理方案,是在任务表方式的基础上,新增加的时间把控处理。它可以把即将到期的前一段时间的任务,放置到Redis集群队里中,在消费的时候再从队列中pop出来,这样可以更快的接近任务的处理时效,避免因为扫库间隔较大延迟任务执行。
  任务处理流程在接收业务系统提交进来的延迟任务时,按照执行时间的长短放置到任务库或者也同步到Redis集群中,一些执行时间较晚的任务则可以先放到任务库,再通过扫描的方式添加到超时任务执行队列中。那么关于这块的设计核心在于Redis队列的使用,以及为了保证消费的可靠性需要引入二阶段消费、注册ZK注册中心至少保证一次消费的处理。本文重点主要放在Redis队列的设计,其他更多的逻辑处理,可以按照业务需求进行扩展和完善
  Redis消费队列
  Redis消费队列按照消息体计算对应数据所属的槽位indexCRC327StoreQueue采用Slot按照SlotKey{topic}{index}和SortedSet的数据结构按执行任务分数排序,存放任务执行信息。定时消息将时间戳作为分数,消费时每次弹出分数小于当前时间戳的一个消息为了保障每条消息至少可消费一次,消费者不是直接pop有序集合中的元素,而是将元素从StoreQueue移动到PrepareQueue并返回消息给消费者。消费成功后再从PrepareQueue从删除,如果消费失败则从PreapreQueue重新移动到StoreQueue,这样二阶段消费的方式进行处理。参考文档:2021阿里技术人的百宝黑皮书PDF文,低延迟的超时中心实现方式
  简单案例Testpublicvoidtestdelayqueue()throwsInterruptedException{RBlockingQueueObjectblockingQueueredissonClient。getBlockingQueue(TASK);RDelayedQueueObjectdelayedQueueredissonClient。getDelayedQueue(blockingQueue);newThread((){try{while(true){ObjecttakeblockingQueue。take();System。out。println(take);Thread。sleep(10);}}catch(InterruptedExceptione){e。printStackTrace();}})。start();inti0;while(true){delayedQueue。offerAsync(测试i,100L,TimeUnit。MILLISECONDS);Thread。sleep(1000L);}}
  测试数据20220213WARN204760〔Finalizer〕i。l。c。resource。DefaultClientResources:io。lettuce。core。resource。DefaultClientResourceswasnotshutdownproperly,shutdown()wasnotcalledbeforeitsgarbagecollected。Callshutdown()orshutdown(long,long,TimeUnit)测试1测试2测试3测试4测试5Processfinishedwithexitcode1源码:https:git。comfuzhengweiTimeOutCenter描述:使用redisson中的DelayedQueue作为消息队列,写入后等待消费时间进行POP消费。四、总结调度任务的使用在实际的场景中非常频繁,例如我们经常使用xxljob,也有一些大厂自研的分布式任务调度组件,这些可能原本都是很小很简单的功能,但经过抽象、整合、提炼,变成了一个个核心通用的中间件服务。当我们在考虑使用任务调度的时候,无论哪种方式的设计和实现,都需要考虑这个功能使用时候的以为迭代和维护性,如果仅仅是一个非常小的场景,又没多少人使用的话,那么在自己机器上折腾就可以。过渡的设计和使用有时候也会把研发资源代入泥潭其实各项技术的知识点,都像是一个个工具,刀枪棍棒斧钺钩,那能怎么结合各自的特点,把这些兵器用起来,才是一个程序员不断成长的过程。如果你希望了解更多此类有深度的技术内容,可以加入Lottery分布式抽奖秒杀系统学习更有价值的更抗用的实战手段。

逐步打破安卓久用变卡固有认知,国产手机是如何做到的?毋庸置疑,在手机硬件配置拉不开明显差距的今天,系统流畅度已然成为主导用户消费决策的重要指标。而在过去很长一段时间里,相信很多人都留存有这样一种固有认知,那就是安卓手机用一两年就……Angelababy太美了从小就听大人说:只要人好看围块破布也好看,哈哈Angelababy诠释了这话,真是这样的,刚换了发型的baby,不得不说她又回春了不得不承认这次造型不错,跟她自己比还是有……出场132分钟0分,NBA历史首人!哈登已经尽力,是里弗斯不NBA常规赛开打一个月的时间,很多球队遭遇伤病潮。而受到影响最大的球队,一定是76人,他们球队的三巨头都受到不同程度的伤病困扰。哈登在11月初对阵奇才的比赛中,遭遇右脚肌腱拉伤……美白淡斑去暗黄的精华液有哪些?这些品牌的精华液用后肌肤超好美白淡斑去暗黄的精华液有哪些?这些品牌的精华液用后肌肤超好!雅诗兰黛黑钻松露双管精华这款黑钻松露双管精华是雅诗兰黛家相对而言最为高端的系列,这个系列主打的是以现金科……用了五年华为后再次换回小米,反差真的很大,体验不吐不快曾经我也用过很长时间的小米,但是在华为出了麒麟芯片之后,为了支持国货,也为了尝鲜,就换了华为的mate系列手机,后来一路用到了mate30。但是用久了就想换个新机,看现在华为没……请转给你的情人转给你的情人吧我不懂什么是爱,我只知道我总是会想你,什么都想和你分享,你回我消息的时候我就开心,你不理我的时候我就会难过。我想让你知道,你不是我权衡利弊之后的选择,……首届湖南旅游发展大会明天开幕办一次会兴一座城湖南日报全媒体记者刘涛通讯员宋美慧陈洁曾甲长张家界变了!两条娃娃鱼在初冬的夜里像在欢快地游动,那是张家界在两条高速公路入口设置的游客服务中心。城市装扮一新,在……何为真的嵌入式冰箱?看了COLMO纯平全嵌冰箱就明白啦最近京东家电与胡润百富发布《2022年中国高净值人群消费洞察与中高端冰洗消费趋势报告》,高净值人群消费已经呈现品质、品位、品牌三大基本要求。具体到冰箱品类,《报告》指出超薄嵌入……还有反转?球场冲突后女记者连发四文控诉北京队不要伤害他人北京时间1月9日,在CBA常规赛浙江广厦战胜北京首钢的比赛中,发生了极度不和谐的一幕。场下挂着吉林篮协的女记者不知为何与场上的翟小川,朱彦西等人发生了冲突,双方有着激烈地言语交……十连冠!中国队第22次夺得世乒赛男团冠军10月9日,成都世乒赛团体赛结束男团决赛争夺,由樊振东、马龙和王楚钦出阵的中国队以30击败欧洲劲旅德国队,实现世乒赛男团十连冠,这也是中国队第22次捧得男团冠军奖杯斯韦思林杯。……跨境交易总额近一半使用人民币结算中国人民银行9日发布的数据显示,人民币国际化经过十余年的发展,焕发出旺盛的生命力。目前,在我国金融机构、企业和个人开展的跨境交易总额中,有近一半使用人民币进行结算。主要离岸人民……宝可梦朱紫尽管不是完美的呈现,但还算是一场开心的冒险《宝可梦朱紫》已于11月18日发售,我在拿到游戏的第三天正式通关,共计游玩40小时。之后我又尝试了太晶团体战,并且利用新的孵蛋机制培育了一些宝可梦。除了对战,本作的系统我都尝试……
2022年会有好运的星座2022年有好运的三大星座俗话说得好,人在倒霉的时候喝凉水都塞牙,但是当一个人在运势好到爆棚的情况下,做什么事都特别容易就能成功。今天来和大家说说2022年会有好运的星座,一起来看看吧!巨蟹座……紫水晶适合什么人戴nbsp这三类美女的必选首饰每一种水晶都在等待它自己的主人。因为每一种水晶的能量不同、颜色不同,所以适合它的人也不同。作为水晶贵族的紫水晶,颜色美丽,功效良多,适合哪些人佩戴呢?一、失眠美眉。……图分析手工灯笼制作图解给你分享实用生活小技能自制手工灯笼是一个比较简单的自制手工教程,原材料也比较容易找得到,还可以当做家庭亲子活动,锻炼孩子的动手能力,促进感情交流。有兴趣的可以看以下方法介绍。一、制作手工纸灯笼……图黑色星期五是什么时候呢购物狂欢节强势来袭对于美国人来说,黑色星期五是一个激动人心的节日,因为这一天人们可以购买许多打折便宜的商品。而对于商家来说,这也是大赚一笔的好机会。这样的节日是什么时候呢?一提起购物,很多……WiFi7即将问世,网速可达40G比5G更快文BU审核子扬校对知秋近年来,传输范围更广、灵活性更高的无线网络技术快速发展,大有超过有线传输的势头。如今,无线网络技术已经来到了第六代,也就是WiFi6。WiFi……记性越来越差了?这4种食物是补脑高手,可以常吃现在学生的学习任务越来越重,不仅要在学业上有所收获,还要参加各种兴趣班,无形中会增加负担,因此家长需督促孩子养成好的生活习惯,平时多去运动,在饮食这方面也马乎不得,才能有效预防……白羊座最怕的3个星座天生相克一物降一物白羊座有着天不怕地不怕的性格,越是有困难越是会迎难而上,好胜心强。不过白羊座也会有害怕的星座。今天来和大家说说白羊座最怕的3个星座,下面一起来看看吧!处女座白羊之所……珍珠项链怎么清洗nbspnbsp两步教你轻松解决珍珠项链是很多女孩喜欢的首饰,以自身温润莹白的外表占据了消费者的心,不过在佩戴一段时间后,表面的光泽看起来就不太亮,今天就一起来看看怎么清洗吧。现在的女生都是很喜欢买一些……央视主持人曹晴为嫁美国丈夫放弃大好前途,如今过得怎么样了?我不是完美受害者,我是曹晴。为了家的名分我忍,为了婚姻的名分我忍,我身高1米68,体重96斤,我不是模特,我是饿的!2017年,远嫁到美国的原央视主持人曹晴,在社交……农牧行业前景迷茫,行情涨跌不见曙光如果说2022年的上半年几乎是农牧企业的滑铁卢,从第三季度开始,普遍业务开始好转,尤其是毛猪价格的回升,大多数养猪企业基本上实现了扭亏为盈,不过,能不能把前半年的亏空补齐,就要……图经典励志心灵鸡汤语录让你读后充满正能量网络上面有很多流行的心灵鸡汤语录,这些充满正能量的话语,让很多人在迷茫困惑之时找到了方向。下面,就为大家解读四句比较经典与常见的心灵鸡汤语录。心灵鸡汤这个词语相信很多人都……图剪纸字体的具体做法其实很简单剪纸的普及程度可以说是很广泛了,它是一种传统民俗文化,剪纸的出现可以追溯到几千年前,常见的剪纸就是剪纸喜字了,剪纸发展到现在,各种字体也越来越多。剪纸文化的源远流长,剪纸……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网