你造吗?zookeeper原来是用 贿赂算法 来完成分布式服务协调的
Posted Java技术指北
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你造吗?zookeeper原来是用 贿赂算法 来完成分布式服务协调的相关的知识,希望对你有一定的参考价值。
大家好,我是指北君。今天,我想学习下zookeeper,毕竟微服务这么火,立志不当最菜程序员的我也不能掉队。
但是,这个zookeepr我也没用过,只能从这个理论基础学起了,最终目的就是对它这个源码也得有个大概的了解。啥,你问我为啥要学习源码?平时也不用!! 那你要看下为啥现在刚毕业00后的都张口闭口了解各种源码了,不卷能行么,不到35就得退休了。
今天就给大家聊下,对于这个zk理论的学习。
Paxos算法
我从网上了解到呀,这个 zookeeper 最难理解的就是 Paxos 算法,啥破玩意,听过各种算法就是没听过这个 Paxos 呀。
没办法,先百度一把。。
Paxos 算法是莱斯利·兰伯特(Leslie Lamport)1990 年提出的一种基于消息传递的、具有 高容错性 的一致性算法。Google Chubby 的作者 Mike Burrows 说过,世上只有一种一致性算法, 那就是 Paxos,所有其他一致性算法都是 Paxos 算法的不完整版。Paxos 算法是一种公认的 晦涩难懂 的算法,并且工程实现上也具有很大难度。较有名的 Paxos 工程实现有 Google Chubby、 ZAB、微信的 PhxPaxos 等
不知道大家看懂没,好着挺牛逼的,注意关键词, 消息传递、高容错、一致性, 还什么世上只有一种一致性算法,就是 Paxos 。好像挺牛逼呀,嗯!必须得学。等等, 继续看, 公认的 晦涩难懂 的算法 ?指北君着不认怂的性格,今天必须整会,盘它。
那先来看下这个算法是用来干啥,到底能解决啥问题?
Paxos 算法是用于解决什么问题的呢? Paxos 算法要解决的问题是,在分布式系统中如何 就某个决议达成一致。
Paxos与拜占庭将军问题
拜占庭将军问题,算法书中好像是有提到过吧,我们还是先从维基百科上看下对它的描述:
相信大家小时候语文课应该不是体育老师教的,说白了就是9个将军一起攻城,为了防止有人进攻有人观望(行动要一致),9个大老爷们就决定少数服从多数,每人一票 过半 就搞。
那拜占庭将军问题就在于,这9个人要是有叛徒咋办? 假如4个人投进攻,4个人投撤离,可恶的叛徒给进攻的那四个人送信说进攻,给撤离的四个人写信说进攻,那大家的行动就发生了不一致了,对于主进攻的人来看确实是5票,过半了,直接开干。然而主张撤离的四个人收到的撤离消息也过半了,结果就是大家的行动不一致,团队散了,结果可想而知。
计算机系统
那对于分布式网络系统来说,上面的9个人就可以对应9台计算机,每台计算机有可能出错而导致消息发错,也有可能消息在网络传输过程中被拦截伪造,结果都是一样的,传递的消息不可靠。
拜占庭将军问题就是分布式系统中一致性问题的最难解决问题之一。
我们想想也可以窥探一二,毕竟传输的人和传输的信道都不安全,这个就是信息安全的问题,就得加密,验签等方法了。
不过拜占庭将军问题和我们今天学的 Paxos 算法关系并不是要解决这个问题,而是假设这个问题不存在提出来的算法。。。
这个,其实也毛病,解决不了,我们跳过嘛,灵活变通,
以上是关于你造吗?zookeeper原来是用 贿赂算法 来完成分布式服务协调的的主要内容,如果未能解决你的问题,请参考以下文章