
本文将介绍Apache SeaTunnel的TaskExecutionServer设计思路。
TaskExecutionServer是执行Task的具体服务,它会在每个节点上运行一个实例。
TaskExecutionServer不仅负责接收来自JobMaster下发的TaskGroup并运行其中的Task,还维护着TaskID->TaskContext的映射关系。
对Task的具体操作,则封装在TaskContext中。
Task内部持有OperationService,这意味着Task可以通过OperationService 对其他Task或者JobMaster等进行远程调用和通信。
01
TaskGroup

02
Task设计

03
Thread Share优化

所以可以让Task线程共享变成动态的,并且一组Task由一个线程池负责执行(Task数量 >> 线程数)。在thread1执行的过程中若Task1的call()方法执行时间超过了设定值(100ms),这时候就会从线程池取出一个线程thread2去执行下一个Task2的Call方法。保证不会因为Task1执行时间太长从而导致其他Task延迟太高。






Apache SeaTunnel

精彩推荐
点击“阅读原文”参与共建!

文章转载自SeaTunnel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




