共识算法
多副本又引入数据一致性问题。需要引入一个共识算法,确保各节点数据一致性,并可容忍一定节点故障;
共识算法,它最早是基于复制状态机背景下提出来的;
复制状态机由共识模块、日志模块、状态机组成:
1)通过共识模块,来保证各个节点日志的一致性,
2)然后,各个节点基于同样的日志、顺序执行指令,
3)最终,各个复制状态机的结果实现一致;
Paxos
共识算法的祖师爷是 Paxos, 但是由于它过于复杂,难于理解,工程实践上也较难落地,导致在工程界落地较慢;
Paxos服务解决的问题正是分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。Paxos服务运行在允许有服务器宕机的系统中,不要求可靠的消息传递,可容忍消息丢失、延迟、乱序和重复。它利用大多数(Majority)机制保证了2N+1的容错能力,即2N+1个节点的系统最多允许N个节点同时出现故障。
参考文献
etcd 实战课(唐聪,腾讯云资深工程师,etcd 活跃贡献者)_极客时间