java Apache Helix支持分区拆分和合并吗?
我知道ApacheHelix允许动态集群扩展/收缩(例如,添加/失败/删除物理节点)。但是,如果单个物理节点无法处理单个分区副本,则需要将一个分区拆分为两个。我知道我们需要预先估计工作量,这样我们就可以预先设置足够数量的分区。然而,随着流量的不可预测地增加,几乎不可能进行这样的预测。有人能告诉我Helix是否支持开箱即用的重新分区吗?如果我需要定制它来添加重新分区功能,那么工作量有多大,原则上如何做。我想快速估算一下。谢谢
你可以在下面搜索框中键入要查询的问题!
我知道ApacheHelix允许动态集群扩展/收缩(例如,添加/失败/删除物理节点)。但是,如果单个物理节点无法处理单个分区副本,则需要将一个分区拆分为两个。我知道我们需要预先估计工作量,这样我们就可以预先设置足够数量的分区。然而,随着流量的不可预测地增加,几乎不可能进行这样的预测。有人能告诉我Helix是否支持开箱即用的重新分区吗?如果我需要定制它来添加重新分区功能,那么工作量有多大,原则上如何做。我想快速估算一下。谢谢
# 1 楼答案
Helix不支持开箱即用的分区拆分/合并。在不了解底层系统的情况下,我们无法想出一种通用的方法来支持这一点
话虽如此,使用Helix提供的原语构建定制解决方案是可能的。如果你能提供更多关于你的系统的信息,我可能会提出一些建议
# 2 楼答案
我建议从大量(逻辑)分区开始,并为每个节点分配多个分区。当服务需要更多资源时,添加节点并将一些分区从现有节点移动到新节点。 例如,假设从50个节点开始,将工作负载的空间分割为50000个逻辑分区,并为每个节点分配1000个分区。然后当增加到75个节点时,重新分配。因此,每个节点将有667个分区。 根据实际情况,您可能希望最小化重新分配的分区,例如使用一致的哈希算法