秘笈残本

​ 书接上回,岛主莱斯利·兰伯特在经历了拜占庭将军之殇之后,就下令全城上下严禁提起拜占庭。因此,Paxos是不需要考虑拜占庭错误。此外,Paxos岛是一个自由的岛屿,责任在这个岛屿显得并没有那么重要,管理层并不承担着出席、投递、准时的义务。既然岛主选择了消息传递作为通信的主要模型,就不得不解决信差被暗杀或者繁忙,消息延迟、丢失、重复的问题,那么如何让城邦里的居民,达成共识呢?这是莱斯利·兰伯特亟需解决的问题。

​ Paxos岛山峦耸立,岛主莱斯利·兰伯特命人在最高的山峰,搭建了一个观海亭。岛主时常在此亭中,手握着一本破旧的残本,上面依稀能辨认出Paxos的字样,岛主看着远方的大海,常常回忆起了那段心底深处的记忆。Paxos岛历元年,岛主莱斯利·兰伯特还是孩童的时候,遇到了一个衣衫褴褛,枯瘦如柴的老人家,老人家拦下了兰伯特,告诉他:,现在分布式江湖岌岌可危,天下一片混沌,各个帮派之争群雄并起,友邻们互相猜忌,无法达成共识(consensus)。拯救分布式江湖的重任只能落在兰伯特瘦弱的肩膀上了,老人家这里有一份秘籍,可以解救万物苍生,天下和平,兰伯特毅然决然的把家底所有的银币付给了老人家,并接下了这个光荣而艰巨的使命,老人接过银币之后,一个腾挪就消失在人海之中,只留一下一本破旧的不能再破旧的秘籍,甚至瞄几眼就能知道有多少页,和一个在风中凌乱的兰伯特。

​ 兰伯特一直觉得这是一个东方的隐世高手,能从他的眼神中看出仙风道骨。突然,秘笈中一道金光闪过,兰伯特似乎从金光中抓住了什么关键信息,于是他召集了各个岛屿的智者,大家齐聚观海亭,开启了Paxos秘笈残本的阅读,也开启了Paxos城邦的盛世。

Basic-Paxos

​ 岛主喝了一口浓浓的烈酒,润了润喉咙,朗声笑道:“哈哈哈,我知道你们都是些得民心的家伙,你们决定着Paxos的正常运转,但不能始终有名无份,于是我决定成立一个议会,这个议会主要的作用就是对城邦内外的大小事务,各种提议进行表决,充分体现我们城邦的民主和万众一心。”

​ “岛主英明”,“岛主英明”。不知道是谁开始先喊起这样的口号,观海亭内的声音此起彼伏。岛主莱斯利·兰伯特的手在虚空中摆了摆,示意大家安静下来,继续说道:“既然成立了议会,你们就都是议员。议会的议员分成不同的等级,承担着不同的作用。proposers提议者acceptors表决者,learner记录者。”

​ 等级一词出口之后,讨论之声不绝于耳,大家担心这违背他们自诩是民主自由的国度。于是岛主补了一句:“每个人都可以身兼数职”。

​ “那么这三个角色都分别承担着什么样的工作呢?”见岛主没有继续解释的样子,有人忍不住问了起来。岛主也不着急,抿了一口烈酒,继续说道:“proposer为提案、居民意见的接收者和议案的提议者,acceptor是对proposer提出的议案进行表决,对是否accept进行决策。learner作为记录和监督者,用来记录被批准的提案,”

​ “那么提案是什么呢,既然要记录的话,那是不是要定义格式?”一位双鬓斑白的智者提出了这样一个疑问。

​ “不错,为了让大家有序的讨论,我们规定提案proposal的格式,有提案编号N和提案信息value组成,好了,为了让你们更好的践行其中的运转流程,我们实际演练一下吧”。岛主用粗壮的手指点了七个人,他亲切的问第一个长相英俊的议员,叫什么名字?议员整了整衣冠,说:“陛下,我叫达拉崩吧斑多贝迪卜多比鲁翁”,另外一个议员还没有等到城主问呢,就先说了:“陛下,我叫昆图库塔卡提考特苏瓦西拉松”,岛主急忙打断,说:“好了,都是一家人,叫名字就生分了”,于是选中的7个人就有了各自短暂的代号。有提议需求的居民Client C1,提议者proposerP1,三个决策者acceptor A1,A2,A3,和2个记录者LearnerL1,L2就诞生了。

二大阶段,四小部分

​ 首先C1向P1提出了税率太高的诉求,要求调整税率。P1收集到了这个请求,向分别向A1,A2,A3三个决策者发起一号提案,因为他们没有那么负责,那么我可以只告诉他们我要提案的编号是多少就好了,P1正准备向监督者L1,L2发送提案,他发现监督者正被城主拦着问话呢,城主说,他们俩就不参与决策了,也没有投票权,P1只好作罢,留下L1和L2两脸尴尬的杵在原地。

​ 决策者A1,A2和A3收到P1的提议之后,A1发现自己这里的提案没有比1号提案更大的,于是他同意我们来进行讨论P1提出的一号提案,并且给了P1一个promise,你可以把你的提案编号和提案内容提过来了,我同意进行讨论。P1得到了A1的promise之后,两眼望向了A2和A3两位acceptor。A2也是内部比较了一下,同意了讨论这个提案,只是慵懒的A3,脑子放空了,想到昨晚偶遇的美女,竟然无视了P1的提案,不做回复。

​ P1告状式的向城主求助,城主却丝毫不慌,向P1说,总共有三位决策者,你得到了两位决策者的许可,根据我们一贯的多数派原则,你已经可以认为这项提议在议会中得到了promise,接下来,议会会对这个税率问题进行讨论,但是城主还是对这个问题多看了C1一眼。

​ P1得到了足够的promise,可以向A1,A2,A3发送具体的提议内容了。P1高声的向A1,A2,A3三位大官人喊道:“我现在说的是编号为1号提议,提议的内容value是把税率下调”,A1,A2,A3虽然清晰的听到了提议编号和提议内容,但还是小心翼翼的看向了城主,毕竟税率这个问题,还是下他们一激灵。

​ A1,A2,A3收到了提案的具体内容,并且发现并不违背自己和其他人的约定,于是批准通过了这个提议。就算A3有点怨言,不想下调税率,影响他的灰色收入,但是没有办法,A1,A2已经同意了,根据Paxos一直的多数原则,这个提议也是被批准的。

​ 至此,一次提议的共识就完成了。城主爽朗的笑着,周边的议员看到这个事情,也兴奋的拍着手掌,他们可以预见到在这样的一套体系下,他们的Paxos城邦将向着蒸蒸日上的方向马不停蹄。岛主莱斯利·兰伯特举起酒杯,向在座的议员共饮。

Multi-Paxos

​ 很快,这套方案在各个议员的推送下,在Paxos城邦实施下去了,民众也感恩,终于有了反馈的门路,这才是真正的自由民主。可是,岛主莱斯利·兰伯特在和议员们的一次聚会上,问起Basic-Paxos的执行效果如何,一位微醺的议员,咬了一口手中的葡萄,站起来说:“岛主不必过虑,Paxos城邦人人安居乐业,个个幸福美满,我们一项法案都没有批准过,这说明啊,我们的居民幸福指数很高,他们不需要提议来改善”

​ 岛主闻得此话,不仅没有开心,反而重重的拍了几下桌子,桌上的美酒珍馐洒了一地。“怎会如此?在场的有proposer议员么?上来答话”。几个惶恐的议员,跪在地上,大声疾呼:“冤枉啊!每次提出的提议都因为编号问题一直卡着,我们这几天光prepare就已经不眠不休了!”

​ 岛主一听大惊失色,想起了秘笈中的醒世恒言。活锁一处,万物不生。在场的少有几个双鬓斑白的智者听得此话,明白了其中的含义。由于Acceptor在第一阶段接收到的是提议编号,他们认为值得讨论的是最大的提议编号,因为小的已经过期了,没有讨论的价值,这样想来也合情合理,可是proposer并不止一个,提议的通过也并不止一次性,这样就造成了proposer不眠不休的提议,连口水都喝不上。

​ 举个例子,P1提议了编号1,也得到了promise,然后P2提议了编号2,因为2比1大,也得到了promise,之后P1告知编号和提议的具体内容,发现1号提议已经过时了,为了能提议,他不得不把编号改成3再次提议,获得了promise,之后,P2又同样的需要把编号改成4,如此循环往复。proposer无论如何也得不到批准的提议,反而在提议的过程中一口水也喝不上。

​ “哈哈哈”,岛主大声的笑了出来,不知道怎么来说这帮可爱的老兄弟,这也太敬业了。他清了清嗓,场子适时的安静下来了,岛主接着道:“这事也好办,下次你们再遇见编号失效,先等一等,尿个尿,喝杯茶再去提议,这样我们就能错开提案了,可以很大的减少编号的问题”,聚会上突然轰然响起了“岛主英明”,“岛主万岁”的一片片叫好。

​ “陛下,臣私以为此法虽治标但难治本。是否可以从流程中考虑进行完善,臣这里有一计,但请陛下参考。”一位神采飞扬的老者打断了众人的欢呼。“我们从proposer中选出一名leader,来进行提议编号和向acceptor进行提议,这样就不会有冲突了”

​ “哈哈哈,好,不愧是我的智囊,此方法确实可行,我便称之为multi-paxos”。岛主拍板定下了这样的一套策略。第一个提议仍然按照basic-paxos执行,由P1经过四个阶段进行提议批准,但是后续的提议由于P1统一处理,那么他知道了当前的提议编号,只需要进行accept就能批准提议。岛主实在是太高兴了,不仅大口饮了几碗酒,并且把Paxos秘笈残本的拓本给大家展示了一下。

Fast-Paxos

​ 随着时间的推移,Multi-Paxos再paxos城邦运转良好,为城邦的各项提议的共识达成提供极大的助力,在这样的机制下面,人民觉得达成共识是一件很简单的事,但是偶尔也会由于岛与岛之间的距离,消息的等待时间等问题使得一项提议的达成周期变得非常长。于是岛主每每深夜总是翻开那本残本秘笈,想要解决消息延迟的问题。

​ 终于有一天,岛主在翻看秘笈的时候,不小心把蜡烛碰倒了,火烧在了秘笈上,不仅没有点燃,反而在一页无字的纸上,显现了Fast-Paxos的字样,岛主知道,新的转机,就应该在这一页无字秘笈上,于是他求知若渴的读了起来。

​ 由于Basic-Paxos从请求到监控的learn返回,存在3个消息延迟,而Fast-Paxos可以做到2个消息延迟。由于leader在第一阶段不会发送任何的value,所以这一步可以交client平民自己向Acceptor来上报,这样client就无需同leader进行消息传递了。也就减少了等待的一个消息通知。

​ 如果有那么一个平民是幸运的,他直接向Acceptor发起提议,没有冲突,那么Acceptor会向leader和learner发送accepted消息,告知天下,这个提议通过了。

​ 但是并不是所有的情况都是那么幸运的,如果有冲突,这时候由leader充当协调者,进行协调,解决冲突,并且发送Accept消息,进行新一轮的提议批准。实际上在实现的过程中,acceptor自身也可以充当协调者,只要维护者多数派的原则,那么不需要leader来解决冲突。

Paxos城的未来

​ paxos城有着这样的三大神器镇着,无论什么样的共识问题,都能够迎刃而解。同时岛主莱斯利·兰伯特看过分布式天书和得到过paxos的秘笈残本,也在江湖上传了出来,这又将在分布式江湖上引起什么样的腥风血雨呢?拜占庭军队能够以什么样的方式在paxos城中再次启用?这个故事仍然在继续。

八佾Talk

​ 意志是每一个人的精神力量,是要创造或是破坏某种东西的自由的憧憬,是能从无中创造奇迹的创造力。——莱蒙托夫

群雄当立,逐鹿分布(三)Paxos传说之三大神器相关推荐

  1. 威高骨科vs春立医疗vs三友医疗,谁是科创板“骨科之王“?

    雪道的尽头是骨科?! 雪场 "封板季"将至,你的骨头还好吗? 冬奥点燃冰雪运动的风口,但是作为极限运动的一种,据说"三亿人上雪道,三千万人进骨科". 有个侧面佐 ...

  2. 哈佛专家披露:马斯克侵入式脑机接口技术的三个进展与三大局限

    8月底,马斯克和三只小猪的发布会震惊了脑科学界.而对于马斯克发布的侵入式脑机接口技术的进展和局限,哈佛大学脑科学博士.BrainCo创始人韩璧丞,哈佛大学医学院科学家.康谱睿启脑科学负责人杨锦陈进行了 ...

  3. 群雄当立,逐鹿分布(一)Bully心法篇

    楔子 ​ 霸道城外天道盟,半夜钟声到江湖.江湖?这是一段不得不记入史册的江湖轶事.不知哪一年哪一代,计算机天地出现了一部分布式天书,这部天书秘籍不知道传了多久,也不知道被多少巨擘得到过,据说没有人堪瞰 ...

  4. 高斯分布+柯西-洛伦兹分布+三种光谱线型函数(洛伦兹线型函数+多普勒[高斯]线型函数+vogit 线型函数)

    更新时间:2020/4/26 文章目录 一.两种分布 1.1 高斯分布(正态分布) 1.2 柯西分布(洛伦兹分布) 二.光谱线型函数 2.1 光谱线型函数的几种形式 2.2 洛伦兹线型函数与多普勒(高 ...

  5. 《鲁棒控制——线性矩阵不等式处理方法》(俞立)第二、三、四章学习笔记

    第二章   线性矩阵不等式  :非零向量,  或者的最大特征值小于0. 是凸集.(设V是数域P上的线性空间,W是V的一个非空子集,如果对W中任意两个向量a,b以及任意0<=c<=1,都有c ...

  6. “偷懒”上热搜!南京大三学生自制宿舍关灯神器火了,网友:希望量产

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 宿舍关灯这件事情,最近比较火. 起因是一位南京信息工程大学大三学生,花了7.8天时间,自制了一款宿舍关灯神器. 效果是这样的. 点击一下手机 ...

  7. kdj超卖_三分钟学会KDJ三大买卖绝技,简单高效,把握最佳买卖点,不懂KDJ的股民值得一看!...

    本文由公众号:越声策略(yslc188)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负. KDJ指标是一种相对较容易理解的技术指标之一,但若想真正的掌握并正确的运用就需要我们对其进 ...

  8. 月活675万 三翼鸟以三大能力“重建”行业赛道

    时下的商业竞争是一场"存量"与"增量"的博弈.一边,人口红利流失将行业围困在存量区间缠斗:另一边,为用户创造幸福感增量的企业,往往在市场角逐中占据先机. 适逢全 ...

  9. 三十九、SPSS神器界面功能介绍,计算变量和个案计数和加权

    @Author : By Runsen @Date:2020/5/14 在2020年一月初,也是我大三上的寒假,我开始写书,为什么呢?因为化工原理和化工热力学挂了,我需要重拾自己的自信. 对于一个大学 ...

最新文章

  1. 2016搜狗:矩阵元素相乘
  2. XP硬盘安装Ubuntu 10.10双系统图解(转)
  3. 实战Kaggle比赛(1):树叶分类
  4. Go进程/线程/协程:单元 空间资源 切换 共享
  5. android笔记3:activity的生命周期(转)
  6. (转)二维平面坐标系-最近点对模板
  7. Teams与OneDrive for Business和SharePoint的关系
  8. hql实例 jpa_SpringBoot学习笔记九:Spring Data Jpa的使用
  9. java7 nio2 新特性_JDK7新特性,你知道几个?
  10. 云优YUNUCMS企业网站管理系统
  11. matlab与vc混合编程指导书.doc,vc与matlab混合编程—基于com.doc
  12. 豆瓣python网络数据采集器代理_Python 网络数据采集1
  13. C++中继承的父类与子类的关系
  14. 【翻译】IdentityServer4:基于资源的配置
  15. Json时间格式转换
  16. 【基础篇】Navicat让MySQL数据库可视化
  17. chrome拓展 --截屏文字识别
  18. ENSP实验——Telnet远程连接
  19. 微信游戏,微信小说系统域名防封是如何做到的
  20. latex 表格及标题居中

热门文章

  1. openGauss5.0企业版使用指南之企业版安装
  2. MyBatis联合主键结果集与SQL查询结果不一致的问题
  3. elasticsearch 基础 —— _mget取回多个文档及_bulk批量操作
  4. C# WinForm应用程序的多语言环境支持
  5. Unity 3D 导入三维模型||Unity 3D 动画系统简介(Mecanim)
  6. vue uniapp 微信小程序 搜索下拉框 模糊搜索
  7. ArcGIS矢量化并进行拓扑检查
  8. 概率论重修笔记 11矩估计和极大似然估计.md
  9. HDU6103.Kirinriki(尺取)
  10. PHP 查看真实文件类型、图片有效性