00:00
好,各位同学大家好,我们继续接下来要和大家介绍一下。Unnux网络编程当中的最经典的五种IO模型,刚才你不是说IO多罗复用吗?那杨哥它怎么来的?为什么Linux要把它固化进自己所支持的内核态当中啊?至于什么叫用和用户态,什么叫内核态?给我签。在严格的勾UC2022那详细讲解过,不再赘述那么一句话,前面是理论知识和面试回答这一块,慢慢的要给地球们代码证明,可是为了说清楚代码,我们不得不回顾在这块的知识,做一个简单的了解,那么来,弟兄们。首先了解一下。Unix网络编程当中的五种IO模型分别是blocking IO,阻塞IO,非阻塞IOIO多了,右我们只介绍前三个啊,因为现在我们主要是讲red的相关的知识和平面式,不是讲这个IO模型啊,如果有机会大家呢,了解一下杨哥讲的nety。那么在这些动作。
01:20
详细说过,那么现在在面试当中。面试不涉及这两个,我暂不展开讲解,不在本次课程当中介绍,所以同学们了解一下,我们呢,只说前三个,了解它了以后就会变成阻塞,非阻塞。异步同步他们四种组合了以后,来决定了我们后面那些什么,艾多多复用ne相关的Java socket底层编程所需要拥有的基础知识和底层套路。那么来同学们首先。得到一个结论,在艾欧多路复用之前,我们常用的是阻塞,然后呢非阻塞,然后呢,艾欧多路服用,大家都清楚,阻塞肯定不好嘛,对吧,那么来吧。
02:13
从吃米线开始,吃面条开始啊,咱们简单的读一下来,同学们。现在我们聊这么一个案例,你呢,和公司架构师示范。找到一个饭店,又是饭点,百分百有很多人排队,我们就把我们后面要讲的知识啊,先用生活中的一个案例给同学们捋一下,第一个请求排队。然后多个顾客排成一条直线,是不是有一个收银点菜的收银员,这个呢,就是NX的反向代理,哎,杨哥,你不讲re吗?怎么又讲到N了?全串起来,直白的说一句,Rid n后面都用了一函数,都跟埃欧多罗夫有这种思想,沾亲带故,来吧,弟兄们。
03:05
前面有一大堆人来点菜,收银以后交给后台的厨师去干活,那么是不是只收钱,只收顾客的请求,收银员engines是不处理的,直接请求转发,把这个请求转给后厨,OK?七号宫爆鸡丁盖饭一份,然后这个排骨米线一份,然后这个担担面一份,OK,来吧,我们呢,交了钱拿着号离开了点餐收银台,找个座位坐下没问题吧?那么弟兄们,如果说我交完钱以后就在收银台等着,会不会导致后面的人买单?点餐产生阻塞,所以在这块绝对不可以阻塞,对吧?接下来我们走人了,这个是不是就是不是同步等待,而是异步处理,我们下了单马上离开收银台,你先做好了,会通过小喇叭,比如说17号顾客请取餐,你的餐好了请过来取一下,这个就是回调啊,只需要把整个故事串讲了以后,记住红色的东西就行了,后面我们用得到了解一下。那么现在如果你是同步处理,也就是说不是异步,一个请求过来交给服务器,你100%应该点完餐就马上离开,各自忙,而你不应该傻逼逼的在这等着,我们就在收银台站着等菜,后面的请求无法处理,客户等不及了,肯定会离开,超时哦,重试哦,这个是不是就是最恐怖的阻塞队列来。
04:43
那么接下来啊,我们现在呢,就是拿着我们的取餐号,17号找一找一个餐桌坐着,等着人家叫我们通知我们去取餐,服务器回调我们顾客,那么下面漏液这个纸号在后厨的服务器里面也有,是不是一式两份,17号顾客待会要取餐一碗米线,那么17号顾客的。
05:07
所点的餐是不是有一个厨师在后面坐着,那么他也要明白这个做的东东该给谁,这个就是登录以后的session会画ID,那个取餐号没问题吧,继续,那么有了它,大家是不是分开了,一式两份就不会把我的排骨米线送给别人了?那么过了一会儿。点餐排队的人越来越多,Request。Thread请求现场顾客越来越多,那么大家不忙了,只有一个收银台,可收银员已经是忙到极致了,一个服务器不够用了,那么接下来兄弟们。我们一看就说明什么,这个系统现在只开着一个收银台,就像银行只开着一个取钱的窗口,缺乏弹性扩容,那现在这么多人就应该增加收银台,可以没有其他收银设,可是呢,也没有其他收银设备,老板再着急呢,也没有用,那此时同学们请看,那么老板看到这收银在这里帮不了忙,后厨的订单也累积的越来越多,赶紧跑到后厨,注意老板亲自去后厨亲自做米线好了,那么这个时候同学们老眼,那么架构师呢,又会发话说明这个系统后台有什么并行的处理能力,可以随意的增加资源来处理,请求朱明线。
06:27
这个时候呢,就这么点资源,除了老板也不会有人在做了,好20分钟以后还没上来,肯定发飙了吗?看到没有,系统处理能力达到极限,怎么着超时了?这个时候呢,收银台的前排排面,前面排队的人已经越来越多。然后呢?等不及的看了这个苗头撤了,那么也是请求,是不是就超时了,就重试了,以后也没用,老板能不能卖,那么对不起,从越来越多到排队的已经不多了,但是还有很多人在等待,那么此时不好意思啊,老板跑过来让打扫卫生的去收银,让收银小妹也到后厨帮忙,再增加后台的处理能力,那么打扫卫生的做收银的磕磕绊绊的没有原来的小妹灵活,那此时这个不好意思,不好意思啊,点三张单子丢一张,这个呢,前台点餐这个点餐收银这块叫服务降级,那么为了保证米线的服务,他是把别的服务都要关掉了,一句话怎么着?
07:35
不再扫地了,你会发现有些餐厅体验特别不好,一进去以后餐桌上是不是很多碗筷上一个食客吃完的根本没来,来不及收,服务降级了,因为他会去保证更重要的服务。那么接下来又过了20分钟,后厨的交到237号排骨米线没有排骨了,能不能换成番茄?我估计看到这你是不是想骂人了?那么弟兄们跟到这儿看到没有,这个时候人太多,系统异常,那么他站了起来,不行,系统的进行补偿操作退费,所以饿着肚子撤了。弟兄们,这一个过程我相信已经模拟了我们很多种常见的网络和微服务的案情和案例,所以接下来弟兄们我们就来通过这个案例来理解一下我们对应的这些同步异步阻塞和非阻塞,以便摆平。我们最后的。
08:31
Bio IO IO多路复用相关的代码总结和调用。
我来说两句