(初识)世界开源框架之源Netty的世界
前言
最进麟爷也有一段时间没有写博客了,在这期间我也并没有闲着,而是研究了netty的框架,为什么要研究netty呢?大家都知道各种开源框架,如Hadoop,Dubbo,RocketMQ甚至连Tomcat都是要在服务器开辟端口来提供服务的,本质使用的就是Socket,当然你可以称这种为RPC模式,通过Socker通信来进行分布式集群的处理,例如心跳检查,数据传输等等,而能做到这些的框架非Netty莫属,有这么一句话,如果你学java没有学Netty那么你的java等于白学了,哈哈当然这句话是夸大的。当然麟爷我也只是对netty的表层进行了一个初步的研究,更多的深入的研究需要日后继续进行
什么是netty?
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。(来源百度)
上面提到了几个概念,一个是网络应用框架,另一个是异步,很明显Netty是用来制作网络通信的开源框架,那么如何解释异步呢?
大家都知道传统的socket程序就是在服务器开辟一个端口,然后让套接字的包,去监听这个端口
如图:
当然这样会有一个问题,就是端口只是由一个单线程处理的,这样同时只能有一个客户端访问链接,其它要接入的客户就会阻塞等待线程完成再接入,这样效率就非常的低下,甚至会计算机发挥不出原来有的优势
后来大家就想了一个新的方法,同一个端口由多个线程进行并行服务,这样可以一定程度避免了线程阻塞的情况
但是这样会让服务器大量创建线程或者进程,会导致服务器的资源开销特别大,能否用一个方式?让一个线程同时服务器多个接入的请求呢?
我们把每一个和服务器连接的客户端的channel让通一个线程处理那样的话就是完美,于是出现了Netty的模式
如图: