Open chrisliu1995 opened 1 week ago
MinAvailable 的取值必定是小于replicas的取值的,所以 按比例设置的时候按照 0<value<1 取值是合理的。关于具体取值如下情况进行讨论
取值范围在 0-100% 即 [0,100],对于大于100%的设置毫无意义,但是为了规避这种情况,直接使其强制变成100%,即 200% -> 100%
在计算过程中产生小数怎么取值?
我觉得可以用 向上取整 的方式进行取整,MinAvailable的设置一般会设置在 30%-50% 91%-100%的情况会少很多。
@chrisliu1995
首先我们需要确定MinAvailable的语义,表示“最少可用”,最终依然要落实到具体数量上。因此,百分比生效与否,需要计算当前可用gs数量后才能得到结论。
例如,replicas 为10,MinAvailable=91%情况下:
若当前None的数量是9,则可用比例为90% < 91%,所以需要扩容。至于扩容几个,需要再次计算。扩容1个,则replicas为11,None的数量为10,可用比例为 90.09%,依然 < 91%;扩容2个,则replicas为12,None的数量为91.6% > 91%. 所以副本数量应该设置为12.
这种逻辑符合MinAvailable的语义。
当前用于扩容的MinAvailable是以具体数值的方式生效的。比如,MinAvailable为3,会保证至少存在3个可用游戏服。
但在游戏服数量变化比较明显的情况下,固定的值并不能很好地拟合玩家涌入的速率。因此,我们需要让MinAvailable支持百分比类型,在gameserver总数增多的情况下,最小可用的数量也增多;gameserver总数减少的情况下,最小可用的数量也减少。