netty框架和tomcat区别在哪里小伙伴们知道吗?按理说它们是不会冲突的,接下来看看它们有哪些区别吧。
Netty与Tomcat区别
它们的区别不少,最大的区别就在于通信协议,这是众所周知的,Tomcat是一个服务器,它一定是基于Http协议的,它的实质是一个基于http协议的web容器,Netty则不同,Netty可以通过编程自定义各种协议,这是因为netty能够通过codec自己来编码/解码字节流,完成一种类似redis访问的功能,这就是它们之间最大的不同。
事实上很多人都说netty的性能肯定比tomcat性能高,实际tomcat从6.x开始就一直支持nio模式,且后续还有arp模式,这是一种通过jni调用apache网络库的模式,相较于老旧不堪的bio模式,并发性能得到了极大提高,特别是arp模式。而两者之间的性能问题,则取决于开发者了。
Netty有什么特点?
netty是极受大公司青睐的框架,这是因为它的三个特点:
高并发
传输快
封装好
Netty为什么并发高 ?
如图:
阻塞IO的通信方式
非阻塞IO的通信方式
从上面可以看到,NIO的单线程能处理连接的数量明显要比BIO高出不少,而原因就是图二中出现的Selector。
当一个连接建立之后,它有两个步骤要做,一是接收完客户端发过来的全部数据,二是在服务端处理完请求业务之后返回response给客户端。NIO和BIO的区别主要就是在第一步。
在BIO中,等待客户端发数据这个过程是阻塞的,这样就造成了一个线程只能处理一个请求的情况,而机器能支持的最大线程数是有限的,么BIO不能支持高并发的原因就在这了。
但在NIO中,当一个Socket建立好之后,Thread并不会阻塞去接受这个Socket,而是将这个请求交给Selector,Selector会不断的去遍历所有的Socket,一旦有一个Socket建立完成,他会通知Thread,然后Thread处理完数据再返回给客户端——这个过程是不阻塞的,这样就能让一个Thread处理更多的请求了。
以上就是本篇文章的所有内容,关于netty框架和tomcat区别小伙伴们了解了吧,更多java基础知识请记得关注我们了解。
推荐阅读: