Skip to content

Commit

Permalink
更新内容
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Jun 20, 2024
1 parent 77b0901 commit 7e0da68
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 7 deletions.
2 changes: 1 addition & 1 deletion consensus/raft-ConfChange.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 6.3.3 成员变更问题

生产环境中,有很多集群节点变更的情况,譬如服务器故障需要移除副本、集群扩容增加副本等等。如果不处理好集群成员配置的同步问题,将影响 Leader 选举。
生产环境中,有很多集群节点变更的情况,譬如服务器故障需要移除副本、集群扩容增加副本等等。如果 Leader 选举过程中,集群成员变更了怎么办?

先假设有这么个 **configuration(配置)** 来管理所有的成员信息。

Expand Down
11 changes: 5 additions & 6 deletions consensus/raft-leader-election.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

Raft 算法中,节点有三种角色,并且可以互相转换:

1. **Leader(领导者)**:接收 client(客户端)的所有请求,Raft 算法中所有的操作以 Leader 为准。Leader 平常的工作包括 3 个部分:处理写请求、管理日志复制、不断发送心跳信息通知其他节点”我是 Leader,我还活者,你们现在不要发起新的选举“。
2. **Follower(跟随者)**:相当于普通群众,被动接收和处理来自 Leader 的消息。当 Leader 心跳超时时,就主动站出来,推荐自己当选 Candidate
3. **Candidate(候选人)**:用于选举出一个新的 Leader。Candidate 向其他节点发送投票(RequestVote RPC)消息,通知其他节点来投票,如果赢得大多数选票,就升级为 Leader。
- **Leader(领导者)**:接收 client(客户端)的所有请求,Raft 算法中所有的操作以 Leader 为准。Leader 平常的工作包括 3 个部分:处理写请求、管理日志复制、不断发送心跳信息通知其他节点”我是 Leader,我还活者,你们现在不要发起新的选举“。
- **Follower(跟随者)**:相当于普通群众,被动接收和处理来自 Leader 的消息。当 Leader 心跳超时时,就主动站出来,推荐自己当选 Candidate
- **Candidate(候选人)**:用于选举出一个新的 Leader。Candidate 向其他节点发送投票(RequestVote RPC)消息,通知其他节点来投票,如果赢得大多数选票,就升级为 Leader。

Raft 算法中,节点之间采用 RPC 进行通信,下面 2 种 RPC 是 Raft 基础功能的必要实现:

1. **RequestVote RPC(请求投票 RPC)**:Candidate 在选举期间发起,用于通知其他节点拉取投票。
2. **AppendEntries RPC(日志复制 RPC)**:由 Leader 发起,用于复制日志和提供心跳消息。

- **RequestVote RPC(请求投票 RPC)**:Candidate 在选举期间发起,用于通知其他节点拉取投票。
- **AppendEntries RPC(日志复制 RPC)**:由 Leader 发起,用于复制日志和提供心跳消息。

:::tip term

Expand Down

0 comments on commit 7e0da68

Please sign in to comment.