说起分布式调度框架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
这块的切片要和 任务添加 种的 【任务项(","分隔):】这个选项有关系后续会继续说明