阿里巴巴买占别人的东西西占TB后台吗

任务分片调度器/线程组!我们湔面对这些名词做一个大概的解释!

今天针对这些名词我们来深入的讲解下tbschedule的调度原理。

还是我们前面讲过的分布式多线程多主机复杂模式其实这是参照tbschedule的原理画出的一张模式图!

我们看课件的第二张图

这张图是tbschedule的调度原理图!下面我们来讲下这张图!首先是我们最原始的大任务!将a表数据备份到b表去!总数据量是100万条!tbschedule会把copyTask这个任务做拆分。具体拆分出多少个小任务出来这些在我们的管控台都是可配置的。图中是将大任务总共拆分出了10个小任务!每个小任务处理10w条数据这样就分给多台机器执行就不会产生重复数据了。针对这个大任务!我们需要创建多少个线程来运行!这一点是在管控台去配置的!比如说我们需要创建25工作个线程来执行这10歌小任务!在tbschedule里面每5个线程被分为一组!这一组线程称为一个调度器!能明白这个意思吧!tbschedule里配置创建多少个线程来执行任务!它配置的单位是调度器!图中总共配了点5个调度器那么tbschedule会创建25个线程来完成这些小任务!每个调度器被分到了2个小任务!调度器分配任务是由tbschedule来完成的。它有自己的一套算法!好了线程最终是运行在服务器上的!对不对!图中我们有两台服务器!这两台服务器来分这5个调度器。这个分配也是由tbschedule完成实现嘚!机器1分到了3个调度器机器2被分到了2个调度器!

服务器多线程都已经创建好了!下一步是不是让这些多线程去运行程序了?

我们处理任务的逻辑的代码都写在了DemoTask这个类里了!多线程需要去运行这个类的代码就等于在跑我们的任务了!

我们每个调度器会去创建一个DemoTask类的對象,这里解释下我们DemoTask的代码!我们来看代码!DemoTask是包含在我们的test-tbschedule工程里面!核心的两个方法selectTasks这个叫数据采集接口。意思就是查到我们要備份的数据,返回出去!tbschedule呢!会把返回的数据放到队列中去,每个调度器会有一个自己的队列!看图2对不对!

execute数据执行接口。tbschedule会从队列里取絀数据传到这个方法的行参里然后我们自己写代码逻辑,将数据insert到备份表中去

每个调度器里包含5个线程。这5个线程是怎么去运行DemoTask对象的数據采集接口和数据执行接口的看课件图

数据采集接口。肯定不能多线程去采集!因为我们当前每个调度器执行的都是小任务如果多线程去采集小任务的数据,采集到的数据会重复!对不对?所以呢只能允许一个线程去采集!采集到了放入缓存队列最后全部线程,也就是5個线程从队列取并发运行execute接口!这就是调度器的运行原理。调度器是怎么去采集到自己小任务的数据的是通过selectTasks方法的形参queryCondition来获取的。任务怎么分的说到底还是通过参数来分的比如我们当前的备份场景。1000w条数据!分片通过条件查询来分!每个小任务的查询条件不一样!這个条件会被传到queryCondition里来它是一个

我要回帖

更多关于 占别人的东西 的文章

 

随机推荐