将分区移动到新节点时是否有停机时间?



Service Fabric 提供了在删除节点或将节点添加到群集时重新平衡分区的功能。Service Fabric 群集资源管理器会将一个或多个分区移动到此节点,以便可以执行更多工作。

想象一个可靠的执行组件服务,它有数千个参与者运行,这些参与者分布在多个分区中。如果资源管理器决定移动一个或多个分区,这是否会导致停机?或者重新平衡分区的工作方式是否与升级服务相同?

它们的行为方式几乎相同,我可以指出的主要区别是升级可能只影响正在更新的服务,而重新平衡可能同时影响多个服务。在升级期间,群集也可能重新平衡服务,以使新的服务实例适合节点。

添加或删除节点 我会更多地与节点故障进行比较。在上述任何一种情况下,它们都将由于集群容量更改而重新平衡,而不是由于服务指标\负载更改。

节点故障和集群扩展(添加/删除节点(之间的主要区别在于,重新平衡将在此过程中考虑服务状态,当基础设施通知告知节点正在关闭(用于更新或维护,或缩减(时,SF 将要求基础设施等待,以便它可以为宣布的"故障"做好准备, ,然后开始重新平衡服务。

即使重新平衡关心缩减的服务状态,也不应将其视为比节点故障更可靠,因为基础结构将在关闭节点之前等待一段时间(它可以等待的限制将取决于您为群集定义的可靠性层(,直到 SF 检查服务是否满足运行状况条件, 就像关闭服务和创建新服务一样,检查它们是否可以正常运行而没有错误,如果此过程花费太长时间,一旦达到超时并且基础架构继续进行更改,这些服务可能会被终止,此外,服务的新实例可能会在新节点上失败,迫使服务再次移动。

在设计服务时,将重新平衡视为节点故障会更安全,因为最终没有太大区别。您的服务将四处移动,如果不持久化,存储在内存中的数据将丢失,服务地址将更改,等等。服务应具有复制的数据,客户端应始终使用重试逻辑并刷新服务位置以减少停机时间。

服务升级和服务重新平衡之间的主要区别在于,在升级期间,所有分区的所有副本都会在特定节点上关闭。根据这里的文档,平衡是在副本的基础上完成的,即只有来自某些分区的一些副本会被移动,因此不应该有任何中断。

最新更新