Netty基本架构

NIO是New IO,jdk1.4的版本发行的新特性。

IO通道读取流数据,NIO通道读取缓存数据。从流里读取数据储存到缓存数据中,缓存满了后直到读取出部分缓存数据,数据才能继续从流里写入缓存。相比流,缓存的结构可以提高读效率,因为流数据写入到通道就立马读取,在这频繁读写次数中消耗了时间。缓存是一个块数据,块的特点为读写灵活,移动发生读指针和结束读指针,那么读取出的数据就是缓存中这段指针范围指定的数据。缓存的储存数据的特点解决了读写时间的高消耗问题。

 

调取使用NIO十分复杂,计算缓存的读取位置、判断连接状态、解释通道生命周期,都不简单。

Netty框架是常用的NIO框架之一,解决了调用NIO困难的难题。因为框架把NIO的底层逻辑封装在框架的内部,只提供几个方法和接口,就达到了使用NIO接口的效果。

 

Netty框架的组成部分分为三块:EventLoopGroup、Selector、Channel。这三部分清晰地划分了NIO的功能。

EventLoopGroup是线程池,负责执行各种Event事件。顾名思义,EventLoopGroup是线程的调取地,关联了一个EventLoop数组。数组中的每一个EventLoop就等于一个独立线程。

Selector是选择器,它能切换执行不堵塞的通道,而不选择执行正在堵塞的通道。它的功能是灵活地利用线程资源,减少资源的浪费,增加了性能。

Channel是通道,通道中会发生各种事件,例如socket连接,读取数据。

 

posted @ 2021-11-05 17:40  IT知识生产小店铺  阅读(67)  评论(0)    收藏  举报