[论文阅读]Dissecting the Performance of Strongly-Consistent Replication Protocols(2)

163 阅读10分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情

[论文阅读]Dissecting the Performance of Strongly-Consistent Replication Protocols (二)

本文这章使用排队论来建模一致性协议。

排队模型能够估计出在资源可用之前在队列中的平均等待时间。为了做出这样的估计,排队模型只需要两个参数:服务时间和到达间隔时间。服务时间描述的是,一旦队列中的每个项目准备好被消费,需要多长时间来处理。抵达间时间控制项目进入队列的速度。在高间隔时间下,新项目很少进入,保持队列相当空旷。较低的到达间隔时间会使队列更快地填满,增加了项目不得不等待前一entry退出队列的机会。 更多排队论的信息见:netedu.xauat.edu.cn/jpkc/netedu…

从上面的课件其实我们看到排队论有相当多的模型,那一个一致性算法如何和排队论结合做预估:

我们通过计算平均排队等待时间来估计排队成本wQ 。为了选择最合适的排队估算模型,我们使用前面描述的所有四种排队模型来估计Paxos协议在局域网中的性能。我们对所有相关的参数,如网络RTTs、序列化/反序列化成本等,都使用了根据经验获得的数值。下文图4显示了这些模型与Paxi中真实的Paxos实现之间的比较,以此,我们可以选择一个合适的模型。 image-20221031165133140 其实我们真的不差这点延迟差异,但非常想知道paxos在应用层上可以怎样地被扩展和应用,以至于达到更高的性能。

论文原文见:论文地址:cse.buffalo.edu/~demirbas/p…

3 性能模型

对协议的性能进行建模为测试不同的配置或想法提供了一种简单的方法。在这一节中,我们建立了用于估计强一致性复制协议的延迟和最大吞吐量的模型。我们的模型利用排队理论[3]和k-order统计学来说明由于消息交换和处理而产生的各种延迟和开销。

3.1 假设

我们对机器和网络做了一些假设,以限制我们模型的范围,使其简单易懂。

我们假设网络中任何两个节点之间的往返通信延迟(RTT)是正常分布的。这个假设简化了关于网络延迟对共识性能影响的推理。指数分布通常被用来模拟网络延迟[6],然而,我们在AWS EC2进行的实验表明,在AWS集群的本地区域,延迟分布近乎正常,如图3所示

我们假设所有节点都有稳定、统一的网络带宽。我们的模型没有考虑到节点之间的带宽变化。为简单起见,我们假设建模的集群中的所有节点具有相同的性能。特别是,我们假设CPU和网络接口卡(NIC)性能相同。我们只考虑单一处理管道的情况--我们建模的机器有一个网卡和CPU。

image-20221031160122001

3 :几分钟内亚马逊AWS EC2区域内的本地区域RTT的直方图

3.2 简单的排队模型

排队理论[3]是我们分析研究共识协议的基础。我们将系统中的每个节点视为一个由网卡和CPU组成的单一处理队列。协议通过交换通过队列的消息来运作,并使用机器的资源。从一个节点向外发送消息需要一些时间在CPU上处理,也需要一些时间通过网卡传输。同样,一个传入的消息在被反序列化并由CPU处理之前,首先需要清除网卡。当一个消息进入一个队列时,它需要等待任何先前的消息被清除和资源变得可用。

排队模型能够估计出在资源可用之前在队列中的平均等待时间。为了做出这样的估计,排队模型只需要两个参数:服务时间和到达间隔时间。服务时间描述的是,一旦队列中的每个项目准备好被消费,需要多长时间来处理。抵达间时间控制项目进入队列的速度。在高间隔时间下,新项目很少进入,保持队列相当空旷。较低的到达间隔时间会使队列更快地填满,增加了项目不得不等待前辈退出队列的机会。

由于在我们的模型中,消息立即从CPU过渡到NIC(反之亦然),并且没有可能在不绕过CPU或NIC的情况下离开系统,因此我们将这两个组件作为一个单一的队列。这就大大简化了 "排队网络",方便了我们的建模工作。

为了我们的目的,我们考虑了四种不同类型的队列近似模型。M/M/1M/D/1M/G/1G/G/1,其中第一个字母代表到达时间间隔假设。

image-20221226212158694

要求抵达服务时间W**q
M/M/1泊松过程率 λ指数分布率µρ2 λ(1-ρ)
M/D/1泊松过程恒定的sµ=1/sρ 2µ (1-ρ)
M/G/1泊松过程GDλ2 σ2 +ρ2 2λ(1-ρ)
G/G/1GDGD≈ ρ2 (1+Cs )(C**a +ρ2 C**s ) 2λ(1-ρ)(1+ρ2Cs )

表1:队列类型和假设

第二个字母描述了服务时间,而数字则告诉人们系统中有多少个队列。最简单的模型。

M/M/1假设到达间和服务时间都被泊松过程所接近。M/D/1模型使服务时间是恒定的,M/G/1队列假设服务时间遵循一个一般分布。我们考虑的最一般的模型是G/G/1。 它假定服务时间和到达间时间都是任何给定的分布

随机变量。我们在表1中总结和比较了每种排队类型

3.3 共识性能的建模

为了建立共识性能模型,我们感兴趣的是测量客户端所感知的共识过程的平均延迟。对于这样的延迟估计,我们考虑表2中列出的参数平均延迟由几个不同的部分组成:队列等待时间Wq,服务时间u,网络延迟Dl,Dq:

image-20221226212603172

对于Paxos,网络延迟包括客户端和领导者之间的往返时间(RTT)DL,在leader,follower间发信息形成一个Quorum响应的延迟DQ

对于网络延迟,我们只假设消息的传输时间,因为清除网卡的时间在我们的服务时间中已被考虑。为了计算Paxos中的DQ ,我们需要考虑待部署的Quorum Q。对于一个有N节点的集群,法定人数大小为Q = ⌊N/2⌋ + 1,使自我投票的领导人等待Q -1个追随者的信息才达到一个Majority。

这个(Q - 1)th follower 回复的RTT是DQ 。在局域网中,我们假设所有节点之间的RTTs是从相同的正态分布中抽取的,因此我们使用Monte Carlo方法近似的k-order-statistics [14]来计算(Q -1)th 的RTT。然而,在广域网中,不同节点之间的RTT可能有很大的不同,因此我们选择领导者和其追随者之间最小的RTT(Q - 1)th 。

即使在局域网中,(Q - 1)th follower 的响应延迟也是不确定的,所以需要用Monte Carlo方法近似的k-order-statistics来计算RTT。广域网是不一样的.

轮次服务时间µ是衡量领导者处理特定轮次的所有消息所需的时间。简而言之,我们假设每条信息,无论是传入还是传出,都需要由网卡和CPU来处理。该轮的服务时间μ是tNIC和tCPU 之和:

µ = tNIC + tCPU 。我们将tNIC 计算为通过带宽b网络推送所有大小为Sm 的信息所需的时间:tNIC= 2Nsm/b 。服务时间中的CPU部分被估计为处理接收的消息ti和发出的消息to总和。

image-20221226224423627

对于Paxos来说,第二阶段要求领导者从客户端接收一个消息(ti ),广播一个消息(to ,因为CPU将广播信息序列化一次),接收N - 1个从追随者((N - 1) ∗ ti )发出的信息,并回复到客户端(to )。因此,我们有

tCPU = 2to + N*ti

请注意,只有服务时间会影响到最大吞吐量:

image-20221031165035320

最后,我们通过计算平均排队等待时间来估计排队成本wQ 。为了选择最合适的排队估算模型,我们使用前面描述的所有四种排队模型来估计Paxos协议在局域网中的性能。我们对所有相关的参数,如网络RTTs、序列化/反序列化成本等,都使用了根据经验获得的数值。图4显示了这些模型与Paxi中真实的Paxos实现之间的比较。根据我们的发现,M/D/1M/G/1模型的表现几乎相同,最类似于我们的参考Paxos实现。由于M/D/1模型比较简单,我们在所有的进一步分析中使用它。

image-20221226212721527

表2:模型参数

image-20221031165133140

图4:不同排队模型与Paxi框架中的参考实现的比较

3.4 在Paxos和局域网之外扩展模式

其他协议尽管更加复杂,但与上述的Paxos共享相同的建模组件。因此,我们对它们也repl相同的排队模型和延迟计算原理。

多领导协议增加了一些需要考虑的额外参数。在这样的协议中,一个节点既可以lead 这一轮次,也可以作为跟随者参与并发的轮次,因此我们除了考虑作为轮次的领导者处理的消息外,还考虑作为跟随者处理的消息,以估计队列等待时间。进入系统的请求总数在所有领导者之间平均分布(为简单起见,我们假设每个领导者的工作量是单一的)。这使我们能够根据每个领导者的处理队列来计算每个领导者的延时。

无领导协议的性能,如EPaxos,随着命令冲突率的变化而变化。当两个或更多的复制体试图针对相同的冲突域(例如,相同的key)同时运行一个命令时,通常会产生冲突。冲突必须由协议来解决,这导致了额外的消息交换。因此,我们为EPaxos引入了一个冲突概率参数c,以计算冲突和不冲突的commands的不同延迟。对于冲突命令与非冲突命令的比率如下的一轮的总体平均延迟是:

image-20221226230355838

image-20221031165214582

图5:用户实现消息和复制类型的Paxi模块使用情况(阴影部分)。

广域网建模也需要对局域网模型进行修改。特别是,广域网中节点之间的通信延迟不能从相同的分布中提取,因为数据中心之间的距离并不均匀。例如,在一个在美国东部、爱尔兰和日本都有副本的3个节点Paxos配置中,美国和爱尔兰之间的通信延迟明显小于爱尔兰和日本或美国和日本。由于这个原因,我们的广域网建模不再假设所有节点的延迟都是相同的正态分布,而是对每一对数据中心之间的通信使用不同的分布。