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入门-深入理解设计思想的主要内容,如果未能解决你的问题,请参考以下文章