![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
协议
文章平均质量分 71
勤径苦舟
书山有路勤为径,学海无涯苦作舟。
展开
-
raft协议--面试问答题
1.1、Raft分为哪几个部分?主要是分为leader选举、日志复制、日志压缩、成员变更等。1.2、Raft中任何节点都可以发起选举吗?Raft发起选举的情况有如下几种:刚启动时,所有节点都是follower,这个时候发起选举,选出一个leader;当leader挂掉后,时钟最先跑完的follower发起重新选举操作,选出一个新的leader。成员变更的时候会发起选举操作。1.3、Raft中选举中给候选人投票的前提?Raft确保新当选的Leader包含所有已提交(集群中大多数成员中已原创 2021-04-06 12:02:36 · 4739 阅读 · 4 评论 -
Raft协议--网络分区--07
网络分区在发生网络分区的时候,Raft一样能保持一致性。如下图所示,假设我们的集群由5个节点组成,且节点B是Leader节点:我们假设发生了网络分区:节点A和B在一个网络分区,节点C、D和E在另一个网络分区1. C,D,E,重新选举,大多数是2,leader是C2. B还是leader,没有发生选举,原先的总数的5,大多数是3,而现在只有A节点通信,通信的节点数小于3,所有这个分区所有的日志状态都是uncomitted,如下图所示,且节点B和节点C分别是两个网络分区中的Leader节点我们原创 2021-04-06 11:58:55 · 1051 阅读 · 1 评论 -
Raft协议--成员变更--06
一、常规处理成员变更存在的问题我们先将成员变更请求当成普通的写请求,由领导者得到多数节点响应后,每个节点提交成员变更日志,将从旧成员配置(Cold)切换到新成员配置(Cnew)。但每个节点提交成员变更日志的时刻可能不同,这将造成各个服务器切换配置的时刻也不同,这就有可能选出两个领导者,破坏安全性。1.1、案例如图,蓝色代表新的配置。绿色代表老的配置。Old状态有三台机器Server1、2、3。 New加入两台server4、5。考虑以下这种情况:集群配额从3 台机器变成了5 台,可能存在这原创 2021-04-06 11:57:09 · 157 阅读 · 0 评论 -
Raft协议--日志压缩--05
一、日志压缩在实际的系统中,不能让日志无限增长。Raft采用对整个系统进行snapshot来解决,snapshot之前的日志都丢弃。每个副本独立的对自己的系统状态进行snapshot,并且只能对已经提交的日志记录进行snapshot。二、Snapshot中包含以下内容日志元数据最后一条已提交的log entry的log index和term。这两个值在snapshot之后的第一条log entry的AppendEntries RPC的完整性检查的时候会被用上。系统原创 2021-04-06 11:56:04 · 210 阅读 · 0 评论 -
Raft协议--安全性--04
一、安全性Raft增加了如下两条限制以保证安全性:拥有最新的已提交的log entry的Follower才有资格成为leader。Follower就是对应节点拥有当前领导者已经提交的所有日志Leader只能推进commit index来提交当前term的已经复制到大多数服务器上的日志,旧term日志的提交要等到提交当前term的日志来间接提交(log index 小于commit index的日志被间接提交)。Leader只能推进commit index。当Leader的日志负责到原创 2021-04-06 11:55:09 · 385 阅读 · 0 评论 -
Raft协议--日志复制--03
一、日志复制的过程客户端的一条指令到达,Leader把将指令作为日志条目(Log entries)加入到它的日志中,然后并行的向其他Follower发起 AppendEntries(附加条目) RPC复制日志条目。当这条日志被复制到大多数服务器上,Leader将这条日志应用到它的状态机(比如如果是mysql的insert,那么就是执行insert操作),并向客户端返回执行结果。客户端的每一个请求都包含被复制状态机执行的指令。leader把这个指令作为一条新的日志条目添加到日志中,然后并行发起原创 2021-04-06 11:53:46 · 995 阅读 · 0 评论 -
Raft协议--Leader选举--02
一、Leader选举的过程Raft 使用心跳(heartbeat)触发Leader选举。当服务器启动时,初始化为Follower。Leader向所有Followers周期性发送heartbeat。如果Follower在选举超时时间内没有收到Leader的heartbeat,就会等待一段随机的时间后发起一次Leader选举。每一个follower都有一个时钟,是一个随机的值,表示的是follower等待成为leader的时间,谁的时钟先跑完,则发起leader选举。Followe原创 2021-04-06 11:50:53 · 840 阅读 · 0 评论 -
Raft协议--概述--01
一、Raft 算法概述是分布式系统开发首选的共识算法Raft算法是经过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致。用于管理日志一致性的协议。将分布式一致性分解为多个子问题:Leader选举(Leader election)日志复制(Log replication)安全性(Safety)日志压缩(Log compaction)二、基本术语解释大多数:(服务器节点总数/2)+1term:任期选举超时心跳超时2.1、随机选举超时(这是巧妙的设计)从F原创 2021-04-06 11:45:59 · 505 阅读 · 0 评论 -
Gossip协议
一、Gossip协议简单理解Gossip,翻译过来就是八卦,Gossip协议就是八卦协议。1.1、生活中的八卦协议将你听到的八卦信息,告诉你身边的人。01、八卦协议举例华侨城总部一共有400个员工,某一天,刘xx知道某个领导绿帽子消息,刘xx将消息告诉身边的n个同事,收到消息的n个同事又将这个消息告诉身边的n个同事。假设每人每天都将收到的消息发送一次,那么需要4天,全公司都知道某个领导绿帽子消息如果过去13天,全地球都知道了1.2、网络中Gossip协议像流言蜚语一样,利用一种随原创 2021-03-19 14:54:15 · 1514 阅读 · 1 评论