Netty学习

一、NIO概念
阻塞:需要等待缓冲区中的数据准备好后才处理其他的事情,否则一直等待。
非阻塞:进程访问数据缓冲区的,如数据没有准备好直接返回,不会等待;如数据已经准备好,也是直接返回。
同步:是应用程序要直接参与IO读写的操作。
异步:所有的IO读写交给操作系统去处理,应用程序只需要等待通知。

二、BIO
是一个同步并阻塞的IO模式,传统的java.io包,基于流模式实现。
交互方式是同步、阻塞的方式。

三、NIO
是一种同步非阻塞的I/O模型,对应java.nio包,提供了Channel、Selector、Buffer等抽象。
面向缓冲的,基于通道的I/O操作方法
特点:
一个线程可以处理多个通道,减少线程的创建数量
读写非阻塞,节约资源,没有可读/可写数据时,不会发生阻塞导致线程资源的浪费

四、Netty
是一个NIO客户端服务框架。
Channel是JavaNIO的一个基本构造,传入或者传出数据的载体
EventLoop定义了Netty的核心抽象,用来处理连接的生命周期中所发生的事件,在内部,将会为每个Channel分配一个EventLoop
EventLoopGroup是一个EventLoop池,包含很多的EventLoop
Netty为每个Channel分配了一个EventLoop,用于处理用户连接请求,对用户请求的处理等所有事件,EventLoop本身只是一个线程启动,在其生命周期内只会绑定一个线程,让该线程处理一个Channel的所有IO事件。
Netty 是一个异步的、基于事件驱动的网络应用框架,它可以用来开发高性能服务端和客户端。

你可能感兴趣的:(Java,学习,学习,服务器,架构)