开发者社区 > 云原生 > 中间件 > 正文

关于 schedulerx 的选主和分配的疑问

关于 schedulerx 的疑问,1、server 节点之间通过 zk 是如何选主的,怎么决定哪些 app 归属哪个 server 节点?2、如果在当前架构扩容一台新的server节点,那么其没有任何调度任务,后面是如何过渡过来的?

展开
收起
游客gm6rxlkz44wno 2022-06-13 16:17:32 7873 0
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    关于 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 节点。 请注意,扩容新节点时,应该确保新节点的硬件配置和性能足以满足预期的工作负载需求。此外,在添加新节点之前,建议备份和恢复当前集群的状态和数据,以防止数据丢失或不一致性。

    2023-04-16 22:10:44
    赞同 展开评论 打赏
问答分类:
问答地址:

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载