当前位置: 首页 > 创领中心 > 网络优化

八分钟了解分歧性算法

  • 网络优化
  • 2024-11-15

散布式分歧性

在散布式环境中,分歧性是指数据在多个正本之间能否能够坚持分歧的个性。

散布式分歧性算法

比拟经常出现的分歧性算法包括Paxos算法,Raft算法,ZAB算法等

Raft算法经常使用场景

普通用作两种场景: 元数据治理 :比如etcd,特点是数据规模小,关键保障数据分歧性和集群的高可用(raft选主),所以一套raft集群就够了。 散布式数据库 :这种会用partition group,每个group有一个raft集群,当数据变大的时刻会做裁减。

Raft算法基础

Raft把算法流程分为三个子疑问:指导选举(Leader election)、日志复制(Log replication)、安保性(Safety)。

角色

Raft算法中在恣意时辰最多只要一个Leader,反常上班时期只要Leader和Followers。

形态转换

形态切换流程:

任期

任期 :可以了解为是节点负责Leader职务的时期期限。

Raft 将时期划分为一个一个的任期(term),每个任期由干燥递增的数字(任期编号)标识,上班期可长可短也或许不存在

通讯

主机节点之间通讯经过两个 RPC 调用:

Leader选举

初始形态

初始形态时,每个节点的角色都是 Follower(跟随者),Term任期编号为 1(假定任期编号从1开局)

不过这两种状况会触发选举:

选举

既然有两种状况下会触发选举,一个是首次启动,一个是Leader缺点未发送心跳给Follower,那么我们假定有五个节点,而后区分用图来看下是如何选举的!

首次启动时:

首次启动节点都是反常流程如下:

Leader缺点时:

Node2此时是Leader 节点,结果缺点了,剩下四个节点介入选举。

入选条件

在一个任期(Term)内只可以投票给一个结点,获取超越半数的投票才可成为 Leader,从而保障了一个任期内只会有一个 Leader 发生。

日志同步

概括成一句话就是: 保障Leader上日志能齐全相反地复制到多台Follower主机上。

OK!我们看下是如何启动同步的

日志结构

Raft算法中,每个节点保养着一份日志,其中蕴含了系统中一切形态变卦的记载,每一次性形态变卦被称为一个日志条目。

我们先看日志结构和右侧说明:

图中每个节点存储自己的日志正本(log),每条日志记载蕴含:

•索引 (log index):记载在日志中的位置,是一个延续干燥递增整数

•任期号 (term):日志记载被创立时Leader的任期号,上图中有三个任期

•命令 (command):客户端恳求指定的、形态机须要口头的指令

口头流程

了解完日志结构后,我们来看日志是如何动员同步的。

日志耐久化存储的条件

Follower节点必定先将记载安保写到磁盘,能力向Leader节点前往写入成功照应。

假设一条日志记载被存储在超越半数的节点上,我们以为该记载已提交(committed)——这是 Raft 十分关键的个性!假设一条记载已提交,象征着形态机可以安保地口头该记载

流程如下图:

分歧性审核

日志分歧性

Raft算法的目的是保障一切节点的分歧性,即一个日志条目在某个节点被提交,那么这个日志条目也必定在一切节点上被提交。

总结

Raft算法是一种繁复而高效的散布式分歧性算法,经过引入Leader选举和日志复制的机制,确保了散布式系统的共识和分歧性。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://clwxseo.com/wangluoyouhua/7274.html

猜你喜欢

热门资讯

关注我们

微信公众号