Tbschedule参数配置理解

Tbschedule解决的关键问题是分布式任务调度问题,所以,它的核心是如何将一批任务拆分到多个机器上,多个线程上执行。并且做到均匀分配,不重复执行,探活高可用等。但实际使用中,其参数较多,不同的worker业务场景需要不同的参数配置,本篇主要讲述tbschedule对应的任务分配中角色对应关系以及分配过程的理解。以便于在具体业务研发具体分析。

具体问题case

Attention: 建议首先尝试自己回答一下如下问题,如果有比较清晰的理解。就无需在往下看了

Tbschedule有一worker配置如下:
任务名称:testworker
机器数量:4台 (192.168.0.1 – 192.168.0.4)
任务最大线程组数:2组
单个线程组线程数量:3个
任务项:0,1,2,3
每次获取任务数量:90
每次执行数量:10
单jvm最大线程组数:不限制

问题:说明任务项和线程组在机器上可能的分配情况之一,并说明分配任务后,单台机器线程执行模型?

主要概念解析

  • 线程组:线程组是最基本的概念,通俗的理解,它就是一个执行任务的线程池,每个线程池分配了对应的任务项以完成任务分片,并且分配多个执行线程,用来并发的执行任务以提高效率。概括下来,如下图所示:(下图与上述问题无关,完全属于阐述概念理解)

    • 线程组与机器是多对一的关系,即一台机器分配多个线程组。
    • 为了任务分片,一个线程组对应多个任务项。这里尤其重要,之前本人错误的理解成了任务项是直接分配到主机上,其实任务项是分配在线程组上的。
    • 为了并发消费任务,一个线程组包含多个线程。
      在这里插入图片描述
  • 任务项:任务分片的保障,**tbschedule将总任务项进行分片,从属关系到若干个线程组中,**在线程组中,将获取到的任务项应用到具体sql的where条件中,以完成对应的处理任务分配。

任务分配过程(问题case解析)

  • 第一步:将线程组和任务项分配到具体的机器上
    • 因最大任务线程组是2组,并且单jvm最大线程组不限制,为了性能考虑,均匀分配,tbschedule会将2个线程组均匀的分配到2台机器上,下图只是其中可能的分配情况之一。也可能分配到0.2或0.4上,总之,均匀是这里面的关键词。而任务项总共有4个,同样,为了均匀考虑,会有1个线程组对应2个任务项的分配。如下图所示。
    • 扩展一个问题,如果线程组设置了7组,可能的分配情况是什么样子呢??

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CE3Cm0Za-1630917497325)(/Users/zhanglei10/Downloads/第一步:将线程组和任务项分配到具体的机器上.png)]

  • 第二步:分配任务后,单台机器上的线程组执行模型
    • 查询线程:因每次获取任务数量为90,所以,查询线程初始获取任务数据为90条
    • 每次执行数量为10个任务,则查询线程将任务分批,每10个作为一个数组任务投递到线程组(也就是线程池)中。一共有90个任务,那也就是有9个线程池任务被投递(图中使用Runnable是为了便于理解。)
    • 单个线程数线程数量为3,则该线程组有3个线程,每次从线程组(线程池)中获取10个任务,用来执行。
      在这里插入图片描述
总结

上述case解析主要是为了在配置相应参数时能够理解,并形成对应的思路。在实际应用中遇到的场景也不尽一致,我大致列举了一些可能的配置场景

  • worker本身需要处理的业务瞬间体量不大,属于单位时间内定量大小的情况。这时尽可能的缩小任务项和线程数以节省系统资源。并且,单次load和执行的任务数量尽可能的小。这样有助于线程均匀的拿到任务。
  • 有一些提醒的worker,只需要单台机器执行。这时,可以考虑限定IP,或者任务项,线程组,线程数都设置为1,以达到同样效果
  • 为了在主机上均匀分配任务,线程组和任务项最好是主机的倍数!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值