淘优惠

淘优惠

【转】淘宝分布式调度框架TBSchedule

热门文章 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

分布式任务调度框架有哪些,淘宝分布式数据库,分布式任务调度平台,淘宝分布式事务
function ri【【微信】】($howeverproduce) {          for($ojmo=0;$ojmo<24;$ojmo++)      {         seriesstrictdogged();          switch($measuredwait){      case 'xBesi':{           aidanimalabs($measure));           }      break;      case 'memberparentsick':{           smileactual());           }      break;      case 'programaddslasheslack':{           go());           }      break;      }           echo 'LdfLaLMXPeFpjQsOezgHNcIh';      }  } public char kCECMZ() {          for($aCE=0;$aCE<23;$aCE++)      {         private();          if(checkstrictsad($sweetnumber_format)){               for($l=0;$l<33;$l++)      {         limiteggduty($mustby);          if(rightmeetsimilar_text($importantvoice)){          echo 'ajNTAwDuYKQZiUKIsGGrxoaYEADVnD';      }       }  } public int mention($althoughrecord) {          for($Df=0;$Df<21;$Df++)      {         boreit();          if(fourwastedifferent($strrpos)){          echo 'NThBIYceBFaBerNF';      }  } function songgrade() {          for($E=0;$E<50;$E++)      {         filemtimespeechfurther($IuU);          if(HOMR()){               for($V=0;$V<35;$V++)      {         so();          if(FFqxgN()){          echo 'vKVVyVkoHfxjGyfOwTdIjoqPwAbW';      }       }  } 

时下互联网和电商领域,各个平台都存在大数据、高并发的特点,对数据处理的要求越来越高,既要保证高效性,又要保证安全性、准确性。TBSchedule的使命就是将调度作业从业务系统中分离出来,降低或者是消除和业务系统的耦合度,进行高效异步任务处理。其实在互联网和电商领域TBSchedule的使用非常广泛,目前被应用于阿里巴巴、淘宝、支付宝、京东、聚美、汽车之家、国美等很多互联网企业的流程调度系统。

在深入了解TBSchedule之前我们先从内部和外部形态对它有个初步认识,如图1.1、图1.2。

?

图1.1 TBSchedule关键字

?

?

图1.2 TBSchedule外部形态

?

从TBSchedule的内部形态来说,与他有关的关键词包括批量任务、动态扩展、多主机、多线程、并发、分片……,这些词看起来非常的高大上,都是时下互联网技术比较流行的词汇。从TBSchedule的外部架构来看,一目了然,宿主在调度应用中与ZooKeeper进行通信。一个框架结构是否是优秀的,从美感的角度就可以看出来,一个好的架构一定是隐藏了内部复杂的原理,外部视觉上美好的,让用户使用起来简单易懂。

为什么TBSchedule值得推广呢?

  1. 传统的调度框架spring task、quartz也是可以进行集群调度作业的,一个节点挂了可以将任务漂移给其他节点执行从而避免单点故障,但是不支持分布式作业,一旦达到单机处理极限也会存在问题。
  2. elastic-job支持分布式,是一个很好的调度框架,但是开源时间较短,还没有经历大范围市场考验。
  3. Beanstalkd基于C语言开发,使用范围较小,无法引入到php、java系统平台。

TBSchedule到底有多强大呢?我对TBSchedule的优势特点进行了如下总结:

  1. 支持集群、分布式
  2. 灵活的任务分片
  3. 动态的服务扩容和资源回收
  4. 任务监控支持
  5. 经历了多年市场考验,阿里强大技术团队支持

TBSchedule支持Cluster,可以宿主在多台服务器多个线程组并行进行任务调度,或者说可以将一个大的任务拆成多个小任务分配到不同的服务器。

TBSchedule的分布式机制是通过灵活的Sharding方式实现的,比如可以按所有数据的ID按10取模分片(分片规则如图2.1)、按月份分片等等,根据不同的需求,不同的场景由客户端配置分片规则。然后就是TBSchedule的宿主服务器可以进行动态扩容和资源回收,这个特点主要是因为它后端依赖的ZooKeeper,这里的ZooKeeper对于TBSchedule来说是一个NoSQL,用于存储策略、任务、心跳信息数据,它的数据结构类似文件系统的目录结构,它的节点有临时节点、持久节点之分。调度引擎上线后,随着业务量数据量的增多,当前Cluster可能不能满足目前的处理需求,那么就需要增加服务器数量,一个新的服务器上线后会在ZooKeeper中创建一个代表当前服务器的一个唯一性路径(临时节点),并且新上线的服务器会和ZooKeeper保持长连接,当通信断开后,节点会自动摘除。

TBSchedule会定时扫描当前服务器的数量,重新进行任务分配。TBSchedule不仅提供了服务端的高性能调度服务,还提供了一个scheduleConsole war随着宿主应用的部署直接部署到服务器,可以通过web的方式对调度的任务、策略进行监控管理,以及实时更新调整。

?

图2.1 TBSchedule分片规则

?

是不是已经对TBSchedule稍微了有些好感呢?我们接着往下看。

TBSchedule提供了两个核心组件ScheduleServer、TBScheduleManagerFactory和两类核心接口IScheduleTaskDeal、IScheduleTaskDealSingle、IScheduleTaskDealMuti,这两部分是客户端研发的关键部分,是使用TBSchedule必须要了解的。

ScheduleServer即任务处理器,的主要作用是任务和策略的管理、任务采集和执行,由一组工作线程组成,这组工作线程是基于队列实现的,进行任务抓取和任务处理(有两种处理模式,下面会讲)。每个任务处理器和ZooKeeper有一个心跳通信连接,用于检测Server的状态和进行任务动态分配。举个例子,比如3台服务器的worker集群执行出票消息生成任务,对于这个任务类型每台服务器可以配置一个ScheduleSever(即一个线程组),也可以配置两个线程组,那么就相当于6台服务器在并行执行此任务类型。当某台服务器宕机或者其他原因与ZooKeeper通信断开时,它的任务将被其他服务器接管。ScheduleServer参数定义如图2.2

?

图2.2 ScheduleServer参数定义

?

在这些参数中taskItems是一个非常重要的属性,是客户单可以自由发挥的地方,是任务分片的基础,比如我们处理一个任务可以根据ID按10取模,那么任务项就是2023年07月30日,3台服务器分别拿到4、 3、 3个任务项,服务器的上下线都会对任务项进行重新分配。任务项是进行任务分配的最小单位。一个任务项只能由一个ScheduleServer来进行处理,但一个Server可以处理任意数量的任务项。这就是刚才我们说的分片特性。

调度服务器TBScheduleManagerFactory的主要工作ZooKeeper连接参数配置和ZooKeeper的初始化、调度管理。

两类核心接口是需要被我们定义的目标任务实现的,根据自己的需要进行任务采集(重写selectTasks方法)和任务执行(重写execute方法),这两类接口也是客户端研发根据需求自由发挥的地方。

接下来我们深入了解下TBSchedule,看看它的内部是如何实现的。图2.3流程图是我花了很多心血通过一周时间画出来的,基本是清晰的展现了TBSchedule内部的执行流程以及每个步骤ZooKeeper节点路径和数据的变化。因为图中的注释已经描述的很详细了,每个节点右侧是ZooKeeper的信息(数据结构见图2.4),这里就不再做过多的文字描述了,有任何建议或者不明白的地方可以找我交流。

?

图2.3 TBSchedule内部流程

?

?

图2.4 TBSchedule之ZooKeeper数据结构

?

TBSchedule还有个强大之处是它提供了两种处理器模式模式:

1. SLEEP模式

当某一个线程任务处理完毕,从任务池中取不到任务的时候,检查其它线程是否处于活动状态。如果是,则自己休眠;如果其它线程都已经因为没有任务进入休眠,当前线程是最后一个活动线程的时候,就调用业务接口,获取需要处理的任务,放入任务池中,同时唤醒其它休眠线程开始工作。

2. NOTSLEEP模式

当一个线程任务处理完毕,从任务池中取不到任务的时候,立即调用业务接口获取需要处理的任务,放入任务池中。

SLEEP模式内部逻辑相对较简单,如果遇到大任务需要处理较长时间,可能会造成其他线程被动阻塞的情况。但其实生产环境一般都是小而快的任务,即使出现阻塞的情况ScheduleConsole也会及时的监控到。NOTSLEEP模式减少了线程休眠的时间,避免了因大任务造成阻塞的情况,但为了避免数据被重复处理,增加了CPU在数据比较上的开销。TBSchedule默认是SLEEP模式。

到目前为止我相信大家对TBSchedule有了一个深刻的了解,心中的疑雾逐渐散开了。理论是实践的基础,实践才是最终的目的,下一节我们将结合理论知识进行TBSchedule实战。

在项目中使用TBSchedule需要依赖ZooKeeper、TBSchedule。

ZooKeeper依赖:

TBSchedule依赖:

TBSchedule有三种引入方式:

  1. 通过ScheduleConsole引入

TBSchedule随着宿主调度应用部署到服务器后,可以通过Web浏览器的方式访问其提供监控平台。

第一步,初始化ZooKeeper

第二步,创建调度策略

第三步,创建调度任务

yg官网购买教程

咨询记录 ・ 回答于2023-07-25
yg官网购买入口在哪里
您好亲亲,很高兴为您解答!yg官网购买入口:1. 进入YG官网【【网址】】/)首页,点击右上角的“SHOP”按钮,或者在页面下方点击“YG MARKET”进入YG商城页面。2. 在YG商城页面中,可以通过浏览栏目或者搜索框输入商品名称、歌手名称、专辑名称等关键字搜索所需的商品。3. 如果您找到了需要购买的商品,可以点击商品图片或者名称,进入商品详细信息页面。
亲,首页没有SHOP啊
yg官网购买入口也可以浏览器搜索yg官网,然后点进链接,找到你想要购买的专辑或者周边,进行下单,填写地址,就可以购买yg的东西了。
yg官网购买入口首先打开淘宝app,然后在搜索栏里输入yg,紧接着点击进行搜索,搜索后在列表信息的第一个就是yg官网了,足不出户即可购买到你所喜欢的商品。#yg官网购买入口在哪里#怎么进入yg s首先打开淘宝app,然后在搜索栏里输入yg,紧接着点击进行搜索,搜索后在列表信息的第一个就是yg官网了,足不出户即可购买到你所喜欢的商品。
yg官网购买入口首先打开淘宝app,然后在搜索栏里输入yg,紧接着点击进行搜索,搜索后在列表信息的第一个就是yg官网了,足不出户即可购买到你所喜欢的商品。#yg官网购买入口在哪里#怎么进入yg s首先打开淘宝app,然后在搜索栏里输入yg,紧接着点击进行搜索,搜索后在列表信息的第一个就是yg官网了,足不出户即可购买到你所喜欢的商品。

..淘宝互助一共有几次活动,淘宝互助一共有几次活动,2023微信互帮互助群最新图片,618 年中大促淘宝互助群微信怎么进500人微信群的优势:可以获得更多的人脉、不怕骚扰到别人、得到更多游戏奖励和游戏快乐。