客户端

一致性算法:Paxos ZAB raft

所在版块: 后端技术 2019-07-01 16:53 [复制链接] 查看: 2596|回复: 0


首先推荐

个人理解:paxos给出一种方式,论证的重点在于在提出一种方式,在多机提出多个提议的时候,如何让多机器集群满足一致性的安全性:
决议只有被提出后才可能被选择,
只有一个决议被选择(有多个提议被提出的时候)
process永远不会获知一个决议被选择了,除非这个决议确实已经被选择。
当然,作者最后提出选主可以提高效率。并且作者没有给出选主的方式(据说作者不屑于讨论此问题)

zab和raft的重点在于,一开始启动的情况下就必要选主,然后再提供正常服务,如何能达到一致性的安全性,而后就是异常场景的恢复过程,都比较容易理解。
区别在于选主的方式:
  • zab是广播式互相计数方式,发现别人比自己牛逼的时候要帮助别人扩散消息,根据本机计数决定谁是主。
  • raft是个节点发起投票,大家根据规则选择投于不投,然后各自收到别人对自己的投票超过半数时宣布自己成为主。

个人理解,两种都会出现故障恢复过程中将某些commit未完成的命令恢复状况【raft的命令可以重复执行,zk没看实现不清楚】

个人理解:
1. Paxos是解决一致性问题的最优算法,但算法复杂,工程实现难度高;
2. zab和raft都是基于实际场景给出的工程上可实现的算法,跟Paxos相比,他们最大的简化是否定了系统中存在“搅局者”的假设,因为实际的分布式环境中的节点都是可信任的;
3. zab是ZooKeeper Atomic Broadcast(ZooKeeper原子消息广播协议)的缩写;
4. zab和raft共同点是都需要选主(Leader或Master)且主是唯一的。在选主阶段系统是不可用的。这是可接受的,原因是(1)在实际工程环境中,节点宕机的概率比较小;(2)选主的过程很快,在一般网络环境中能在几百ms内完成。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码关注微信公众号

QQ|Archiver|手机版|小黑屋|mwt-design ( 沪ICP备12041170号-1

GMT+8, 2024-11-24 16:03 , Processed in 0.064584 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表