头图源自 xp
PAXOS性能建模-第1.5部分
这是关于第一部分的一个快速总结。
网络的变化有什么影响吗?在前面的模拟中,展示了从3个节点到5个节点的一些小的性能下降。
事实上,对于paxos来说,网络行为对可伸缩性 scalability 影响很小,在某些情况下根本没有区别。要了解我的意思,请看下图:
看看4、6和36节点在模拟中如何执行相同的操作?5个、7个甚至35个节点的集群如何略优于4个节点?
偶数模拟结果的直观高层解释非常简单。对于偶数数量的集群大小,假设一个 self-voting 的领导者,一轮 round 的 leader 会收到奇数个回复。leader 在达到 quorums $ q = \lfloor {\frac{N}{2}} \rfloor + 1$ 后决定回合,这意味着它需要接收 $q-1$或$\left\lfloor{\frac{N}{2}}\right\rfloor$消息(带自投票)。例如,一个6节点的 cluster leader 将收到5个应答,但在第3个(或 median)应答时,round 达到了 majority 。
由于模拟从正态分布中提取消息RTT,因此RTT的中位数(50%)也是平均值。在重复足够数量的轮次之后,任何波动都被平均化,结果是 an average round 被一个由网络平均RTT的消息决定。
然而,具有奇数个服务器节点的集群决定在RTT略小于median RTT的消息的 round 。这是因为我们有偶数个 replies ,而中位数是平均两个中间RTT。用于计算中间值的两个值中较小的值实际上是该轮的仲裁消息,例如,在7节点部署中,领导者在收到第3条消息$l_3$后到达 quorum ,中间值为$\frac{l_3+l_4}{2}$
结果,在多次循环重复之后(我做了大约125000轮),模拟结果仍然是 quorum 消息的平均RTT比中值/平均RTT小一点,并且我添加的节点越多,它就越接近实际的第50个百分位和平均值。
那么,在这一切之后我们有什么?我认为可以安全地假设网络差异对paxos性能的影响非常小,有时甚至不存在。我们不必太担心网络,只要它是稳定的,并提供可预测的性能。但是,如果你有一个非多数数量的系统,你可能会从更快的回复中得到些许好处。