Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

https://docs.nebula-graph.com.cn/3.2.0/1.introduction/3.nebula-graph-architecture/4.storage-service/#raft

https://cloud.tencent.com/developer/article/1826594

简介

  • 分布式系统中,同一份数据通常会有多个副本,这样即使少数副本发生故障,系统仍可正常运行。这就需要一定的技术手段来保证多个副本之间的一致性
    • 通过 保证集群所有节点log一致性 来保证

      log一致性保证了即可保证多个副本之间的数据一致性

基本原理

  • 赢得”超过半数”副本投票的(候选)副本成为 Leader,由 Leader 代表所有副本对外提供服务;其他 Follower 作为备份。
  • 当该 Leader 出现异常后(通信故障、运维命令等),其余 Follower 进行新一轮选举,投票出一个新的 Leader。
  • Leader 和 Follower 之间通过心跳的方式相互探测是否存活,并以 Raft-wal 的方式写入硬盘,超过多个心跳仍无响应的副本会被认为发生故障。并以 Raft-wal 的方式写入硬盘 啥意思?写入探测结果?

读写流程

  • 对于客户端的每个入请求,Leader 会将该写入以 Raft-wal 的方式,将该条同步给其他 Follower,并只有在“超过半数”副本都成功收到 Raft-wal 后,才会返回客户端该写入成功(即日志复制所有 log 都必须交给 leader 节点处理,并由 leader 复制给其他节点)。
  • 对于客户端的每个读取请求,都直接访问 Leader,而 Follower 并不参与读请求服务。

评论