netty基础概念

来源:互联网 发布:贷款软件哪个最快 编辑:程序博客网 时间:2024/06/06 05:58

参考 对于Netty的十一个疑问

一、什么是NIO?

有些人叫NewIo,实际上是None-blocked IO,非阻塞式IO,java7之后的NIO2是真正的NIO,引入了异步的通道,叫异步非阻塞IO,异步IO也被成为AIO

二、与BIO有什么分别?

随着基于NIO的各类NIO框架的发展,以及基于NIO的Web服务器的发展,Java在很多领域取代了C和C++,成为企业服务端应用开发的首选语言。在JDK 1.4推出Java NIO之前,基于Java的所有Socket通信都采用了同步阻塞模式(BIO),这种一请求一应答的通信模型简化了上层的应用开发,但是在性能和可靠性方面却存在着巨大的瓶颈当并发访问量增大、响应时间延迟增大之后,采用Java BIO开发的服务端软件只有通过硬件的不断扩容来满足高并发和低时延,它极大地增加了企业的成本,并且随着集群规模的不断膨胀,系统的可维护性也面临巨大的挑战,只能通过采购性能更高的硬件服务器来解决问题,这会导致恶性循环。显然BIO无法满足高性能、高并发接入的场景。同步阻塞是一请求一连接,socket服务端有个Acceptor来处理所有的请求,然后分发给一个对应的线程去处理,当请求并发量高的时候,就会出现阻塞,后面会出现大量的连接请求超时,导致客户端以为服务已经挂掉。后面的伪异步I/O只是在此基础上将线程的创建交给线程池来完成罢了,虽做了一点优化,仍然还是面对同样的阻塞问题。

三、使用NIO编程的优点有什么?

(1)客户端发起的连接操作是异步的,可以通过在多路复用器Selector注册OP_CONNECT等待后续结果,不需要像之前的客户端那样被同步阻塞。
(2)SocketChannel的读写操作都是异步的,如果没有可读写的数据它不会同步等待,直接返回,这样I/O通信线程就可以处理其他的链路,不需要同步等待这个链路可用。
(3)线程模型的优化:一个Selector线程可以同时处理成千上万个客户端连接,而且性能不会随着客户端的增加而线性下降,因此,它非常适合做高性能、高负载的网络服务器。

四、应用场景有哪些?

在互联网、大数据、网络游戏、企业应用、电信软件等众多行业得到成功商用,证明了它已经完全能够满足不同行业的商业应用了。

五、为什么用Nettty?

使用jdk提供的NIO API开发异步通信十分复杂,Netty是一个通信框架,有着简单的API,开发容易上手。

0 0
原创粉丝点击