00:00
好,接下来呢,我们就来正式的看一下源码啊,看源码的话,首先我们需要从官网上把源码下载下来啊呃,下载源码这个路径啊,在哪个路径啊呃,我们之前在下载这个主题包,下包的时候是不是下载的它呀,对吧?那它的源码是哪一个呢?源码是这个啊。哎,把这对应的这个套包下载下来就可以了,那这个呢,我就嗯不在这下了啊,因为给大家这个资料包里面。他就是。看这就是啊,你把它呢,解压到一个非中文目录啊,我是给它解压到了这个位置啊。地盘。In south看到了吗?哎,夹到这里面了。到这之后,你通过idea把它打开。File open。然后找到对应的编码。零一烧贝尔啊。会吧,哎,打开之后它是这个样子的一个项目。
01:01
OK,那现在这个源码有了,那我们下面我们来详细看一下,那首先我们来看一下呢,就是对应的辅助源码,哎,先从简单的入手啊,第一个呢是持久化源码,还有一个呢,是序列化源码,我们先看一下持久化。说这个和当中数据呢,会在内存和磁盘当中各备份一份。可能说这个内存当中有一份,吃饭当中还有一份,那它是不是这样存的呢?哎,他确实是这样存的。那同学说了,那我直接用内存存多好啊,那这个效率高啊,那是想到吗?如果内存挂掉了是整个。集群的数据就没了。对吧,这个接受不了,那么如果我把数据放在磁盘里呢。但磁盘的处理效率就比较低,这时就是磁盘和内存的一个相互结合。那如果学过hi do的同学在前面应该知道I name notd和这个ton之间,它的这个数据是存在哪里的。
02:00
是不是有一个编辑日志,还有一个。快照啊,对吧,啊,或者是镜像文件啊,都是道理是一样的哈,那么这个主keepper其实它也是采用这种方式,他在内存当中会存储一份数据,那这份数据呢,像这个这的呃,是以这个目录数的方式进行存储的。那为了保证可靠性,它在磁盘当中也会存储一份数据。那大家思考问题啊,如果说内存当中有一份儿数据更新了,那我就来更新这个磁盘,那是不是效率还比较低。那他怎么玩的呢?哎,你这个磁盘啊,相当于是前期的一个快照镜像,然后我先不更新,我什么时候更新呢?哎,等你这边不比较闲的时候,那我会先记账。我给你记到一个账本上。爱账本,然后说啊,我这个弄学里面更新成什么样了。然后后续呢,我用过这两个账本来进行,能够恢复到内存当中相关的一个数据。就它俩加在一起,等于内存当中数据,只是呢,我现在啊,处理的这个时间有限,我先给你记到一个账上。
03:06
能懂我意思吗?哎,是这个意思哈啊,学过哈口的同学其实理解它呢,是非常简单轻松的,那它是不是这样纯的呢?我们来证明一下哈。嗯,来到这个里面PWD对吧,这里面是有个j k date呀,咱们之前说j k date里面是不是就用来存储主K相关数据的。那就来看一下。看了一下,这里面有个麦,还有一个叫沃森土。CD。进来。进来之后,你会发现这里面有这么几个文件。看到了。哎,看一下这里面啊,一个是log log log,这个相当于就是编辑日志。它呢,它是一个镜像。啊,竞相日志。啊,进行日志,这是原来的基础,他一停机的时候就会把数据恢复到对应的这个快照里面。啊,把这里面所有的操作日志都更新完。
04:01
啊,OK吧,啊,记账记账记账记账啊搞定。行,稍微了解一下啊,如果这个忘了同学呢,回去看一下杜里面啊,讲的NN和图N对应的原理就可以了。那行,那接下来我们先看。那下面来看啊,那既然你这里面涉及到内存当中数据和磁盘当中的数据。那是不是就涉及到一个数据的持久化的问题,你需要将内存当中数据持久化到磁盘当中?是这样吗?哎,持久化到什么当中那行那持久化的代码在哪里呢?哎,你可以查一下这个地方。Org主keep server啊。这里面相关的代码啊,那这里面你就可以找到像这个STEM对吧?啊,快照的处理,还有一个它对应的日志的一个处理的接口啊,看一下有没有啊。啊,打开之后我们找到这个主keep server服务端代码。打开打开。打开之后,这是主K下面有一个server啊找到。
05:00
Serve下面的有一个啊。然后这里面找到拍照,那么。哎,这是专门处理快照的,那处理快照呢,就涉及到一个序列化和反序列方法。那如果处理这个日志呢?处理日志那就涉及到正常改查呗,你看啊,Service status啊,回滚日志,追加日志,读取日志啊,获取什么这个呃,事务ID以及呢,删除相关日志。是吧,啊,然后提交数据。关闭。哎,等等,相当于是哎记录的相关步骤。OK啊,先了解一下啊,它底层存储数据,这个要搞清楚,一份带内存,一份在磁盘,磁盘里面有快照和编辑日志。OK,那下面的话又涉及到一个序列化的一个方式。那想咱们主K班啊,它是集群的方式,那你这个有可能是主K班啊,101,这是102,那么他们两个之间进行通讯的时候,怎么通讯呢。
06:00
你想我这里面是不是数据现在在内存当中啊。是吧,哎,内存当中,哎,这是磁盘的,然后呢,他的数据呢,也在内存当中。那我数据我这边哎,想跟他进行同步数据的时候怎么同步呢?我不能把我内存的数据直接拿过来吧,对吧?哎需要进行一个序列化。然后通过网络,然后传输到对应的102这台机电服务器上。那这边接收到传过来的内存当中这个序列化的之后的数据,我需要怎么办?需要进行一个反序列化,然后再加载到内存当中数据OK了。I豆呢,它也有对应的序列化和反序列化。啊,其实呢,在大数据框架当中啊,很多他都没有用这个Java自带的序列化和反进化都是自己重新写。啊,原因很简单,因为自己写的更轻量级一些,传输的效率啊更高一些。这就是辅助源码啊,稍微了解一下啊,这个主K包对应的它是需要序列化和持久化对应的一个,呃,源码来支撑的哈。
07:03
好,那接下来我们详细看一下啊,这个序列化源码它又是在什么位置呢。嗯,打开这里面,它其实在这个,呃主keepper unit这个里面,这个下面有一个它。啊,这个方法。啊,这呢是反序的话必须实现的对应的一个方法,你想啊,那你反序的话是不是得有各种这个数据类型啊,对吧?啊,你像这个什么波尔类型,Int类型,浪类型啊,Double宝类型等等,那还有一个out。那out类型的这里面说啊,这个实现这个所有序列化方法必须实现对应的这些内容。乳腺电镜,那其实呢,他们呢,都属于这个微泡。看了吗?这相当于是按序列化和反序列化。这里面传递对应的啊类型。Out。啊,这个呢是呃,稍微了解一下,它底层呢,其实是有序列化和反序列方法啊就行了啊不是什么啊重要的知识点啊,稍微了解一下就行,嗯。
我来说两句