·如果我们自己是Netty
网络应用的设计者,想要设计出高性能的网络应用,首先要面对的问题就是如何解决网络编程的性能瓶颈。那么网络应用的性能瓶颈是什么呢?我们都知道传统的网络应用使用的是BIO
模型,也就是阻塞式IO
。网络程序处理当中的read()
以及write()
操作都会阻塞当前线程的。所以在传统的IO
模型当中每一个socket
连接都会有单独的线程来进行处理。
但是在当前的互联网时代,客户端的连接可能是百万、千万甚至上亿级别的,服务器不可能创建这么多的线程来处理客户端请求。这就是传统IO
网络连接的性能瓶颈所在。
(2)模型优化
如上一节内容所述,传统的IO
模型的性能瓶颈在于服务端需要为每一个socket
连接分配线程来满足业务处理的需要。那么有没有一种方法可以不需要建立那么多连接也可以处理客户端的请求呢?如果要用一个线程处理多个请求,那么BIO
是无法实现的。所以我们可采用java
中的NIO
来完成此部分的优化操作。Netty
的做法是采用Reactor
模式,所谓Reactor
模式就是是一个使用了同步非阻塞的I/O多路复用机制的模式。这里不再展开说明。
在Netty
的世界中,EventLoopGr