分布式调度框架Tbschedule结构分析【01】

说起分布式调度框架Tbschedule 先从 Tbschedule-console 分析

对应实体类:

com.taobao.pamirs.schedule.strategy.ScheduleStrategy
1.策略名称:strategyName

2.任务类型:

public enum Kind {
    Schedule, Java, Bean
}
3.任务名称:taskName

  此任务名称对应 具体的任务名称

4.任务参数:taskParameter   这个参数目前一直没有用到过。

5.单JVM最大线程组数量  :numOfSingleServer

单JVM最大线程组数量,如果是0,则表示没有限制.每台机器运行的线程组数量 =总量/机器数

注意这个机器数 有点坑:机器数应该是启动的JVM的数量。这个机器数和我们平时理解的服务器的数量不是同一个

概念

6.最大线程组数量:assignNum

   所有服务器能够运行的最大数。这个又和我们理解的不太一样。应该是所有JVM能够同时运行的最大线程组数量。tbschdule分布式调度框架中有任务切片的功能。

   其实这个框架中的任务 可以举个栗子说明:某理财平台 每天10点会全量同步用户收益,这个算是一个任务。不管这个任务中包含多少数据。按照日常需求,我们肯定是想让这个定时任务 以最快的速度,且不重复的执行完毕。但是单台JVM的执行性能是有上限的。即使你单台服务器上的JVM开启多线程处理,总归会遇到单机性能瓶颈。此时tbshcule就出场了。此地的assignNum的含义是你能将这个任务切分成几片,并行执行。例如:你总共有1W条需要同步的用户收益记录,如果切分成四片之后,每个线程组只需要领取 2500个 要同步的数据。且每个线程组,又是多线程的,这样运行就效率高了。具体的切片方案有很多种。

这些切片方案最长见的是采用MYSQL的分表的hash切片策略。

具体可以参考:

https://www.jianshu.com/p/7aec260ca1a2

这块的切片要和 任务添加 种的 【任务项(","分隔):】这个选项有关系后续会继续说明

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章