Netty入门-深入理解设计思想

Posted yxz1025

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty入门-深入理解设计思想相关的知识,希望对你有一定的参考价值。

在了解Netty之前,我们需要理解其实现思路,先介绍以下几个核心的组件概念:

1、Bootstrap

Netty中的引导类负责引导Netty。引导过程包括启动线程、打开套接字等。引导将在它自己的教程中进行更详细的解释.

2、EventLoopGroup

Netty EventLoopGroup是EventLoop的一组。可以将多个EventLoop组合在一起。这样,EventLoop就可以共享一些资源,比如线程等

3、EventLoop

Netty EventLoop是一个不断寻找新事件的循环,例如来自网络套接字(来自SocketChannel)实例的传入数据。当事件发生时,事件被传递给适当的事件处理程序,例如ChannelHandler。

4、SocketChannel

Netty SocketChannel表示通过网络连接到另一台计算机的TCP连接。无论您使用Netty作为客户机还是服务器,与网络上其他计算机交换的所有数据都通过一个SocketChannel实例传递,该实例表示计算机之间的TCP连接。

SocektChannel由一个EventLoop管理,并且始终只由同一个EventLoop管理。因为EventLoop总是由同一个线程执行,所以SocketChannel实例也只能由同一个线程访问。因此,在从套接字通道读取数据时,不必担心同步问题。

5、ChannelInitializer

Netty通道初始化器是一种特殊的通道处理程序,它在创建SocketChannel时附加到SocketChannel的ChannelPipeline上。然后调用ChannelInitializer,以便它可以初始化SocketChannel。

在初始化SocketChannel之后,ChannelInitializer将自己从ChannelPipeline中移除。

6、ChannelPipeLine

每个Netty套接字通道都有一个通道管道。ChannelPipeline包含ChannelHandler实例的列表。当EventLoop从SocketChannel读取数据时,数据被传递给ChannelPipeline中的第一个ChannelHandler。第一个ChannelHandler处理数据,可以选择将数据转发给ChannelPipeline中的下一个ChannelHandler,下一个ChannelHandler也处理数据,可以选择将数据转发给ChannelPipeline中的下一个ChannelHandler等。

当将数据写入SocketChannel时,写入的数据在最终写入SocketChannel之前也会通过ChannelPipeline传递。

7、ChannelHandler

Netty ChannelHandler处理从Netty SocketChannel接收的数据。ChannelHandler还可以处理被写入SocketChannel的数据。

以上是关于Netty入门-深入理解设计思想的主要内容,如果未能解决你的问题,请参考以下文章

深入源码去理解Netty线程池的设计思想

Netty源码EventLoop

深入理解观察者模式

下载书籍:《Netty权威指南》

Netty4概念篇:Netty架构设计

netty的入门