清华毕业大佬深解析从入门到百万年薪:IO模型与Netty,总计1.89G

前言

IO

(1)同步阻塞IO(Blocking IO):即传统的IO模型。

(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。

(3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型。

(4)异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非阻塞IO。

同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。

Netty是由JBOSS提供的一个java开源框架,现为Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。

“快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议(包括FTP、SMTP、HTTP等各种二进制文本协议)的实现经验,并经过相当精心设计的项目。最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。


清华毕业大佬深解析从入门到百万年薪:IO模型与Netty,总计1.89G

Netty网络线程模型

主要有两类线程组成: boss 线程、worker 线程。启动一个server实例只会产生一个boss线程,boss 线程主要负责监听端口,当有新的连接请求时就会产生一个task交给worker线程池处理, worker线程池中线程的个数默认是cpu个数的2倍。

清华毕业大佬深解析从入门到百万年薪:IO模型与Netty,总计1.89G

网络/0操作采用了目前流行的1/0多路选择器Seletor方式(具系统的实现来决定的)。

集的规员的还是2 ip是远国成机根据真你是列等),每个队列中实际上都注册着一些IntereWorker线程池中每个线程都维护几个处理从列(如主册队列,写任务队线程不断的循环地做ssalect操作,boss线程不断地将rsP(感兴趣的操作集),worketwork线程的注册队列中,每次都是新的连接请求注册到一一个是轮询出vorker线程池中的一个线程:

1.NioWorker nextWorker0 {

2.

3.workers. length)]:

return. workers [Math. abs

ForkerIndex. getAndInerement() %

}

又有新的连接请求械boss线程加到相应的雅换请求程中如果e操作结果大空则会主动遇出,当

程又会重新启动。

worker线程的队列时,该worker线这里在处理线程间同步和互时用了2个锁:

1.一个sterted标志,主要用于判断当前线程是否已经启动,当boss线程选择了一个oker线程后,想把新请求加入到该worker线程的新请求队时若该56则表示该woae线程没有有启动,所以要先启动worker线程,若startede则表示该worker线程已启动,则直接把请求加入到该oer线程的清求以列就就行了。当sorker线程的队列中没有了操作,即为空时,oter铁程会主动遇出,并设五步,所以使用了出,所以使用”敬对于5 eo线程和ohe线程问费进行同

2.synchronisedGtartStopLoclsletor选择器操作本身是同步的,但对el1onkey的操作则需要进行同步控制,所以又用到了一个锁: selectorGuard =neReentrantReadWriteLockO

第一个是互斥锁;第二个是读写锁。

每个worker线程各自使用-一个,slee即每个vosker 线程的请求队列中所有的新请求(即一个ScekChecoe中注册感兴趣的选择键集。都会在该worker线程的slet

源码层面无死角解析NETTY学习路线

清华毕业大佬深解析从入门到百万年薪:IO模型与Netty,总计1.89G

从入门到百万年薪:IO模型与Netty1.89G学习视频

清华毕业大佬深解析从入门到百万年薪:IO模型与Netty,总计1.89G

Netty实战和权威指南技术文档

清华毕业大佬深解析从入门到百万年薪:IO模型与Netty,总计1.89G

需要从入门到百万年薪:IO模型与Netty1.89G学习视频、Netty实战和权威指南技术文档的小伙伴。转发关注小编,私信小编“学习”得到获取方式吧~~~


分享到:


相關文章: