-
⾸先集群启动时,会先进⾏领导者选举,确定
哪个节点是Leader
,哪些节点是
Follower
和
Observer
-
然后Leader会和其他节点进⾏
数据同步
,采⽤
发送快照
和
发送Diff⽇志
的⽅式
-
集群在⼯作过程中,所有的写请求都会交给Leader节点来进⾏处理,从节点只能处理读请求
-
Leader节点收到⼀个写请求时,会通过
两阶段机制
来处理
-
Leader节点会将该写请求对应的⽇志发送给其他Follower节点,并等待Follower节点持久化⽇志成功
-
Follower节点收到⽇志后会进⾏持久化,如果持久化成功则发送⼀个Ack给Leader节点
-
当Leader节点收到半数以上的
Ack
后,就会开始提交,先更新Leader节点本地的内存数据
-
然后发送
commit
命令给
Follower
节点,Follower节点收到commit命令后就会
更新各⾃本地内存数据
-
同时Leader节点还是将当前写请求直接发送给Observer节点,Observer节点收到Leader发过来的写请求后直接执⾏更新本地内存数据
-
最后Leader节点返回客户端写请求响应成功
-
通过
同步机制
和
两阶段提交机制
来达到
集群中节点数据⼀致