00:02
好,接下来这个东西啊,是一个什么东西啊,是一个paper,那这一块的话啊,就是它因为是一个什么东西,它因为是一个这个纯英文的这个文档啊,这个里面是一个纯英文的文档,而且我也已经下下来了,我们的啊,我们一会分析论文啊,肯定不会说是去分析这个东西,对吧?好,然后我们再看一下它这里面还有一个什么东西呢,我也不在。好,这个上面它是对什么东西,它是啊,相当于是我们刚才的那个动图的一个什么东西啊,一个详细的版本,然后它里面有很多的东西,然后还有就是各种不同的语言去实现的什么东西,去实现的这种所谓的这个rap的共识,对吧?然后这个里面样我们可以怎么样,我们还可以去看,或者是有一些什么东西,有一些讨论对不对,好然后接下来我们这一块完成之后,注意一下,我们看一下刚才的这个东西,对吧?好,这个地方我们刚才这两块或者是这三个东西,其实啊,它是一个对吧,我们的基本介绍和流程分析啊,都在我们这个什么东西啊,这个动图上面已经啊得到了一个很好的展示,好然后仅仅是通过这些什么东西,仅仅是通过我们刚才动图里面的这个说明啊,我们其实啊。
01:12
已经可以去实现一个比较简单的rap的版本了,这地方我们其实尤其是选举这一块的话啊,严格意义上来说。不会有太大的一个问题,那接下来我们要看什么东西呢?我们要看这个东西,我们要看这个东西,好,然后这个里边的话,我们看一下啊,打开这个,这个是英文版的,注意一下这个是英文版的,呃,刚才下的这个对吧,下的这个我把它关掉。这个没用了,好这个是raft extended,好这个就是我们刚才下下来的那玩意啊,然后它这个里面详细的去说了这个raft到底是个啥,对吧,但是这个都对我们来说,我们现在要看它可能会怎么样,会比较困难,然后我们看什么东西呢。我们看这个。
02:02
这个地方。扩展版,它是针对这一个文档的原模原样的一个分析,当然有些地方分析的还不是就它的这个翻译啊,不是分析,它是针对这玩意的一个,呃,原版的一个翻译,然后我们的话,这个里面就是有些地方可能翻译的不是非常的完善,但是啊对我们啊理解整个rap以及啊通过这个rap去进行实现啊,没有太大的问题。好,我们在讲这个东西之前,先打开我们要做的这个东西。然后同样的是这个里边我们昨天给大家看的一七版的是LIVEB1对吧,LIVEB1我们今天看的就是什么东西啊,这个LIVE2,今天我们要看的就是LIVE2ROUTE好,总共分成三个任务,注意一下总共分成三个任务,上面的介绍我们先不看啊,这个介绍我们先不管它好,然后我们往下面走,Part to a好,然后这一个主要要实现一个什么东西呢。
03:01
Leader election and heartbes对吧,这个地方就实现一个选举,而且这个leader要可以定时的发送心跳,好,然后我们再往下面走,这个不用管,然后下面的话,Part tobe好,这个实现什么东西呢?实现leader and follow code to open new log entries,就是实现我们的什么东西任务这个日志的复制,对吧?它这个task里面好,这个下面是它的一些详细的步骤,好然后这也不用管,好part to c好,这一个要实现的是什么东西啊,这个要实现的就是我们的一个持久化,注意啊,这个要实现的就是我们持久化,就目前来说,我们要实现的就这三个,但是它这里面,呃,还有一还有一些什么东西呢?还有一些相应的扩展,然后它呀会有它放在这里面,变成一些叫做option品,就是你可以去选这些东西,然后我们先不去管好,然后到时候啊,就是我们写完啊,这个的话,我们写完的话,大家再去对照,这个应该会比较好理解,因为这一个代码我们不会去从零到一再去手写了这个东西啊,它的一它的一些代码量过于复杂,然后我们打开。
04:01
一个代码看一下啊。好,这个是我拷下来的,然后。好,这一个的话,这是我们整个就是rap里面的相关的一些东西,我们一会会重新拷一个新的下来,好,然后在这个里面我们注意一下,在这个里面,我们之前这个map就ice啊,是因为它本身的这个代码量不大,他可能所有的加起来啊,也就呃不到1000行,然后我们昨天就是写完的东西啊,可能也就七八百行的样子,所以说我们可以去写,但这个的话,我们如果说要像就是他的这个从零到一的这种手写方式的话,第一个是它里面原本他给我们就是怎么样写好的一些东西啊,这个理解难度有理理理解的难度会非常的大,另外一个就是我们这个地方加起来估计得有个接近3000行代码,可能我们又得写写个七八天,好,然后这个地方我们要做的事情,注意一下我们要做的事情,其实啊,他已经跟我们说的很清楚了,这个上面已经跟我们说的很清楚了,我们同样的把代码拷下来之后,注下在这里面把代码拷下来之后,按照他的这个什么样,按照他的这个方式去做就行了。
05:13
好,然后这里面他没有去做过多的提示,在很多地方它会提示我们怎么样会提示我们呢,像在就什么样靠近,尽量靠近我们这个paper,也就是我们这个论文里面那些paperak里面,也就是我们的这个论文里面那些就是啊一些说明里面,尽量往这个论文上面去靠近,当然他没有去做一个特别强就特别强硬的一个要求,对不对?好,那接下来我们再来看一下这个里面。这个论文的一个什么东西,论文的一个基本介绍好,然后这个地方的话,我们注意一下啊,首先的话,我们把这个我看一下,我记得有一个可以显示的东西,对吧。对,这个地方好,大家看一下这个地方,我们先看一下在我们这个rap的论文里面,它是通过什么样的方式啊,去一步一步的带领我们去理解这样一个公式算法的,首先基本介绍对吧,这个摘要里面基本介绍好,然后派QS算法好,然后这个是他设计的一个愿景,就是为了更加的容易理解,对吧?然后第五章注意一下,第五章是我们最为重要的内容,这个地方是我们最为重要的内容,而我们这个LA里面呢,也只需要实现我们第五章里面的东西,像我们后面两张叫做啊集群成员的这种变化,然后日志的压缩,然后客户端交互,这个是我们啊在LA3里面要去实现的东西,但是这个LA3我们现在不讲好,然后这个地方的话,也就是对我们来说最重要的是什么东西啊,最重要的是第五章的一些内容好,然后这个是一致性算法的基础介绍,第一个基础,第二个leader选举,第三个日志的复制,第四个安全性好。然后第五。
06:50
五个就是跟随着这个leader和什么东西候选人崩溃啊,比如说啊出去对吧?啊就是离离开这个网络,然后再重新进来等等,好然后就是什么时间对不对,好然后这个是我们啊要去看的一个重点,好那接下来我们从什么呀,我们从这个论文的角度我们来看一下啊,首先这里的话,他给我们做了说明对不对,管理复制日志的一种一致性算法,然后注意一下它这里的话,它是就是针对什么呀,它是依据我们这个派OS去进行了一个改动,就是它是去通过派OS进行了改动,然后它最大的这个亮点,相对而言啊,它最大的亮点就在什么东西啊,更加容易理解,而且更容易去构建实际的这个系统,对吧?好,然后这里面的话,看一下它的一个分块,Leader,选举日志复制和安全性,这个是我们的一个核心内容,好然后这里面呢,还有其他的一些优势,这个我们就不用去看了,是吧,然后这一句话我们把它注解上来,好这个东西啊,就什么东西啊,当然它主就。
07:50
他的一个这个摘要对吧,当然他主要的话还是为了理解,这里的话可以就是呃插个体外的话,当时啊就是这个呃,MIT的那些,呃就是研究这面的东西啊,他们把这个派克S和这个rap同时交给这个麻省理工,还有就是美国的一些这这个计算机的名校,好像还有斯坦福嘛,让他们去实现他们的这个作业,就是最终得到的这个绩点分数,就是平均分,这个round他要比这个呃派S要高很多,也不是高很多吧,要高一部分,所以说就是从这个什么样,从这个实验结果来看,不管对于什么样,对我们的这些计算机人员来说,还是对我们的这个呃学学生来说,对吧,他更加的怎么样,他更加的好理解一些,所以说这个他现在用的更加的广泛,好,然后这个东西它是对什么东西呢?它是对我们这个一致性算法的一个基本介绍,注意下这个它是对我们一致性算法的一个基本介绍,这个我们不去看啊,我们啊不需要去了解,如果说大家自己感兴趣的话,去怎么样啊,自己下去看。
08:50
讲,因为这个东西,如果说我们今天写的这个代码,你要是想把它搞懂的话,这个论文至少读三遍,就这个中文版的至少要读三遍,否则的话很难,就是把这个东西融入到我们代码里面去,好然后这个我们也不用看这些东西啊,我们都不用看好接下来这个东西有一个比较重要的概念,因为有些时候我们在接触一个新的东西的时候,可能会觉得有些概念看起来很就是别扭,对吧?比如说像我们刚才说的这种状态复制,对吧?Rap里面最为重要的就是状态的问题,对不对,然后这个地方它就做了一个什么呀,做了一个说明,我们round本身啊,是一个状态复制机,好,然后这个地方replic STEM模型,对吧?这里面最重要的一个东西就是什么东西,这个state对吧,最重要的就是state好看一下具体的表述,这句话会非常重要啊,这个是我们达成一致性的共识的一个核心,然后我把我干脆在这加一个吧。
09:49
这玩意也不能变色对吧,变色的话我还可以改变一下颜色,多个节点上从相同的初始状态开始,执行相同的一串命令,产生最终的相同状态,这就是我们的强移执性,从一开始到中间到最后完全一致,这玩意叫什么呀?叫强移执性,还有一种叫什么呀?叫这个弱一致性,弱一致性的话,它有个什么样的区别,它在中间的时候,就是在整个这个达成一致的这个中间过程当中啊,它不一定非得是一致,但是你要保证什么东西,你要保证最终的结果一定要是一致的,中间的话,它涉及到很多的这什么呀,它涉及到很多的这种处理,因为啊,在我们某些情况下,这个呃,弱一致性它更加好实现一些,对不对,因为我们在中间可能不需要去考虑那么多维持它这个一致性的这个什么东西啊,这个处理逻辑对不对,我们只需要在最终的时候让它达成一致就可以了,对吧?好,然后我们看一下这个里面的话。
10:43
它里面的一些什么呀,基本操作client,然后这里面是个server cons Mo,然后这里面是log,对吧,这个是state模型,大家看一下它这个是一层一层的对吧?这地方是一层一层的这玩意儿,它是一个复制状态机的基本结构,这个我们不用去管它啊,然后简单看一下就可以了,好然后这个下面的话看一下啊,这个它有一个说明,注意啊,这句话我把它怎么样,我把它加粗了,注意下每一个服务器存储了一个包含一系列指令的日志,这个就是为什么它被称为日志复制的原因,好然后按照日志的顺序去进行执行,然后每个日志按照相同的顺序包含相同的指令,所以说每个服务器都能够去执行相同的指令训列,对吧?这一块我们要注意一下,好,然后接下来看一下,保证复制日志相同,就是我们一次性算法的个实际工作,这地方注意一下,好,然后这里面具体的解释大家自己下去看看,然后我们接下来看一下它这个里面的一个什么东西啊,特点对吧?第一个是安全性。
11:43
啊,不能返回错误结果对吧?好,然后这里面可用,只要有大多数机器可以运行啊,并且能够相互通信,以及和客户端通信,就保证可用,这个是我们在呃分布式的第一天讲的什么东西啊,分布式的高可用特点对吧。
12:02
好,然后这里面的话,我们看一下五个节点的集群可以容忍两个节点的失败,对吧,但三个节点的集群啊,你不能容忍什么东西啊,你不能容忍一个,因为一旦你三个节点的话,你这个地方只有呃,只有你,你有一个上吊,你如果是去选举的话,是没有什么样,是没有所谓的这个一致性的,你直接投给他就可以了,对不对,他要是不同意的话,你们俩就什么呀,你们俩就是一半一半对吧?好,然后不依赖时序,这个地方我们注意一下,好下面这一块的话,这一个我们不用去啊做太多的一个解释,他讲的是这个派QS到底对我们现在来说到底有一些什么样的问题,这里的话,其实严格上来说,他不能成为什么呀,它不能成为问题,只是说他有一些相对于我们现在的rap来说有一些不便之处,好,这个东西啊,我们不去看,这个里面,大家要是感兴趣的话,自己去看一下,好,接下来这里面的话,我们要设计rap的初衷,第一个要完整的系统实现,然后另外的话,必须要在任何情况下都能够安全可用,而且操作要高效,对吧,然后最重要的。
13:02
问题就什么东西,就是这个可理解的性的问题,因为什么东西啊,因为我们的这个前面这三个派OS已经做到了,前面三个派OS已经做到了,之所以要设计rap的,就是因为派S的这个理解难度比较高,对不对,所以这一块我们要注意一下,好然后这个里面其他的我们就不用去看了,好然后这个是我们刚才所说的几大模块,对吧,这个是我们刚才所说的几大模块,好然后上面的东西啊,是一些基础的介绍,我们再把它就理解到这里,那接下来我们看一下这个。我们看一下这个好,这个东西第五章,第五章的这个东西啊,才是我们整个论文,或者是我们今天的这个DEMO的一个核心,好然后这一块的我们啊,可能啊,到时候大家去看代码,写代码的时候啊,光看一遍还不够,还得再回过头来不断的去怎么样不断的去进行深化,好然后这里面的话,我们看一下这个地方它的一致性算法,首先这个是的步骤,我们不去看了,刚才我们已经说过了,对吧?好,这个是它的模块,我们也不用去看了,对不对,好,这里面的话,呃,领导选举对吧?然后一个领导人要被选举出来,好然后这个里面的话,嗯,这个日志复制对不对?好然后接下来安全性对吧,安全性我们呢,到时候会去说对吧,这个里面的话,安全性比较重要,因为它其实就是相当于给我们现有的这个程序上面去添加更多的一个逻辑性的东西,好然后接下来这些东西注意一下,这些东西我们结合什么呀,我们结合我们的这个原版去看更好一点。
14:32
好,然后这里面我们呢,往下面翻一翻。好,看一下这个是它的一个什么样,它的一个原版,而我们这个中文版的好处在于啊,他把这些东西都给你怎么样,都给你放到这个表格里面来,然后添加了解释,当然现在的话啊,现在的话这些东西啊,肯定我们看起来是一个什么状态,是一个懵逼的状态,对吧,你不知道任期是什么东西,对吧?然后这里面的话有限是可以理解对吧,比如说当前获取到候选人的ID对不对?好,还有他这个地话,哪些是持久化的,然后哪些是经常改变的,哪些是在你leader里面经常改变的,对吧?还有这个地方的话,附加的日志,也就是我们的这个东西,注意下,也就是说我们这个东西。
15:15
好,然后这里面的话,涉及到的是我们日志复制的操作,整个这个我们的这个程序里面,Rap里面对我们来说最为重要的是什么东西呢?是这张图,注意啊,对,我们最为重要的是这张图,因为你要实现一个rap对吧,我们也不知道它里面要存一些什么结构,而这张图里面包括我们的分析啊,它能够告诉你我们要存一些什么样的结构,好比如说这个里面,对吧,一个rap的节点,这些结构啊,都这些属性都是它要就都是他要包含的对吧?好,然后上面它叫什么东西,Process的对吧?也就是说这三个属性是什么呀,是我们持久化的时候要用到的对不对?这一块我们注意一下,好,然后这个是请求,对吧,请求的参数和响应对吧,我们的投票请求应该传什么样的参数进去,对吧?好,然后应该返回一个什么样的响应出来,好然后我们这个下面的话,这个日志复制它有一个什么样的这个什么东西啊,这个参数和什么样和响应对吧?好然后它里面还写了具体的一一部分的什么。
16:15
什么东西,一部分的实现,这地方还写了一部分的实现,Receive implementation,包括我们上面还有这个地方的话,我们服务器要遵守的一些规则,这些东西啊,全都是我们要考虑到代码里面去的,注意啊,这些东西啊,全都是我们要考虑到代码里面去的,好然后我们这个地方上面这个东西啊,我们到时候去写的时候再来看这个地方,我们到时候写的时候来看,比如说我们这个接收的实现,它里面的一些限制条件,对吧?好,这个地方是请求投票的RPC好,然后这里面也有它的leader实现,好所有服务器遵守的规则,也就是我们的什么东西啊,我们的这一块对不对,Rules for servers好,然后这里面的话有commit index last index,然后这些东西啊,在上面都有什么呀,在上面都有这个说明对吧?Commit index什么东西,然后last applied是什么东西,对吧?当然这里我们得到具体的代码上面去看对吧?好,然后这里面的话,看跟随者要怎么样,要遵循一些什么东西,对吧?然后候选人要遵循一些什么样的。
17:15
东西,然后成为leader之后,他要干一些什么样的事情,对吧?好,我们看一下啊,这个里面成为leader之后,第一个发送空空的这个附加日志,对吧?然后接收客户端的请求,对吧?好,然后对于跟随者来说是怎么样去更新的,对不对?好,然后还有下面的这个,就是我们刚才说的东西,对吧?好,然后接下来这里面有一些特性的解释,这个我们现在先不去管它,用到之后再看,好然后这个地方注意啊,从这个地方上面的话,它是啊,对我们的一些状态做了说明,好从这一步开始我们看一下,就开始接触到我们的这个基础里面了,我们先保存一下。
我来说两句