00:00
啊,上面啊,我们已经讲过了,说客户端命令行的方式访问集群,然后呢,客户端API的方式访问集群。那这里面都涉及到了对应的对主C班集群相关的一个写操作,你说创建节点吗。还有改变里面的数据。那么他在底层,他到底是怎么写的这个数据呢?大家思考的问题。对吧,哎,那你现在这个客户端。那我访问的对象,我有可能直接访问的就是leader。还有一种情况,我访问的是follow。对吧,是分两种情况吧。那我们就分别来讨论一下,如果他直接访问的是leader,那么这个数据是怎么写的?如果我们访问的是follow。他又是这么写。首先来看一下,哎,我们这里面是直接访问的就是leader,因为leader对有对数据呢,就有写权限对吗?好,那他往这儿写对吧,我访问说那个老大,我要上你某一个节点上写一些数据。
01:04
那这个leader收到之后,他立即会把这个写请,他自己会写一份啊,写一份数据,然后把这个写请求通知他对应的po,让他也去写对应的这个数据啊。那就写呗,写完之后你是不是得告诉老大一声,我已经写完了呀?哎,这里面需要一个A应答。那告诉他写完之后,我现在这个集群上是不是只供一共有三台服务器,已经有两台服务器告诉我已经写完了,因为他自己自己有一台,然后同时follow洛尔也写完了,是不是已经超过了半数?哎,记住主黑牌的原则是只要超过半数,我就可以应答了。这个效率非常高。好,那他怎么办呢?就由他。跟这个客户端进行回复。说小弟我这边已经写好了。哎,你可以进行相关后续的操作,你看那说那这个怎么办呢?哎,他会这样去操作,他会继续告诉他,诶写数据,然后同步更新,那么这个follow呢,会跟他进行一个应答,说我已经写完了。
02:07
哎,这样的好处呢,就是效率高啊,只要有半数的这个节点。同意了,已经写完了,那就跟他应答。半数机制嘛。体现的淋漓尽致啊。好,那下面我们来看,那如果我说我直接访问的是follower,又怎么办呢?对吧,这是客户端,哎,我这次啊没有访问你这个主题班serve,我访问的是他。对吧,没访问leader,我访问这个。那他没有写权限呢,那很简单的,你把这个请求转给有老有权限的老大不就行了吗?哎,他把这个请求转给leader。那立单拿到一看啊,那行,那我们开始写数据吧,那他怎么办呢?他首先自己先写一份。嗯,写完之后,他还会发这个写命令给其他的节点,让他也去写。对吧,来写,比如说给他写,那写的时候写完之后这个follow是不是还得应答呀,说老大我已经写完了。
03:01
那好,那他自己有一票,这也写完了,一票两个人都写完了,整个集群三台超过半数。那这个leader。是不是就已经说啊,这书已经写完了,写完怎么办呢?他要来一个应答。说告诉这个佛罗王说整个咱们集群这个数据已经全了。超过半数了。那为什么他不直接回啊,因为人家访问的是他他们两个之间建立的连接,对吧,所以说他得把这个最终啊写完这个信号告诉这个罗。那风罗拿到之后是不整理一下,把这个命令是转给这个客户端,说我们整个集群写完了。能懂这意思吗?哎,这个福尔相当于是一个前台客户端,跟他们之间进行一个对接的。那最终的决定权由他来决定啊。那决定完之后,那另一个节点这个leader啊,也没有忘让他呢,也进行写操作。然后他进行一个相关应答。能理解吗?
04:00
啊,我们稍微捋一下哈,如果说你访问的是follow,那follow立即会将这个请求给老大。那老大呢?首先自己要写。解完之后,同时他会让其他辅跟着写。然后等待其他佛罗的应答,只要应答数超过了半数,那他就会把这个结果给这个佛罗。对吧,你通讯这个口号,那他呢,就会把这个AC给到这个客户端,点进它,然后其他节点慢慢的进行一个相关写操作同步。这就是这个,呃,主keepper写数据相关的一个操作啊。
我来说两句