一致性协议
一致性协议
一、2PC
二阶段提交,广泛应用在数据库领域,
阶段一:提交事务请求
- 事务询问,协调者向所有参与者发送事务内容,询问是否可以执行提交操作,并开始等待各参与者进行响应。
- 执行事务,各参与者,执行事务操作,将undo和redo操作记录本机日志
- 参与者返回结果,成功返回yes,否则返回no
阶段二:执行事务提交
所有参与者返回yes,则执行事务提交
- 发送提交请求。
- 事务提交
- 返回提交结果
- 完成
中断事务
如果出现意外,参与者返回no,或者等待超时,则会中断事务。
- 发送回滚请求
- 回滚
- 返回回滚结果
- 中断事务
二、3PC
三阶段提交:cancommit、precommit、docommit。
三、raft 协议
raft 是分布式一致复制协议。
角色:主节点、从结点、候选结点
- 分布式系统刚开始,全部都是从节点,等待一个随机的竞选超时时间之后,没有收到leader发来的心跳包,就进入竞选阶段。假设A变成候选节点
- 结点A发送投票请求
- 有超过一般的节点回复,节点A从候选节点变为主节点。
日志复制:
- 客户端的修改会被传入leader。未被提交,写入日志中。
- leader把修改复制到所有follower
- leader等大多数的follower修改后,才提交修改,
- leader通知follower提交修改,此时所有节点的值达成一致。
一致性协议
http://blog.mornw.com/2022/03/10/学习/consistent-proxy/