一、分布式共识(Distributed Consensus)
当系统中只有1个节点(下图蓝色,你可以理解为一个存储数据的数据库)。如果客户端(绿色)发送1个x=8的数据给数据库,数据库会立即将X更改为8。由于只有1个数据库节点,对于X的值,很快就会达成一致:x=8。
But,如果有多个数据库节点呢?如图,假设3个数据库节点中x的值都为7。客户端发送更改x=8 的请求,3个数据库节点有2个节点更新成功,x=8;另一个节点更新失败,存储的x仍然是7。这样就会出现对于同一个变量x的值,3个节点存储的数值不一样。这就是分布式共识的问题。
二、分布式共识解决方案 - Raft协议
Raaft是用来解决分布式共识的一种协议。Raft协议中定义了3种角色:
- Follower
- Candidate
- Leader
首先我们简单介绍下Raft协议中最重要的两个部分:Leader选举和日志复制两个过程。
1、Leader选举过程(Leader Election)
每个节点初始状态都是跟随者Follower。当一个Follower节点不再听从Leader节点,那么该节点就会变为候