- N +

Raft下载:开启独特的海上生存之旅

Raft下载:开启独特的海上生存之旅原标题:Raft下载:开启独特的海上生存之旅

导读:

Raft是一种分布式一致性算法,广泛应用于分布式系统中,以确保多个节点之间的数据一致性和高可用性。以下是关于Raft软件的详细介绍:一、Raft软件的功能Raft实现了和Pax...

Raft是一种分布式一致性算法,广泛应用于分布式系统中,以确保多个节点之间的数据一致性和高可用性。以下是关于Raft软件的详细介绍:

一、Raft软件的功能

Raft下载:开启独特的海上生存之旅

Raft实现了和Paxos相同的功能,将一致性分解为多个子问题,包括:

  • Leader选举(Leader election):当Leader宕机或者集群初创时,需要选举出一个新的Leader。
  • 日志同步(Log replication):Leader接收来自客户端的请求,并将其以日志条目的形式复制到集群中的其他节点,且强制要求其他节点的日志和自己保持一致。
  • 安全性(Safety):如果有任意的server将日志项回放到状态机中了,那么其他的server只会回放相同的日志项。
  • 日志压缩(Log compression):在一定条件下对日志进行压缩,减少存储空间的占用。
  • 二、Raft软件的特色

    1. 强领导者(Strong leader):和其他一致性算法相比,Raft使用一种更强的领导能力形式。例如在一个Raft集群中,通常只有一个Leader,Leader负责处理所有的客户端请求,其他节点(Follower)都是被动的,它们不会发送任何请求,只是简单地响应来自Leader或者Candidate的请求。

    2. 易于理解和实现(Understandable and implementable):相较于Paxos,Raft通过逻辑分离使其更容易理解和实现。目前,已经有十多种语言的Raft算法实现框架,较为出名的有etcd、Consul等。

    3. 角色划分明确

  • Leader(领导者):负责日志的同步管理,处理来自客户端的请求,与Follower保持heartBeat的联系。
  • Follower(追随者):响应Leader的日志同步请求,响应Candidate的邀票请求,以及把客户端请求到Follower的事务转发(重定向)给Leader。
  • Candidate(候选者):负责选举投票,集群刚启动或者Leader宕机时,状态为Follower的节点将转为Candidate并发起选举,选举胜出(获得超过半数节点的投票)后,从Candidate转为Leader状态。
  • 三、Raft软件与同类软件的对比

    | 对比维度 | Raft | Paxos | ZAB |

    | 理解难度 | 较低,逻辑分离使其更易理解 | 较高,复杂的原理使实现困难 | 较低,与Raft有相似之处,但也有自身特点 |

    | 角色划分 | 明确的Leader、Follower、Candidate角色 | 相对复杂的角色和状态转换 | 基于multi

  • Paxos,有类似的角色概念 |
  • | 领导者作用 | 强领导者,提议只能由Leader发出(强Leader) | 虽然也选举Leader,但只是为了提高效率,并不限制提议只能由Leader发出(弱Leader) | 与Raft类似,有领导者负责相关事务 |

    | 日志连续性 | 限制具有最新已提交的日志的节点才有资格成为Leader,在确认一条日志之前会检查日志连续性,若检查到日志不连续会拒绝此日志 | 不做此检查,允许日志中有空洞 | 与Raft类似,注重日志的连续性 |

    | 应用场景 | 广泛应用于etcd、Consul等多种分布式系统中 | 应用于Google的Chubby分布式锁服务等 | 应用于Zookeeper分布式应用协议服务 |

    四、Raft软件的使用说明

    1. 基本原理

  • Raft采用多个副本之间竞选的方式,赢得“超过半数”副本投票的(候选)副本成为Leader,由Leader代表所有副本对外提供服务;其他Follower作为备份。当该Leader出现异常后(通信故障、运维命令等),其余Follower进行新一轮选举,投票出一个新的Leader。Leader和Follower之间通过心跳的方式相互探测是否存活,并以Raft
  • wal的方式写入硬盘,超过多个心跳仍无响应的副本会认为发生故障。
  • 2. 读写流程

  • 写入请求:对于客户端的每个写入请求,Leader会将该写入以Raft
  • wal的方式,将该条同步给其他Follower,并只有在“超过半数”副本都成功收到Raft - wal后,才会返回客户端该写入成功。
  • 读取请求:对于客户端的每个读取请求,都直接访问Leader,而Follower并不参与读请求服务。
  • 3. 故障流程

  • 如果系统只有一个副本时,其自身就是Leader;如果其发生故障,系统将完全不可用。如果系统有3个副本,其中一个副本是Leader,其他2个副本是Follower;即使原Leader发生故障,剩下两个副本仍可投票出一个新的Leader(以及一个Follower),此时系统仍可使用;但是当这2个副本中任一者再次发生故障后,由于投票人数不足,系统将完全不可用。
  • 五、Raft软件的安装步骤

    以RAFT项目为例,安装步骤通常包括:

    1. 准备工作:确保系统环境满足要求,如安装必要的依赖项等。

    2. 详细安装步骤:根据具体项目的文档进行操作,可能包括下载源代码、编译、配置参数等步骤。

    3. 可选步骤:如使用Cuda加速等特定功能的配置。

    六、Raft软件的相关应用

    1. Etcd

  • 设计理念与应用场景:Etcd是一个开源的、分布式的关键值(key
  • value)存储系统,设计用于可靠地存储跨多个计算节点的关键数据,并在分布式系统的节点间提供一致性保证。其使用Raft算法来处理日志复制,确保了强一致性,使得每个成员节点在任意时刻的数据状态都是一致的。Etcd广泛应用于各种分布式系统中,如Kubernetes用其作为其服务发现和配置中心。
  • 技术特点:Etcd的核心技术特点包括其简洁高效的监控机制、租约机制和事务支持。它通过watch机制实现了对关键数据的实时监控,而租约机制则提供了一种有效的资源管理方法,允许临时性的键值对存储,用于处理临时节点或服务的注册。Etcd的事务功能支持多个操作的原子执行,增强了数据操作的灵活性和安全性。
  • 2. Consul

  • 概述与关键特性:Consul是HashiCorp公司推出的一款开源工具,主要提供服务发现、配置中心和服务网格等功能。它同样采用了Raft算法来保证数据的一致性。Consul的设计理念在于通过提供一个分布式、高可用的系统来管理和配置服务。它支持健康检查,能够自动地剔除故障节点,确保服务的可用性。
  • 使用场景:Consul广泛应用于微服务架构中,它不仅能够帮助实现服务的自动发现,还能管理服务之间的配置数据,以及实现服务的健康检查。这些功能使其成为构建大规模微服务系统的理想选择。
  • 3. CockroachDB

  • 技术架构:CockroachDB是一个开源的、分布式的SQL数据库,它使用Raft算法来保证数据副本之间的一致性。CockroachDB的设计目标是提供全球范围内的高可用性和强一致性,使得用户无论身处何地,都能访问到一致的数据状态。
  • 特色功能:CockroachDB提供事务支持、分布式SQL查询、地理位置感知数据分配等高级功能,使其能够应对各种复杂的分布式数据库应用场景。
  • 4. TDengine

    在TDengine中,一个虚拟节点组(vgroup)就构成了一个RAFT组;而这个虚拟节点组的虚拟数据节点(vnode),便是该RAFT组的成员节点,也称之为副本(全部管理节点(mnode)也构成一个RAFT组)。Leader角色的vnode/mnode按照协议机制负责提供读写服务,在容忍故障节点不超过半数的情况下保证集群的高可用性;即使发生了节点重启及Leader节点重新选举等事件后,RAFT也能够始终保证新产生的Leader节点可以提供已经写入成功的全部完整数据的读写服务。每一次对数据库的变更请求(比如insert into test.d1 values(now,1,2,3)),都对应一个RAFT日志记录(Log Entry)。在持续写入数据的过程中,TDengine会按照协议机制在每个成员节点上产生完全相同的日志记录,并且以相同的顺序执行数据变更操作,以WAL的形式,存储在数据文件目录中。

    返回列表
    上一篇:
    下一篇: