入门
worker和server之间的关系
在K-Job分布式任务调度框架中,server和worker是两个核心组件,它们之间存在明确的分工和协作关系。
Server和Worker的定义
**Server(调度服务器)**是负责任务调度和管理的核心组件。 1 它接收来自Producer的任务创建/修改请求,进行任务调度,并将任务分发给Worker执行。 2
**Worker(任务执行器)**是实际执行任务的组件,运行在需要执行任务的应用程序中。 3 Worker通过NameServer发现可用的Server,并接收Server分发的任务进行执行。 4
它们之间的关系
1. 注册与发现关系
Server和Worker都需要向NameServer注册自己的信息:
- Server注册:Server启动时向NameServer注册,提供自己的IP地址,使自己可被Worker和Producer发现。 5
- Worker订阅:Worker向NameServer订阅,获取可用的Server列表,并建立心跳机制。 6
2. 负载均衡关系
NameServer采用”最小调度次数策略”来平衡Server和Worker之间的负载:
- NameServer记录每个Server的调度次数,将Worker分配给调度次数最少的Server。 7
- 当Worker数量超过阈值时,系统会自动拆分Worker组并重新分配到不同的Server。 8
3. 任务调度关系
Server负责将任务分发给Worker执行:
4. 心跳监控关系
系统通过心跳机制维护Server和Worker的健康状态:
- Server和Worker都定期向NameServer发送心跳,NameServer通过
ClientStatusManager跟踪它们的活跃状态。 11 - 超时的Server或Worker会被自动清理。 12
Notes
Server和Worker的这种设计实现了任务调度的分离:Server专注于调度逻辑和任务管理,Worker专注于任务执行,通过NameServer实现服务发现和负载均衡。这种架构支持动态扩缩容,能够很好地适应大量并发任务的场景。
Wiki pages you might want to explore: