00:00
来概述。前面呢,我们把IO学习完了,现在我们来看一下ninety。首先,我们要回答一个问题。有了NIO,为什么还有人来提呢?那是因为原生NIO存在一些问题。我们总结了这么几点。NIO的内库还有API呢,它比较。繁杂,使用起来比较麻烦,也就是说学习成本它比较高。需要我们熟练的掌握选择器,Serveret channel channel,还有bad buffer,也就buffer,以及他们之间的。关系。掌握起来比较麻烦。第二点呢,需要具备其他的额外的技能,比如说要熟悉Java多线程。因为NIO编程呢,涉及到preor,就是我们说的反应器模式,所以说对于使用NIO的同学来说呢,还必须知道多线程网络编程。
01:03
这样呢,你才能写出高质量的。这个NIO程序对吧,所以它是比较麻烦的。第三点呢,开发工作量还有难度都比较大,比如说如果我们用NIO去解决客户端面临的。断联重连。网络闪断,半包读写,还有失败缓存,网络用塞和异常流处理,这些呢用NIO来处理,其实还是比较麻烦的,因为NIO它这一层呢,还是比较底层的。站在这个底层的这个层面呢,对于这些。异网络的异常,我们把它统统称为网络异常,如果你的经验不是特别到位,其实你很难解决。因为网络编程再加多线程,本身就是我们编程里面其实是技术含量最高的,其实也是最难处理的,对不对。第四一点呢,就本身这个JDK的IO呢,它也存在一些bug,你比如说。
02:03
像这个1BUG,它就会直接导致我们的选择器空仑循,大家知道空仑循实际上是很可怕的一件事情,因为空仑型它会造成什么呢?造成死循环,直接就让这个CPU。用到100%。并且这个问题直到JDK1.7其实都没有彻底的解决,所以说。原生IO还存在一些bug,这样就导致你使用起来会出现一些莫名其妙的错误。而且这种错误呢,你还不好不好去排查。基于这样一个原因呢,就产生了nit,那么我们来看nit的官网是net.io,同学们可以上这个官网去看一下。打开这个官网呢,它会有一张图片,这个图片待会我解释什么意思,很重要。Nike呢?官网上对ni下了这样一个简单建议,说Nike是一个异步的。基于事件驱动的网络应用框架。
03:02
对不对,他是也就它是一个异步的基于事件驱动的网络应用框架。这个框架是用来干什么呢?For要为了干什么呢?快速的开发,快速的开发什么呀?高性能的服务器端和客户端,也就是说简单讲就是说我们这个ni呢,它是一个异步的基于事件驱动的网络应用框架。它可以干什么呢?它可以快速的开发高性能的server和。那下面这个图一定要看懂。这个图呢,大家可以看,它分成了三个部分,第一个部分这一部分。是我们nit的核心客和它有哪些和呢?比如说零拷贝,还有像这个这个communication就是交互API,但是就说白了就是它的API库嘛。
04:00
到他提供的API库,还有一个呢,还有一个可扩展的事件模型。也就是他是事件,事件驱动模型,在这在也在它的一个核里边。待会后面我们会讲到相关的这些组件。上面这一块来看一下,这一块呢,是说我们ni它支持的相关协议,比如说http web socket,也就是说你看只要你的浏览器支持web socket,就WS这个协议呢,你就可以开发web socket这种长链接的程序。对,它还支持g lib GB,就是压缩,还支持什么呢?大家看到没有SSL安全连接十大的TLCTS这样的相关的协议啊,像Google的啊,Proto这proTo Buffer这个呢,我们也会用到,这个是用来干什么呢?解码编码。对,还有大数据,大文件的一个transfer,大文件的一个传送,这些呢它都支持。
05:01
OK,那么这边是什么呢?这边是它支持的传输服务,比如说soed,还有gram http tunnel HP的一个隧道,还有像这个paal啊,In vm拍这些呢。是。我们ni之所以流行的一个核心就是它对很多协议,还有传输服务呢,它其实都是支持的。如果他他这些都不支持,实际上他很难有今天这样的一个广泛的应用。好的,那说完这个呢,我们来看一下Nike官网上对他的,呃,我们对这个图的用用文字再说一下,Ni是接bos提供的一个Java开源项目,Ni提供的是刚才已经说过了异步的基于实验驱动的网络应用程序框架,可以快速的开发高性能可靠高可靠的一个网络IO程序,Ni呢可以帮助你快捷简单的开发一个网络应用,相当于简化和流程化了NIO的开发过程。
06:02
你看我们写NIO,你看那个代码写起来多麻烦,一堆一堆的,先要怎么样啊,整一个server socket怎么怎么怎么样,又怎么怎么样,对不对,后面这些都没有了,全部给你包起来。就说你用NIO的时候写了一堆代码,大家看一下我们原先写这个服务器。OK,这这服务器我们现找不到啊,呃,待会再说吧,就先不去看它了,就是回忆一下我们原写的。服务器的代码和客户端代码,是不是前面光是初始化一些都有很多很多工作量啊,那如果说我们用来呢,这些简化了。这一因为它就是个框架,Ni呢是目前最流行的NIO框架。ni在互联网领域、大数据分布计算领域、游戏行业、通讯行业都得到广泛应用,像知名的double以及elastic search。这些呢,内部都采用ni作为它的网络通讯,这这这样一个框架来支撑。
07:01
我们再来看ni的优点,简单说两句哈,Ni的优点呢,我觉得有这么几点哈,第一个呢,他因为对这个NIOAPI进行了封装,所以他解决了这样一些问题,第一个它设计比较优雅。它设计优雅呢,呃,就适用于各种传输类型的统一API阻塞和非阻塞烧有它既可以适用于阻塞的,也可以使用非阻塞的。那他是把这个都给你怎么有,都给你统一在一起了,都都都能支持啊,它都能支持基于灵活且可扩展的事件模型,看到没有,它仍然是使用了NL事件驱动模型,可以清晰的分离关注点,高度可定制的线程模型,单线程一个或多个线程池,线程词你是可以定制的,比如说我有一个boss group,还有worker。Group到,那么这个boss group有几个线程,还有worker,呃,Worker group有几个线,有几个线程,我们是可以定制的。
08:01
使用也比较方便,它有详尽的加va do文档比较好,对他没有其他依赖项,而且这点其他有,他对其他的依赖并不高,明白我的意思吧,你比如说你用的是JDK5,如果你的版本是JDK5,其实3NI nit3就可以用了,你要用现在最新的NIT4相关的版本,你只要JDK66这个版本就可以用了。也就是说即使你是一个比较低的JDK版本,我们这个最新的nit呢也能用啊,所以它对其他的以其他包的椅呢并不高,还有呢,它的高性能吞吐量啊,延迟也比较低,减少资源消耗,最小化不必要的内存复制就是zero copy,那么还有安全是不是它支持相关的协议,SSL大的TLS是不是前面我们说过了。他支持这样写协议,SSL10大TS,从安全性来说呢,他也得到了相应的保障,还有他社区比较活跃,并且呢,发现bug会及时修复,你不用担心,就是如果发现了漏洞被别人攻击啊,他会及时的更新,你看他呃,待会你们会看到他发布的这个版本呢,其实是非常活跃的。
09:10
呃,2018年发的是四点,呃4.1.20到现在2019年都已经发了很多小版本,待会我们可以看到啊,待会我们可以看到。大家再看一个,那么ni的版本呢,呃,在哪里去下,就是那个ni包在哪去下呢?目前有345这个版本,那么首先三这个版本呢,太老了,咱们基本上没人用了啊,没人用了,那么五这个版本虽然是新的,但是呢,五出现动大bug,动重大的一个bug被网官网就废弃了。所以说目前呢,我们推荐使用的LET4点X4.1这个版本啊,4.1X稳定版,目前在官网上可以下的版本有这些啊,有来我们呢,在这个课程讲解过程中,我们就用的是let4.1点多少版,可能是二零啊,我们就用二零这个版本,大家看一下,在官网上大家可以下载。
10:05
好,我们来看一个。其实这次他。的下载下载地址,诶我这网络断了吗。哦,我这个网络好像断了。我看看我把网连一下哈,给他看一下现在最新版本是多少,看一下就行。好,连了下网。再来看能不能上去哈,走起来。诶,这个怎么回事儿,他还。他还不让我连呢。哦,是不是我这粘多了对吧。攒多了好走起来。好,我们可以看到这是他下载的一个网址,从这里看呢,最新是4.1.42啊,当时我们讲呢,可能不是用这个版本,但是差别并不大,到我们用的可能是4.1.20,我们用这个版本讲这个版本其实也不是很老的,是2018年,2018年也是去年才发布的,你看他这个。
11:13
版本是不是发这个发布的很快啊,很频繁的啊对,所以说呢,就是这么一个啊,这么一个情况,好,那关于Nike的,呃,版本这些说明呢,我们就到这,我们把这里讲的内容简单梳理一下,这块呢,我们对ninety。做了一个概述。梳理一下。插入一个分页号。走。好的。结势。把这块呢,做成我们的。正文。该说呢,我们重点就讲了这么一些东西,第一个呢,我们说一下原生NIO它存在的问题,比如面试官问到你有了NIO,为什么咱们还要去有一个Nike框架呢?诶你得你得简单跟他聊两句对不对,你要告诉他no呢,它存在的一些问题。
12:09
其实主要是说NIO长,学习成本比较高,开发的速度比较慢。这是他最最大的一个问题。然后我们说了,完了功能,我们就直接说Nike官网对ni下的一个定义。而且呢,也看到它的一个,呃,一个整体的一个结构。好,官网的地址说一下。对,就这里。好放这,然后呢,这张图大家要有一个基本认识哈。就说我们这个ni,它的整体的一个一个结构是什么样子的,它的和,然后它支持的协议,还有传输的服务。接着往下继续梳理,这样说完了过后,是不是我们说了一下,那这个就我就这个就不说了啊,这个不叫管他呢,然后呢,Ni的优点我们说了一下,它的好处是在什么地方。
13:02
Net的优点呢,我这里总结了有五点。对不对。其实不管是多少点,最最大就是说它开发的速度比较快,然后呢,相关的文档比较全,对主要是这个,而且性能比较好,就就是这些优点,所所有的框架的出现,基本上就是为了让我们代码写的更规范,输开发开发的效率更高,对不对,就是这些嘛。然后最后呢,我们又说了一下版本的问题。版本说明。那么有345,我们现在呢,基本上用的都是四这个版本,我这个版本因为有了bug就被废弃了。大家呢,可以在网上去下相关的版本,如果同学们想去使用最新的版本,你们也可以试哈,就说就说我用的是一个版本,你用一个新的版本也不会有太大的差异,因为4.1.20已经是比较新的了,是2018年出版的。所以还是比较新的,有到了这个现在虽然发了其他的一些4.1,其他的版本其实没有重,没有什么重大的改变。
14:08
好的,那关于nit的版Nike的基本概述呢,我们就聊到这里。
我来说两句