为什么要使Service Fabric中的最小副本副本和目标副本副本大小相同?

问题描述 投票:0回答:1

此问题专门针对Service Fabric,但概念超出了这一群集系统,因此无需SF经验即可随意介入。

我正在尝试了解将有状态服务的MinReplicaSetSize和TargetReplicaSetSize设置为相同或不同的数字的利弊。

假设您有10个分区和3个副本。这意味着每个分区将具有3个副本(1个主副本和2个辅助副本)。假设您有一些Collection分布在这10个分区中。有两种情况需要考虑:

MinReplica和TargetReplica = 3

在某些分区上,主副本失败。其中一所中学被提升为小学。因为副本计数= 2

MinReplica = 2和TargetReplica = 3

在某些分区上,主副本失败。其中一所中学被提升为小学。由于MinReplica计数仍然是安全的,因此继续写入新的主数据库并更新剩余的1个辅助数据库。发生这种情况时,假脱机了另一个辅助服务器,然后在继续写入的同时必须加快速度。 那么缺点是什么?

在新的辅助数据库赶上速度之前,新的辅助数据库可能会失败,辅助数据库又会升格为主节点,并且也会失败; 因此丢失已提交的数据?这是不利之处吗?在MinReplica = 3 / TargetReplica = 4的情况下,即使这样也不会发生。

我问,因为我通常将它们视为相等的数字,并开始考虑它。

cluster-computing azure-service-fabric distributed-computing distributed-system
1个回答
0
投票

此语句“ 在某些分区上,主副本失败。其中一个副本被提升为主副本。由于副本数量= 2 “不正确。

为了使写入成功,该操作必须在N个副本的多数(N / 2)+1上成功完成。具有三个副本,意味着仲裁大小为2。如果2个写入成功,则写入操作成功。将其更改为2不会影响仲裁。仲裁的大小由MinReplicaSetSize大小得出。将其更改为5意味着仲裁大小为3,然后有关丢失1个副本的声明将变为有效。

还请注意,副本集上的MinReplicaSetSize是'view':

MinReplicaSetSize定义了视图,例如,如果TargetReplicaSetSize为5,并且MinReplicaSetSize为3,那么即使有3个并发失败[它]在其副本集视图中仍将具有三个副本。

© www.soinside.com 2019 - 2024. All rights reserved.