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连接,读取数据。
人前不露怯,
远足不露财,
内外当整洁,
自奉须俭约。

浙公网安备 33010602011771号