00:00
好,那么我们接下来呢,准备往下来做呀,同学们,咱们接下来要去给大家讲一下组件的通信了啊,就是我们现在啊,这些组件都看见了,可是他们之间是如何通信的,你给我发消息,我给你发消息到底怎么发的呢?对不对?这个呢,我们给大家说一下,首先这个组件通信的话,它的底层呢,会有一些架构,为什么呢?比方说咱们之前呀,要是写的话,可能就是socket,因为两个组件就两个进程嘛,那么之间通信的可能就是socket,但这个socket呀,其实性能是比较低的啊,为什么呢?因为它有个主摄的概念,所以呢,我们在当前的这种框架当中不可能用socket,那它用的是什么呢?我们这里可以看一看啊来,我们回过去,其实呀,这个通信环境啊,咱们之前就有一个叫RPCV,大家还记得吗?有一个叫RPCNV哎,咱们可以打开啊,咱们去点一下点。点完以后呢,在我们这儿就有一个叫RPC因V,那这个其实是一个通信环境,但这个通信环境呢,我们可以来找一下啊,咱们看一下,在这个地方呢,我看看咱们确认一下,呃,这边我们点大家有没有发现在它的创建通信环境的时候,其实有个叫net啊,叫netty,所以啊,这个我们要给大家稍微的说一下了,所以咱们打开啊,咱们来说一下,咱们叫做通信环境啊,咱们叫通信环境,这个通信环境当中啊,咱们这里给大家说一下,它里面有一个非常重要的概念叫什么呢?叫做net,咱们叫做net,那这个nett呢,不好理解啊,为什么呢?它是一套通信框架,它是一个我们的通信框架,咱们的Spark呀,咱们早期的时候,它采用的是一个叫阿卡的通信框架,后来呢,采用的是net的通信框架,那么为什么要采用它呢?是因为啊,它本身其实它是支持我们的一个叫做AIO处理方式的,叫AIO叫异步通信。那说到。
01:55
Bio呢,大家可能啊不是很明白,所以呢,我们得给大家稍微的介绍一些原理性的东西,比方说咱们叫做BIIO,还有一个呢,我们叫做NIO啊,再来一个叫AIO。
02:07
那么什么叫Bo,咱们就称之为叫阻塞式IO啊,所以来咱们这边呢,给它放过来啊,咱们这边放过来,这个我写上啊,咱们来咱们叫Bo,咱们叫主摄式IO,就是说啊,我们在做IO处理的时候,它处于主摄状态。啊,然后呢,这个叫NIO,那这个我们就称之为叫非阻塞式IO了啊,所以把它拿过来咱们叫做非色式IO。然后呢,还有一个呢,就是我们刚才提到的一个叫AIO,咱们叫异步,这个A呢,就是异步的意思啊,咱们叫异步非主设施啊,非主设施我们的IO,所以大家会发现呢,其实对于我们当前的这个三种IO模式来讲的话,肯定是这个效率更快一些,对不对?而我们的net,其实它本身就是基于AIO来设计的,可是还是那句话,怎么理解他们三个呢,对不对,咱们给大家举个例子吧,好不好,先把咱们的这个嗯含义咱们先搞明白,咱们再来说它这个net的问题啊。
03:07
咱们这个bio n IO和这个AIO啊,它其实是三种IO的处理方式,那么首先咱们举个例子,比方说咱们现在要去吃饭。那么吃饭的话,如果现在假设呢,你到了我们的一个饭馆,跟老板说,老板给我来个蛋炒饭,你来个蛋炒饭的情况下,老板说,诶,我们前面呀,有十个人,你要稍微等一会儿,那你一看,哎呦,前面有十个人,那我等一会儿吧,所以这个时候你会怎么办呢?你会在这个饭馆中啊,找一台个桌子是吧,你就坐在这儿就等着,为什么呢?一会儿人来的话,如果你没有个桌子的情况下,那么你可能就没有办法吃饭了,对不对,你把饭做好了都没有地方吃,肯定不行,你就得站着了,对不对?所以怎么办?诶,你会在这个桌子前一直等着,等着前面十个人坐好了以后该你吧,这个就叫主摄,是IO,在你等待的过程中,你什么也干不了,你除了能刷手机以外,你能干什么?玩游戏那其实都是手机嘛,但你别的事儿干不了了,所以这个就叫阻塞式IO是吧,你只能做这一件事情,那么什么叫做非阻塞是IO呢?我们的非阻塞是IO是这个样子的啊,同学们来。
04:14
我们现在呢,去找老板呢,说老板给我一份蛋炒饭,老板说前面呢有十个人是吧,诶好了,诶这老板那是十个人的话,那一份饭呢,做多长时间呢?他说诶一份饭呢,可能需要什么呢?比方说五分钟,咱们举个例子啊,五分钟,那么如果五分钟你要十个人的话,完了这50分钟,那50分钟我不能干等着呀,所以呢,老板你给我先给我坐的,我先出去一趟,我一会儿回来,所以啊,你跑到旁边去打了会儿篮球,旁边巧了有一个篮球场。这个篮球场呢,你就去打球去了,但你50分钟其实时间不短呢,但是你打不好,为什么呢?哎呀,我的饭好没好啊,所以说你打篮球的过程当中,你时不时的得回去一趟,诶老板我的饭好没好,他说还没好,还有六个人,诶你回来又打了一会儿,然后又回去,老板我的饭好没好,还有三个人,你又回来投了会儿篮,你又去了,这个时候老板说还有一个你就跑这等着来了,对不对?所以你会发现我们这种方式并没有阻塞啊,你还可以继续去做别的事情,比方说打篮球,但是你放心好了,你要时不时的去干嘛呢,看一看咱们那个饭有没有做好,所以它的性能可以得到一个极大的提高,但是也会有一些性能的损耗,这就是我们的NI,就是它了,然后呢,我们再来看这个叫AIO,这个A呢叫异步非主色C是什么意思呢?就是说呀,不要去饭店找老板订餐了,为什么呢?我觉得呀,反正你在这儿等着对不对,怎么办?我打个电话,我们打一个电话。
05:42
饭给老板,老板我要订份饭,老板说现在人比较多,可能得一个小时之后才能给你送过去,好,没关系,你一个小时之后给我送到指定的位置就可以了,诶你把这个事儿约定好,约定好之后怎么办?你是不就可以打篮球去了,你打篮球我问同学们,这一个小时你打球的时间,你需要考虑别的事情吗?你根本就不用考虑,因为你事先已经跟老板约定好了,诶在一个小时之后,他把饭给你送到指定的位置对不对?所以这一个小时之内你什么都不用管,就做你的实验就完了,到达了一个小时之后,诶,你玩累了正好呢,回来在指定的位置把饭取回来,然后直接回家把饭热一热,是不是就可以直接吃了?
06:24
所以说你会发现这种方式谁都不等待,也不需要阻塞,你做你的,我做我的,诶互相不耽误,而且最终还把这个功能做了,所以这个性能是最快的。呃,但是呢,有一个问题啊,同学们什么问题呢?就是这个性能最好,而且就是基于A来开发的一个通信框架,但是有一个问题,什么问题呢?咱们的linuxx啊,他对我们的AIO它支持的不够好啊,支持不好。说的简单点就是不支持呗,是吧,不够好就是不支持呗,那谁支持的好啊,诶很简单,Windows啊,咱们的Windows为什么呀,咱们那个在web开发当中有个叫阿贾克斯的,那个阿贾克斯不就是Windows开发出来的嘛,对不对,所以它支持异步操作,但是呢,我们说了,你虽然说你的这个Linux对A支持的不够好,你不够好的话,但是它的模拟啊,这种异步操作,所以它采用的是一种的方式啊,我们的Linux啊来,它采用我们的E啊,咱们的E的方式啊,它模拟或者叫模仿吧,叫模仿我们的A操作。
07:32
所以啊,它其实不能做到真正的这个AIO,但是它采用了一种类似于这种方式来做一下啊,所以呢,性能呢,其实也还是可以的啊,这就是我们的net框架的一个原因,也是我们当前Spark通信框架底层的一个东西,我们先把这个事儿理解了,我们再说后面的一些原理性的东西好不好,同学们,OK,今天说到这儿。
我来说两句