提升Raft以加速分布式键值存储

这篇具有很好参考价值的文章主要介绍了提升Raft以加速分布式键值存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

Raft是当前广泛使用的共识算法。流行的系统,如Kafka、Cockroach DB、MongoDB、Neo4j、Splunk等,都使用Raft来实现共识。系统要么是最终一致性的,要么是强一致性的。线性一致性是一致性模型中最强大的,但实现它可能很耗时。键值数据库出现在市场上,以避免SQL数据库的复杂性并提供横向扩展性。这些数据库主要提供两种操作:get(key)put(key, value)。在我对Raft相关论文的探索中,我找到了一篇有趣的文章,标题为‘Rethink the Linearizability Constraints of Raft for Distributed Key-Value Stores’。本文详细介绍了在类似键值数据库中减少读写线性操作延迟以提高吞吐量的技术。本文提供了对这篇论文的简要概述。

Raft如何处理写请求?

Raft处理写请求涉及三个关键操作:追加(Append)、提交(Commit)和应用(Apply),因此引入了一系列用于读写请求处理的索引,以确保线性一致性。这些索引包括日志索引提交索引应用索引

提升Raft以加速分布式键值存储,分布式
1*m7grn7i1F_Oe98hvWwN6QA.png

图片来源:Paper 9458806

追加

当客户端向领导者发送写请求时,请求中的日志将被分配一个唯一递增的索引号。领导者将日志附加到本地日志存储,并向跟随者发送用于复制的附加条目请求。领导者收到来自大多数跟随者的附加条目请求的响应后,将日志设置为已提交,即新写入的数据在系统中是安全的。

提交

当领导者收到附加条目请求的大多数跟随者的响应时,日志被设置为已提交,即新写入的数据在系统中是安全的。

应用

领导者开始将已提交的日志应用到其本地状态机,并并行通知跟随者执行相同的操作。每个节点在应用操作成功后将更新其应用索引。只有在领导者将日志应用到状态机之后,领导者才能向客户端返回响应。

提升Raft以加速分布式键值存储,分布式
1*nR9NBIBLtcXixspPaUsl_A.png

写请求序列

Raft如何处理读请求?

为了实现线性一致性,所有读请求都由领导者自身处理。Raft还为此引入了读索引。当领导者收到读请求时,请求的读索引设置为当前提交索引。只有当领导者的应用索引不小于读索引时,领导者才能执行读请求并将结果返回给客户端。在这种情况下,我们可以确保客户端不会获取到陈旧的数据。

读请求序列

对这些操作的评估

文章讨论了所有这些操作的时间消耗评估,如复制、提交和应用。根据评估,应用操作是最耗时的。对于带有高速网络的系统,网络开销较低。日志的结构简单,日志附加通常是一个具有较高速度的顺序I/O操作。因此,更新复杂的状态机最可能成为性能瓶颈。

下图显示了值大小从1KB到1MB时,应用操作和所有其他操作的时间消耗百分比。它显示应用实际上是慢的,占写请求总时间的近40%。

提升Raft以加速分布式键值存储,分布式
1*HBIseE0DNULJmRaxnR8_wg.png

如何改进这个?

与其他类型的数据库相比,键值存储是一个简单的数据库。写操作只是将键和值插入或更新到数据库,而读操作只是为给定的键读取相应的值。文章证明,去除请求处理中的应用阶段可能会减少延迟。应用操作可以异步执行。读和写操作不需要等待应用完成。为此,文章引入了两种新方法:

a) 提交返回(用于写操作)

b) 立即读(用于读操作)

提交返回

这个想法是一旦请求中的日志被提交,直接向客户端返回成功响应,而不必等待将日志应用到状态机。因此,这个方法被称为提交返回。提交返回不会破坏KV存储的正确性和线性一致性。

提升Raft以加速分布式键值存储,分布式
1*tbvkumRzu_NL29XELovbDQ.png

提交返回

立即读

在Raft中,读操作在查询状态机之前等待应用索引追上读索引。当实施提交返回时,应用索引和读索引之间的差距会比传统Raft方法中的差距更大。因此,提交返回可以提升写处理但可能降低读处理。然而,如果

我们能够消除由于应用索引和读索引之间的差距而引起的等待时间,读性能将得到显著改善。

由于键值对的读操作简单,我们可以直接根据位于读索引和应用索引之间的日志数据副本执行读请求,而不必查询状态机。如果日志中存在键的值,则立即返回,否则查询状态机并返回结果。通过这种方式,读性能将大大提高。

例子:立即读

采用这种方法,平均写入延迟将减少36.4% ∼ 39.9%,平均读取延迟将减少5.8% ∼ 16.2%,与Raft相比。有关详细信息,请参阅实际论文,文章中提供了论文链接。

参考资料

•Rethink the Linearizability Constraints of Raft for Distributed Key-Value Stores•In Search of an Understandable Consensus Algorithm
文章来源地址https://www.toymoban.com/news/detail-803899.html

到了这里,关于提升Raft以加速分布式键值存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式共识 - Raft 算法

    本文由 SnailClimbopen in new window 和 Xieqijunopen in new window 共同完成。 Raft协议由Diego Ongaro和John Ousterhout(斯坦福大学)开发,Diego于2014年获得了博士学位。Raft的设计是为了更好地理解如何实现一致性,考虑到它的前身Paxos算法,由Lesli Lamport开发,非常难以理解和实现。因此,Di

    2024年02月20日
    浏览(40)
  • 分布式协议Raft和Paxos详解

    一、Raft是一种相对简化的分布式一致性算法,它由Diego Ongaro和John Ousterhout于2013年提出。与Paxos相比,Raft的设计目标是使一致性问题更易于理解、实现和部署。 Raft协议核心思想是将一致性问题分解为几个关键组件,包括领导者选举、日志复制和安全性。 领导者选举:Raft协议

    2024年02月15日
    浏览(50)
  • 分布式一致性算法——Paxos 和 Raft 算法

    本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见100个问题搞定大数据理论体系 Paxos和Raft算法都是 分布式一致性算法 ,它们的目的都是 在一个分布式系统

    2024年01月20日
    浏览(65)
  • 分布式一致性算法Paxos、Raft 及 Zookeeper ZAB

    国科大学习生活(期末复习资料、课程大作业解析、学习文档等): 文章专栏(点击跳转) 大数据开发学习文档(分布式文件系统的实现,大数据生态圈学习文档等): 文章专栏(点击跳转) 分布式一致性算法是用于在分布式系统中 确保数据一致性 的一类算法。在分布式计

    2024年02月04日
    浏览(66)
  • 分布式系统中的那些一致性(CAP、BASE、2PC、3PC、Paxos、ZAB、Raft)

    本文介绍 CAP、BASE理论的正确理解、Paxos 算法如何保证一致性及死循环问题、ZAB 协议中原子广播及崩溃恢复以及 Raft 算法的动态演示。 下面还有投票,一起参与进来吧👍 工作过几年的同学,尤其是这几年,大家或多或少都参与过分布式系统的开发,遇到过各式各样“分布式

    2024年02月05日
    浏览(53)
  • 【分布式】分布式存储架构

    说到分布式存储,我们先来看一下传统的存储是怎么个样子。 传统的存储也称为集中式存储, 从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系统中的,但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备,比如下图中的 EMC 存储就需

    2024年02月10日
    浏览(53)
  • 【分布式技术】分布式存储ceph之RBD块存储部署

    目录 创建 Ceph 块存储系统 RBD 接口 服务端操作 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 2、将存储池转换为 RBD 模式 3、初始化存储池 4、创建镜像 5、在管理节点创建并授权一个用户可访问指定的 RBD 存储池 6、修改RBD镜像特性,CentOS7默认情况下只支持layering和stripin

    2024年01月18日
    浏览(75)
  • 云存储、云计算与分布式存储、分布式计算是一回事吗?

    随着互联网的蓬勃兴起,大数据、人工智能、物联网、云计算与云存储等这些专业词汇在大众视野内出现的频率越来越高,再加上近几年分布式技术异军突起,更使得分布式存储、分布式计算等成为热词。然而,很多人对这些名词都一知半解,所以本文将主要和大家聊一聊,

    2024年01月25日
    浏览(62)
  • 【分布式技术】分布式存储ceph之RGW接口

    目录 1、对象存储概念  2、创建 RGW 接口 //在管理节点创建一个 RGW 守护进程 #创建成功后默认情况下会自动创建一系列用于 RGW 的存储池  #默认情况下 RGW 监听 7480 号端口  //开启 http+https ,更改监听端口 #更改监听端口 ​          //创建 RadosGW 账户 客户端测试 OSD 故障模拟

    2024年01月19日
    浏览(62)
  • 分布式系统架构设计之分布式数据存储的扩展方式、主从复制以及分布式一致性

    在分布式系统中,数据存储的扩展是为了适应业务的增长和提高系统的性能。分为水平扩展和垂直扩展两种方式,这两种方式在架构设计和应用场景上有着不同的优势和局限性。 水平扩展是通过增加节点或服务器的数量来扩大整个系统的容量和性能。在数据存储领域,水平扩

    2024年02月03日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包