开发者社区> 问答> 正文

日志复制的流程怎样的?

日志复制的流程怎样的?

展开
收起
kun坤 2020-04-24 10:33:49 356 0
1 条回答
写回答
取消 提交回答
  • 当 Leader 选出来之后,Client 客户端发起的写请求都会由 Leader 节点来处理。

    即使其他的 Follower 节点收到了 Client 客户端的请求,也会将请求转交给 Leader 来处理。

    6.jpg Leader 接收到 Client 的请求之后,会优先将数据写入到自身节点的 log 日志文件中。

    被写入到日志文件里的日志条目,被称为 append entries 。

    Leader 将发送 append entries 消息给其他节点,这里并不是每次都将相同的日志条目,都发送给其他节点,而是根据节点的不同对应的消息也是不同的。因为集群中节点之间数据可能会有不一致的情况。

    其他 Follower 节点收到 Leader 的消息后,将数据添加到本地,然后返回给 Leader 响应,确认消息已收到。

    Leader 节点收到其他节点确认消息且过半数,先 Commit 提交记录,返回 Client 客户端响应。

    然后,Leader 节点再次向其他 Follower 节点发送 Commit 提交数据通知。

    其他 Follower 节点收到通知后,Commit 提交自身的日志条目数据,返回 Leader 更新结束的通知。

    日志条目提交保证两点:

    容错:

    在数量少于 Raft 服务器节点总数一半的 Follower 失败的情况下 ,Raft 集群仍然可以正常处理来自客户端的请求。

    确保重叠:

    一旦 Leader 响应了一个客户端的请求,即使出现了 Raft 集群中少数服务器的失败,也会有一个服务器包含所有以前提交的日志条目。

    2020-04-24 10:34:14
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载