《云计算技术系列丛书 云原生分布式存储基石: etcd深入解析》—1.4.5Raft算法性能评估

举报
华章计算机 发表于 2019/06/03 12:23:24 2019/06/03
【摘要】 本书摘自《云计算技术系列丛书 云原生分布式存储基石: etcd深入解析》一文中的第1章,第1.4.5节,作者是华为云容器服务团队、杜军等编著。

1.4.5 Raft算法性能评估

       对于基于复制状态机模型的一致性算法来说,需要考察的性能点是当领导人选举成功时,应于什么时候复制新的日志条目?这样集群才能继续对外提供        (写)服务。Raft 通过很少数量的消息包(一轮从领导人到集群大多数机器的消息)就达成了这个目的。在实现上,支持批量操作和管道操作进一步提高了Raft算法的吞吐量,同时还降低了时延。

       Raft算法的作者自己实现了一个Raft项目,并且基于这个实现来衡量Raft算法领导人选举的性能,具体包含如下两个方面。

       1)领导人选举的过程收敛有多快。

       2)领导人宕机后,系统不可用的时间有多久。

       为了衡量一次领导人选举的耗时,Raft算法的作者反复让一个集群的领导人宕机,并观测集群的其他节点需要多长时间才能发现领导人不存在了并选举出一个新的领导人(如图1-22所示)。领导人随机地在两次心跳包间隔内宕机,而心跳包的时间间隔刚好是选举超时时间的一半。因此,Follower能够感知到领导人宕机的最小时间是选举超时时间的一半。

       以上实验是在一个有着5个节点的集群上进行的,环境上的广播时延在15ms左右,每种场景均反复测试1000次。实验结果如图1-22所示,横坐标表示时间(单位是ms),纵坐标代表时延分布比例(0%处对应的横坐标代表最低时延,100%处对应的横坐标代表最高时延)。

image.png

图1-22 Raft算法性能评估图

       图1-22上面的实验结果表明,选举超时时间只需要较小的随机化,就能够明显地降低因为选票被瓜分而导致的重新选举,从而降低选举耗时。而选举超时时间在没有随机化的情况下,最差的时候需要花费超过10s才能完成选举过程。根据Raft作者提供的数据,在选举超时时间上仅仅增加5ms的随机变化,就可以显著改善这一情况—平均宕机时间只有287ms。在选举超时时间上增加50ms的随机化,1000次测试中完成一次选举的最长时间只要513ms。

       图1-22下面的实验结果表明,通过降低选举超时时间可以减少系统的宕机时间。Raft作者提供的数据可以表明,在选举超时时间为12~24ms的情况下,平均只需要35ms就可以选举出新的领导人,而最长一次的时间也就是152ms。然而,如果要进一步降低选举超时时间的话,就会违反Raft算法的时间不等式—选举超时时间不能小于领导人的心跳周期,这将会导致没有意义的领导人变更,反而还会降低系统的可用性。因此,Raft作者建议使用更为保守的选举超时时间,比如150~300ms。这样的时间不大可能导致没有意义的领导人变更,同时还能保证较好的可用性。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。