为什么说Raft原生系统是流式数据的未来?

news2024/11/22 19:22:24

目录

一、前言

二、Redpanda是如何实施Raft的?

Redpanda的需求是:

实施Raft为这三个需求提供了坚实的基础:

1. 简单性

2. 性能

3. 可靠性

三、但是Kraft又如何呢?

四、结合Raft与性能工程

一、前言

共识是一致性分布式系统的基础。为了在不可避免的崩溃事件中保证系统可用性,系统需要一种方法来确保集群中的每个节点保持一致,以便在发生故障的情况下,工作可以在节点之间无缝切换。Paxos、Raft和View Stamped Replication(VSR)等共识协议通过为领导者选举(leader election)、原子配置更改和同步等流程提供逻辑,帮助提高分布式系统的弹性。

与所有设计要素一样,不同的分布式共识方法具有不同的利弊。Paxos是最古老的共识协议,被用于许多系统,比如Google Cloud Spanner、Apache Cassandra、Amazon DynamoDB和Neo4j。Paxos通过三个阶段、无领导者、多数获胜的协议达成共识。虽然Paxos在力求正确性方面很有效,但理解、实施和推理起来困难重重。这一方面是由于它掩盖了达成共识方面的许多挑战(比如领导者选举和重新配置),使其难以分解成子问题。

Raft(面向可靠、复制、冗余和容错)可以被认为是Paxos的一种进化版,专注于可理解性。Raft可以实现与Paxos相同的正确性,但在现实世界中更容易理解和实施,因此常常可以提供更好的可靠性保证。比如说,Raft使用一种稳定的领导机制,简化了复制日志管理,其领导者选举过程更高效。

又由于Raft分解了共识问题的不同逻辑组件,比如通过使领导者选举成为复制之前的一个不同步骤,因此它是一种灵活的协议,可以适应复杂的现代分布式系统,这类系统需要在扩展到PB级吞吐量的同时保持正确性和性能,对于处理代码库的新工程师来说又更容易理解。

由于这些原因,Raft已被迅速采用于今天的分布式云原生系统,比如MongoDB、CockroachDB、TiDB和Redpanda,以实现更高的性能和事务效率。

二、Redpanda是如何实施Raft的?

当Redpanda的创始人Alex Gallego认为世界需要一种新的流数据平台来支持导致Apache Kafka崩溃的GBps+工作负载时,他决定从头开始重写Kafka。

Redpanda的需求是:

1)需要简单、轻量级,以减少大规模可靠运行Kafka集群的复杂性和低效率;

2)需要最大限度地提高现代硬件的性能,以便为大型工作负载提供低延迟;

3)即使对于非常大的吞吐量,也需要保证数据安全性。

实施Raft为这三个需求提供了坚实的基础:

1. 简单性

每个Redpanda分区都是一个Raft组,所以平台上的所有东西都围绕Raft进行推理,包括元数据管理和分区复制。这与Kafka的复杂性形成对比:在Kafka中,数据复制由ISR(同步副本)处理,元数据管理由ZooKeeper(或Kraft)处理,您有两个必须相互推理的系统。

2. 性能

Redpanda Raft实现可以容忍对少数副本的干扰,只要领导者和大多数副本是稳定的。在少数副本出现延迟响应的情况下,领导者不必等待它们响应即可进行下一步,从而减轻了对延迟的影响。因此,Redpanda具有更高的容错性,可以在大规模环境下提供可预测的性能。

3. 可靠性

当Redpanda摄取事件时,它们被写入到主题分区,并附加到磁盘上的日志文件中。然后,每个主题分区形成一个Raft共识组,由领导者和许多追随者组成,由主题的复制因子指定。如果有2f +1个节点,Redpanda Raft组可以容忍f次故障;比如在有五个节点的集群和复制因子为5的主题中,两个节点可能失效,而主题将保持运行。Redpanda利用Raft联合共识协议,即使在重新配置期间也能提供一致性。

Redpanda还在一些关键方面扩展了Raft的核心功能,以实现现代云原生解决方案所需的可扩展性、可靠性和速度。基于Raft的创新包括对选举过程所做的更改、心跳生成以及对Apache Kafka ACKS的重要支持。这些创新确保了在所有场景下有最佳性能,这使得Redpanda在保证数据安全的同时能够比Kafka快得多。实际上,Jepsen测试已经证实Redpanda是一个安全的系统,没有已知的一致性问题,是可靠的基于Raft的共识层。

三、但是Kraft又如何呢?

虽然Redpanda采用了Raft原生方法,但传统的流媒体数据平台在采用现代共识方法方面一直落后。Kafka本身是一个复制的分布式日志,但它过去依赖另一个复制的分布式日志:Apache Zookeeper进行元数据管理和控制器选举。这是有问题的,原因如下:

1. 管理多个系统带来了管理负担;

2. 由于低效率的元数据处理和双重缓存,可扩展性受到限制;

3. 集群可能变得非常臃肿和资源密集;实际上,ZooKeeper和Kafka节点数量相等的集群并不罕见。

这些限制并没有被Apache Kafka的提交者和维护者所忽视,他们正在用一种自我管理的元数据仲裁:Kafka Raft(KRaft)来取代ZooKeeper。这种基于事件的Raft减少了Kafka元数据管理的管理挑战,有望表明Kafka生态系统正朝着现代共识和可靠性方法的方向发展。

遗憾的是,Kraft并没有解决Kafka集群中有两个不同的共识系统这一问题。在新的KRaft范例中,KRaft分区处理元数据和集群管理,但复制由代理处理,因此您仍然有这两个不同的平台以及固有的复杂性引起的低效率。

、结合Raft与性能工程

正如CockroachDB、MongoDB、Neo4j和TiDB等数据行业领导者所展示的那样,基于Raft的系统提供了一种更简单、更快速和更可靠的分布式数据环境。Raft正成为当今分布式数据系统的标准共识协议,因为它与性能工程结合得特别好,可以进一步提高数据处理的吞吐量。

比如说,Redpanda将Raft与快速架构要素结合在一起,在处理1GBps的工作负载时,在尾部延迟(p99.99)上比Kafka快至少10倍,仅需三分之一的硬件,而不影响数据安全性。传统上,GBps+的工作负载对Apache Kafka来说历来是一大负担,但Redpanda可以以两位数的毫秒延迟支持它们,同时保留Jepsen验证的可靠性。

这是如何实现的呢?Redpanda是用C++编写的,使用每核心线程架构来最大限度地发挥现代芯片和网卡的性能。这些要素共同提升了Raft对于分布式流数据平台的价值。

比如说,由于Redpanda绕过了Kafka的页面缓存和Java虚拟机(JVM)依赖,它可以将硬件级知识嵌入到Raft实现中。每次您在Raft中写入数据时,通常都必须刷新,以保证磁盘上写入内容的持久性。在Redpanda乐观的Raft方法中,较小的间歇刷新被丢弃,改为调用结束时进行较大的刷新。虽然这在每次调用时引入了一些额外的延迟,但减少了总体系统延迟,并增加了总体吞吐量,因为它减少了刷新操作总数。

虽然有许多有效的方法来确保分布式系统的一致性和安全性(区块链用工作量证明和权益证明协议做得很好),但Raft是一种经过验证的方法,足够灵活,可以像Redpanda一样进行改进,以适应新挑战。随着我们进入到一个数据驱动的新世界——这一方面受人工智能和机器学习用例的驱动,未来掌握在能够利用实时数据流的开发人员手中。

基于Raft的系统以及C++和每核心线程架构之类的性能工程要素,正在推动数据流在未来的关键任务应用程序中派上大用场。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/773057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式声波传感(DAS)声音还原

声音还原 DAS 基于相位敏感光时域反射计(Φ-OTDR)的分布式光纤声波传感技术(DAS)是一种利用光纤后向瑞利散射干涉效应实现声波信号连续分布式探测的传感技术。 实验装置如下图所示,采用窄线宽光纤激光器作为光源,出射光通过90:10的光纤耦合器分成参考光和…

AlphaPose复现配置教程

AlphaPose复现配置教程 AlphaPose介绍 AlphaPose是一种准确的多人姿态估计器,这是第一个在COCO数据集上达到70 mAP (75 mAP)和在MPII数据集上达到80 mAP (82.1 mAP)的开源系统。为了匹配跨帧的同一人的姿态,我们还提供了一种高效的在线姿态跟踪器&…

Effective C++学习笔记(6)

目录 条款32. 确定你的public继承塑模出is-a关系条款33.避免遮掩继承而来的名称条款34.区分接口继承和实现继承条款35.考虑virtual函数以外的其他选择条款36.绝不重新定义继承而来的non-virtual函数条款37.绝不重新定义继承而来的缺省参数值条款38.通过复合塑模出has-a或“根据…

HP惠普暗影精灵9笔记本原装出厂Win11系统预装专用OEM系统镜像

暗影9笔记本电脑原厂Windows11系统包 OMEN by HP 16.1英寸游戏本16-wf0000,16-wf0001,16-wf0003,16-wf0004,16-wf0006,16-wf0008,16-wf0009,16-wf0010,16-wf0011,16-wf0012,16-wf0028,16-wf0029,16-wf0007,16-wf0032,16-wf0036,16-wf0043 链接:https://pan.baidu.…

78、分布式事务解决方案

分布式事务解决方案 XA规范: 分布式事务规范,定义了分布式事务模型 四个角色: 事务管理器(协调者TM)、资源管理器(参与者RM),应用程序AP,通信资源管理器CRM 全局事务:一个横跨多个数据库的事务,要么全部提交、要么全部回滚 JT…

远程大文件传输工具该怎么选择?

随着网络技术的不断进步,越来越多的人需要在不同地点之间传输文件。这时候,我们便需要使用远程文件传输工具。 1、什么是远程文件传输工具呢? 简单来说,它是一种能够帮助我们在不同设备之间传输文件的工具。通常情况下&#xff0…

Makefile:6: *** missing separator. Stop.

Makefile:2: *** missing separator. Stop. Windows下用VS CODE编写makefile文件,编译报出这个错误 可以查看一下VS CODE左下角,如果是下图“空格:4”这样,需要更改一下。 在“空格:4”上左键单击一下,在…

C# webform alert弹出内容换行

用 ” \n “(双斜杠哈,发布出去以后csdn只显示一个斜杠)换行,亲测有效果,其中saveNum,lose,sbnr 都是参数,sbnr是输入的换行内容,代码如下: ClientScript.RegisterStartupScript(this.GetType(), "ale…

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五)

由于 Web 应用程序的复杂性和重要性, 导致其成为网络攻击的主要目标之一。攻击者在入侵一个网站后, 通常会植入一个 Webshell, 来持久化控制网站。但随着攻防双方的博弈, 各种检测技术、终端安全产品被广泛应用, 使得传统的以文件形式驻留的 Webshell 越来越容易被检测到, 内存…

【天梯赛集训】7.18习题集

目录 7-1 递归 递推 7-2 函数的递归调用 7-3 A010 递归练习1 7-4 A011 递归练习2 7-5 A012 递归练习3 7-6 PG009 循环与递归 7-7 计算Fibonacci数列—递归 7-8 整数转换为字符串 7-9 简单的归并 AC: 9 / 9 用时:1 h 4 min 递归专题。 7-1 递归 递推 #inc…

Go语言的发展历史

Go语言的Logo 作为程序员,我们每天会用到大量的编程语言,打开界面会碰到很多logo,在正式学习Go语言之前,我们先来了解一下Go语言的Logo。也就是它,下面这个动物,gopher [ˈɡoʊfər] ,囊地鼠,…

TinyKv流程梳理三

split流程 处理协程启动 func (bs *Raftstore) startWorkers(peers []*peer) {ctx : bs.ctxworkers : bs.workersrouter : bs.routerbs.wg.Add(2) // raftWorker, storeWorkerrw : newRaftWorker(ctx, router)go rw.run(bs.closeCh, bs.wg)sw : newStoreWorker(ctx, bs.store…

Java解决new date出现的时区问题(差8小时)

1、设置当前时区 SimpleDateFormat format new SimpleDateFormat("yyyy/MM/dd"); format.setTimeZone(TimeZone.getTimeZone("GMT8:00")); 2、设置全局时区 创建一个全局配置类,用于配置项目全局时区。 这样就不用专门在各个地方设置时区了…

2023年下半年软考高项考试时间及安排

信息系统项目管理师一般情况下分别于上半年5月份和下半年11月份考试,2023年信息系统项目管理师上半年考试时间为2023年5月27日,下半年考试时间为2023年11月4日。 信息系统项目管理师考试报名时间: 下半年8月左右开始,各地区时间不…

【npm】基于vite制作自己的npm包+ts【超详细】

前言 头脑一热想做自己的npm包,但是又无从下手,于是我找到了度娘…看着别人做挺简单,自己上手真难受。一路的坑。注意事项也挺多的,所以我特地详细介绍如何制作自己的npm包,并附上ts类型检测。提升用户体验感。 初次踩…

如何编写高质量的测试计划

1.1目的 简述本计划的目的,旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等。 测试计划在策略和方法的高度说明如何计划、组织和管理测试项目。测试计划包含足够的信息使测试人员明白项目需要做什么是如何运作的。另外,清晰的文档结构能使任…

three.js学习2(基础)

目录 前言: 参考文档(gsap使用): 目标一、使物体移动、旋转 Ⅰ、设置时钟方式 Ⅱ、使用gsap 1、安装 2、引入使用 目标二、自适应 目标三、双击全屏或者退出全屏 前言: 上面学习了three.js在页面上的简单显示…

【Java项目实战-牛客社区】--idea maven配置

第一 IDEA集成Maven插件,并配置Maven 以下步骤中,重点关注红色方框的配置 第二 IDEA 创建 Maven 项目 步骤一:创建模块,选择Maven,点击Next 步骤二:填写模块名称,坐标信息,点击finis…

vue2 实现后台管理系统左侧菜单联动实现 tab根据路由切换联动内容,并支持移动端框架

效果图: pc端 移动端 由于代码比较多,我这里就不一一介绍了,可以去我的git上把项目拉下来 git地址https://gitee.com/Flechazo7/htglck.git 后台我是用node写的有需要的可以评论联系

EDM营销过时了?不,这才是跨境电商成功的最佳工具

根据最近的一项研究,电子邮件仍然是最具说服力的营销工具和沟通形式之一。虽然即时通讯等其他渠道正在扎根,但电子邮件仍然是影响最深远的商业交流形式。到2023年,每天发送和接收的电子邮件总数可能会超过333亿封。所以,如果您希望…