00:00
好,接下来呢,我们讲一下第五章name not和ary not的。工作原理这个呢,是面试和开发的一个重点,那像这个内动的和呃托它属于这个面试题,那下面这个呢,呃。呃,镜像文件和编辑日志啊,属于这个两点内容,再往下呢,这个再化验的时间属于。了解内容的故障处理,这个属于开发内容啊,这里唯一的开发的是这个有点事。5.5呢,是这个机器安全模式,需要大家去了解一下。因为呢,之前呢,有同学。呃,突然间说这个进入到安全模式了啊,不知道怎么整啊。一会大家讲一下啊,这个呢是内部动的多目录啊,配置这个呢,是属于提高内部动的一个可靠性的一个问题啊。那好,那先从第二题开始。Note和N工作机制。首先思考一道题。Name中的原数据存储在哪里?
01:08
那么如果这个内蒙程数据存储在。那么断电了怎么办?断电的是原数据就没了,那你整个集群就这一台服务器断电,你整个集群瘫痪,这个代价你是。承担不起对吧。那怎么办呢?因此产生了在磁盘中备份元素。他是在这城市工作,但是呢,我在值班中又给他备份了一个。原数据这个可靠性就保证了吧。那么问题又来了。啊,那这个问题是解决了,那在内存中的原数据更新。那什么时候更新速度快嘛,对不对啊,更新时如果你在更新这个本地的啊。也就镜像文件。那这个效率是不是又低了?
02:01
想想啊,这么个问题啊。首先,你的数据都存在这个内存中。那它运算速度快,但是呢,一断电数据就没了,那怎么办呢?把这数据写到磁盘上。但是呢,如果说像这个外界客户端对这个机群进行一个增删改查的一个操作啊,比如说。三。他直接在内存中完成了。那么如果这些操作呢,你还需要经过这个直拍。那么这个效率肯定低了,那就没有必要在这生中处理了。啊,达不到想要的性能,那怎么办呢?这时候又产生了一个。叫。编辑日志。他能干什么呢?他呢,每当原数据有更新或者添加原数据的时候,修改内存的原数据,并追加到电视里面。比如说你对内存的操作。
03:00
我先给你记下来,你干了什么,你是增加了数据是吧?哎,增加这个操作,我把它记录到原数据里面,这样一个爱。进入这这里面啊,我不更新这个镜像文件。那你说镜像文件里的内容啊。电定日里面的内容加上镜像电解内容,就等于。因为他写这个编辑式的速度呢比较快,因为他只进行追加操作效率非常高。啊,所以说用两个文件去保证了原的生成的数据。OK,那好,那又出了一个问题。那么如果长时间添加数据到这个的边界制里面。会导致这个文件的越来越大。只要达到一定程度,那效率肯定低呀。啊,而且呢,一旦断电恢复原数据需要的时间会特别特别长。
04:01
因为你要把这个元数据的所有东西都跟啊。这里面按照这个编辑日志把所有的数据全部执行一遍,恢复到内存中的一些数据,那这个时间特别长,那也不合适。那谁来能帮我干这件事情呢?就产生了。想一想啊。首先是这样的。首先呢,问你数据存在哪里?那肯定我们是存在内存里面。但是它内存有断电丢失这个缺点,那怎么办呢?把这个数据存在。那存在磁盘在哪里呢?FS。但是呢,别人的这个内存里面操作这个数据啊,这个操作。很平繁。啊,而且希望呢效率高一点,48呢,哎,你总去更改它不合适,那么。就产生一个边界日志。哎,你操作内存的同时,把编辑日里的内容也改了。
05:02
啊,这样呢,始终保持内存里的数据,就等于磁盘里的内容跟编辑日。那么接下来就出现一个问题,就说编辑日志呢,越来越大,越来越大。那什么时候将这个编制日的内容跟F进行合并呢?产生了。那好,那下面呢,我详细看一下它的工作原理。首先这是一个内部弄。这是一个客户端。OK。那么这个内的一起动。他一启动干什么呢?他要加载。编辑日志和镜像文件到这个内存中。
06:00
现在你们可能还不知道这个编辑日志和镜像里面,镜像文件里面存的是什么啊,一会儿呢,带大家看一看就清楚了。啊,反正这里面存的是原数据,这个呢是存储原数据的一些,呃,上传下载的一些操作。操作命令。业务人员看啊。把这两个内容加载到内存中。那内存多大呢?像这个目前比较主流的128G啊。还有256G的啊。啊,每个块呢,在原数据。150个之间。不管你这个文件是大还是小,那存储这一个文件呢,都是150个直接左右。好,那就相当于上电,就加载编辑日志和镜像文件。软件到内存。这里面内存中就保持了最新的原数据信息。OK,那下面呢,这个客户端。他要对这个集群进行一些增删改的。比如说像这里面上传送送点A。
07:04
那他肯定找的是内动的。找他。找他之后,哎。那他先干什么呢?先把这个事情记录到编辑日志里面。然后再更新内存中的。怎么办?那为什么他不先更新内存中的数据,再写编程式呢?万一断电了是不是?在这个内存中没保存掉,这个时候也没保存上,那这时候就丢了啊丢了。啊。那就是说先把这个事情写到。编辑日志里面,之后再更新内存中的数据。啊,这个相当于是上传,那就是。这就是内部的一个工作机制,稍微回顾一下,首先一上店的时候加载编辑日和镜像文件到这个内存中啊。
08:06
其实就组成了原数据。整个集群的原数据。相当于几千的目录嘛。那之后呢,这个外界的客户端对这个机器进行访问的时候,首先得把这个访问的事情记录到编辑日志里面去。之后在内存中对这个事情进行一个。实际的操作。啊。那接下来引出一个30内啊,为什么呢?因为随着这个编辑日志。的增大。如果你不对他进行处理的话,那日后的话,你再进行他和他的合并,效率会非常非常的低。那这时呢,就产生了30内not啊,之前总说他是辅助内no的工作的,那你看一看他到底帮他干什么了。这里面提出一个概念哈,叫请求是否需要check point。
09:03
你说是否需要检查点的一个操作。他的检查点是干什么呢?就是将这两个文件进行一个。合并,合并成最新的原数据序列化到这个FS当中。啊,那么他执行检查点的条件有两个,满足任何一个都要执行这个合并操作。那第一个呢,就是定时时间到。时间到,另一个呢,是这个编辑数据满了。啊,定时时间应该是一小时。这个编辑日志中的数据满了呢,是。达到了100万条。这两个条件任何一个满足都是要执行合并。这当然,这两个值都能改变啊,设。100万条。OK。假如说啊,这两个条件有一个满足了,那我们就执行这个化的。
10:03
他怎么执行呢,他首先。滚动正在编写的这个编程制,这个原来的吗?最新的编程日嘛,叫1PROGRESS啊,正在往里写的。那首先把它滚动成叫001。然后又创建一个空的。002这是空的啊,刚开始空的,那以后再对进行操作,他就会把这个操作日志。到这里面,那这个呢,就是以往的所有的。这是为了啥呀?是为了这个避免这个耦合冲突啊,啊,你比如说你要是啊,我正在这个,我就把它。直接对它进行一个合并,那在这个合并过程当中,那你这个集群是不是不能往里边写了。所以说呢,他先哎滚动一下,滚动生成它。之后这个是空的,你再有新的操作往这里面写,这事就OK了。
11:06
那他具体干了什么活呢?将这个name note上的镜像文件和编辑日志通。通道。那拷过来之后干什么呢?一样把它们两个加载到内存中。这个就相当于这个镜像文件,按照这个操作手册一点点的往这里面去更新这个原数据。更新完毕之后生成新的。比如说是你妹子保险的这个名字。然后把它。再拷贝回。他们回来之后干什么呢?重新命名成FS,也是把它真正的更新了。
12:02
那么更新完之后,那是不是就是。它这里面的内容加上它是不是就是。是内存中最新的。啊,就这么一圈哈,相当于这个second name就帮他合并了镜像文件和编辑日志啊。之前我那个老板呢,呃。其实那也是对的啊,只是有些同学这个在合并过程当中啊呃。觉得有点绕啊。啊,那这个呢,是比较清晰一点啊,我把这个一些旁边细节都给干掉了,比如说这里面其实它还加载了比如。以往的。比如说还有个002等等,比如说001它没加载到,他可能把002下载去啊,等等这些操作,这些细节我给他干掉了啊,你就知道它只合并的是镜像文件,合并日到内存中。帮他去合并他的。然后合并完之后再给它拷贝过来重新命名啊。
13:02
那下次再启动的时候,那个他加他。就是保证了恢复。这个基因上的原数据。呃,像这个呢,现在你可能还是不能深入的理解,为什么呢?因为这里面有两个核心的东西你们不太清楚,一个是镜像文件,一个是编辑日志,那下面呢,我们来看完这个镜像文件和编辑日志之后。看一下里面存的啥内容,反过来我们再理解这个内容的时候。见我一下。
我来说两句