00:00
哎,大家有没有感觉到这个地delete标delete的这个操作是一个。负的操作有没有这种感觉?是啊,有没有感觉?是的吧,你看啊,因为我正常的去做了一条数据,你SKY那个表的时候多了一条数据吧,诶当我D的数据的时候。它多了一个标记对吧,那标记怎么进去的,还是put进去的吧,啊还是放进去的,其实实际上这个删除也是滴delete的,就是我们所说滴delete的,其实实际上它跟put所做的事情是一样的,那我们稍微的看一看整个的逻辑啊,整个的逻辑来看一下,Delete点进来,点加之后是一个table是一个什么。接口,所以说这个没有实现吧,我们只能CTRLCCTRLH来看一下它这个什么,这还是一个接口吧,叫h table in的base,其实我们应该找的是那个什么h table啊,这个是老API当中的一个点啊入口啊,表一个入口点进来点击之后呢,CTRLFCTRLV,搜一下这个d delete的方法。
01:05
来看那这类的方法,这他就有提到,我们之前提到一个什么东西啊。RBC要远程通信了,因为这个是客户端table呀,还有那个admin啊,还有connection啊,这个都是客户端的内容,那远程的还有服务端的一个内容,那我们要走这个呢,它都是在干什么?去构建那个什么延迟时间对吧,因为RPC通信我两边上请求你客户端,你假如服务端挂掉了呢,我超过这个延时了,我是不是应该抛个错出来呀,对吧?啊抛错出来OK,那不用管啊,继续这块它在构建一个什么东西啊。Request不管是什么东西,它肯定是一个什么请求,对吧,那这个请求体里边,它构建这个请求的时候,他把这个什么。我们传过来DD的对象放进去了,那这个请求肯定跟删除数据相关吧,没问题吧,我们不用管这个请求怎么做的,然后他用这个方法,这个地方是返回值了,那是不是通过这样的一个方法跟远程进行个什么。
02:06
通信,而且他把这个controller把这个request都扔进去了,对吧,也就在这个方法里边做的跟远程的一个通信啊,远程通信,那我们点进来。发现这个方法,来看一下这个方法。有实现吗?有实现吗?对吧,这个方法你看一下。这是方法,这是不是方法参数,参数后面直接抛了个异常,这相当于是一个什么。抽象的方法吧,没有写实现嘛,啊抽象方法,那我们只能去找什么实现类的实现方法,或者说继承类对吧,因为它不是抽象类,也不能叫实间类的,就继承类的一个方法,OK,看RH找一下,这里有一个RS r bc service。RS什么意思啊,微搜RBC远程通信的service服务端啊,对吧,点开点开之后呢,CTRLVCTRLF搜我们刚才这个方法啊,直接加个括号搜吧,Check and这个不用管,我们搜的是那个直接是这个方法零对吧?啊走诶就这个吧,返回值不就是我们刚才看到的response这个返回值对吧?看吧,啊,其实它调用的是这个方法,那这个方法里边其实往下走啊,这个是RPC什么校验啊等等这些东西不是我们关心的啊,继续往下走。
03:29
来,诶看到熟悉了。他根据我们里边类型有什么这个手法put。那我们要的是什么delete的吧,我们写的是不是delete的呀,它里面封装的肯定是delete的对吧?啊delete的把这个数据放过来,那又把这个delete的对象添加了一个叫。Musician里边了,对吧,啊添加进去,这还不是我们全面搞的那个第类对象,整个的弄过来的,好继续往下走来。在这。
04:01
去做什么?拿着region.delete然后删除我们删除对象点进来。发现又是一个什么?接口啊,又一个接口,所以看不了,还是CTRLCCTRLH来看一下h reading。对吧,这有个什么h reading,这其实就是我们那个reading,这到表这一层了吧,啊,这个其实已经到了服务端了,CTRLF搜我们刚才所看到d delete的方法,因为它在接口里边,这个delete的方法没有实现嘛,在只有一个实现内比delete的,我们还是搜一下啊,还是加上括号,这个是什么比delete的。啊,准备的啊,判断一下你删除的这个什么family是否为空啊等等这些东西做一些校验,对吧,不管直接做什么。D类的啊,D类的好,那D类的前面呢,又是做一些什么。校验对吧,然后开启当前的一个操作。啊,最后要关闭当前的一个操作,因为它这个远程的一个连接相当于啊,好,那这里边去获取delete里边的什么。
05:05
然后呢?Do。批批量处理吧,啊,批量处理点开,点开之后在这块继续往下走啊。那。它调用的这个是反回值,根据反馈值内容选择抛什么异常,对吧,我们不用管这两个,不是直接抛异常吗?对吧,那真正删除应该是什么。这行代码里边来,他自己调用的是Bach。点它还是调用自己啊重载的啊,里面有很多这个重载方法,点还是叫自己走,那这块掉到这的时候才是真正的我们看到那个要做的一个方法,还是要做校验,因为他这种框架呀,里面做东西做的比较多,对吧?啊前面客户端做的校验,这都是客户端的一个操作吧,客户端前面是不是我们看到做校验服务端还要做什么,还要做校验,做校验之后核心的就在这儿,这一行代码我不知道大家还记不记得。
06:05
嗯,来点开点开点开。这个可能不记得,但是看到这儿你就记得了。STEP1STEP2还记得吗?对吧?这个不是插入的核心逻辑,当时跟大家说了对吧?插入数据最后一步在reading里边,最后一步操作不是在这吗?我们刚才跟踪的代码是不是跟踪DB的进来的呀,就是到这,实际上它还是我们刚才所说的插入了一个数据,只不过说他对我们刚才所写的那个数据做了封装,再给里边添加什么类型这些东西,对吧?那你正常的铺的数据后面。是不是跟着一个value啊。对吧,那你d delete的数据也是插入一条数据进去,那他最后跟的是什么。是不是类型的,只不过说他在根据我们所选的参数,是不是自己选择一个类型添加,我们并没有看细节,它到底是,那我们想一下啊,那你如果说在前面风光定律的对象里边添加了family。
07:03
没有添加。列,那添加的标记就是什么滴利的family对吧,你添加到列了就滴利的color,哎,如果说你调用的是不加S的这个方式,那添加的标题就地例了,无非就是几个逻辑对吧?看你添加什么内容,那就是细节的东西了,对吧?因为根据最后结果我们推出来大概是这样,但是如果说你找那个代码还挺麻烦的,因为它里边做校验东西太多了。对吧,因为整个的框架复杂的框架,它它不是说核心业务逻辑有多复杂,是因为它里边你看每个地方都去干什么,什么判断呀,这个是否为呢做安全性校验,而且呢,它是一个分布式的通信框架,它还要考虑到多台机器数据一致性问题了。对吧,其实大数据当中这种分布式框架最难的在哪?就输出数据一致性问题。数据一致性问题是最难解决的啊,有兴趣的可以去看一下这些东西,但是在看之前呢,我推荐两个东西,两个问题先去了解一下,一个呢叫两军问题。
08:07
一个叫两军问题,一个叫拜占庭将军问题。拜一停了以后应该是这个停了是吧?有广子头吗?没了拜占庭将军问题。这两个东西呢,提出解决方案就是解决整个分布式文件系统当中消息一致性问题,就这一个问题。啊,其实分布式系统啊,倒不是他整个的业务逻辑有多难,因为刚才我们之前把那个核心的业务逻辑给他捋了,如果说不让你考虑什么安全性校验,不抛异常,把那个核心的逻辑去写一写,能不能写。应该差不多吧,大概的逻辑就是说根据它传入的几个参数。你判断一下传入的这个column是否为空脉,对吧,如果为空,再判断一下这个列足是否为空脉,哎,如果说列足有。列为空,那就要标记,就给它干什么?
09:02
Delete的family里面就给他添加一个数据,相当于是不是这个意思啊,对吧,这就我们所说的核心的业务逻辑,但是呢,你要把握的是它整个的流程嘛,数据流是怎么走的。啊,数据流是怎么走的,你刚开始如果说生产环境当中要看代码的话,首先也看的是这些东西,不要一号代,一行代码一行代码看你,你这个东西你就搞不定这个事了,因为你一旦钻到代码里边,你就很难跳出来了,能听懂吗?先把整个的大的方面搞清楚好,那接下来假如说你想看一下那个DV的标记到底是在哪块打造,对吧?具体的去网上搜一搜,哎,大概的是哪个代码,假如说他说的是在客户端做的,那你是不是核心的看客户端的几个类啊。对吧,这个是客户端跟服务端相连的类,这是服务端啊服务端因为它是基于RBC的一个通信框架,就是说我们所说的客户端跟什么服务端啊,客户端跟服务端它有一个远程的交互在里边啊,这种代码呢,就只能这这样去点啊,只能这样点,或者说你在本地idea当中搭建一个h base也可以。
10:05
Idea里边是可以搭建一个h base,可以第八个岛,甚至客户端代码可以第八个岛,远程服务端,这是能过去的,但很麻烦啊,很麻烦这个事就是idea里边相当于搭建一个的一个服务啊,能做这个事,网上资料呢也比较多,但是呢,那个东西如果说现在去做那个事,我觉得吧,就是呃,投入产出比非常低。能听懂这意思吗?投入了大量时间,但是得到回报其实并不多啊,并不多啊。这个东西呢。
我来说两句