以下内容为个人整理网上博客,侵删
问题
-
分布式存储系统通常需要维护多个副本来提高系统的可用性(Availability)
-
基于消息传递通信模型的分布式系统,不可避免发生问题:进程慢、挂掉、重启,消息延迟、丢失、重复
如何维护多个副本的一致性(Consistency)?
Raft算法
一、概览
真命题:在一个分布式数据库系统中,各节点的初始状态一致,如果每个节点都执行相同的操作序列,那么它们最后能得到一个一致的状态。
为实现“每个节点都执行相同的操作序列”,Raft算法基于复制状态机(Replicated State Machine):每台Server保存用户命令的日志(Log),供本地状态机顺序执行(State Machine),为保证一致性只需保证Log的一致性即可
二、基本概念
Server角色:
-
Leader:负责Client交互和Log复制,同一个时刻系统中最多存在1个
-
Follower:被动响应请求RPC,从不主动发起请求RPC
-
Candidate:Lea