关于 schedulerx 的疑问,1、server 节点之间通过 zk 是如何选主的,怎么决定哪些 app 归属哪个 server 节点?2、如果在当前架构扩容一台新的server节点,那么其没有任何调度任务,后面是如何过渡过来的?
关于 SchedulerX 的选主和任务分配问题,具体说明如下:
选主过程 SchedulerX 使用 ZooKeeper 实现了高可用性,并通过 ZooKeeper 实现了实例之间的协调。在 SchedulerX 集群中,每个 Server 节点都会尝试成为主节点。当一个节点认为自己可以成为主节点时,它会尝试向 ZooKeeper 注册一个 znode,如果注册成功,则表示该节点成为了主节点。其他节点会监听该 znode 的变化,如果发现主节点不可用,则会在一段时间后再次尝试成为主节点。
关于 app 归属哪个 server 节点的问题,SchedulerX 中的 App 是在启动时被分配到特定的 Server 节点上的。在 SchedulerX 中,Server 节点负责管理和执行 App,因此必须将 App 分配到可靠且适合其工作负载的 Server 节点上。SchedulerX 通过使用一致性哈希算法来实现 App 的分配。具体来说,在启动时,每个 Server 节点会计算出一组哈希值,并将这些哈希值与 App ID 进行映射,从而确定哪些 App 分配给它自己。当新的 Server 节点加入集群时,它会重新计算哈希值,并根据哈希值范围接管相应的 App。
扩容过程 如果您在当前的 SchedulerX 集群中新增了一台新的 Server 节点,可以遵循以下步骤将其加入到集群中:
在新节点上安装 SchedulerX,并确保它与 ZooKeeper 连接正常。 启动 SchedulerX 服务,该服务会尝试加入到集群中。 当新节点成功加入集群时,它会从其他节点复制所有任务信息。因此,即使新节点没有调度任务,它仍然可以获取整个集群的状态信息。 当有新任务需要调度时,SchedulerX 会根据 App ID 和 Server 节点的哈希值范围自动将任务分配给新的 Server 节点。 请注意,扩容新节点时,应该确保新节点的硬件配置和性能足以满足预期的工作负载需求。此外,在添加新节点之前,建议备份和恢复当前集群的状态和数据,以防止数据丢失或不一致性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。