Netty基本组件模型简单说明

Netty的基本组件包括ChannelChannelHandlerChannelPipelineEventLoop。其中,Channel可以看做是一个连接(相当于一个Socket),在其上会有传入和传出的数据。Netty使用事件来通知状态的改变或者操作的状态,比如连接到远程主机、对方发送过来数据等等,而ChannelHandler就是用来处理这些事件的组件,在ChannelHandler中实现相应的函数,这样等到事件发生时Netty就会调用对应该事件的函数,而我们就是在这些函数里面编写程序的逻辑。实际上用于一个Channel上事件的不止是一个ChannelHandler,而是使用了一个由多个ChannelHandlerChannelPipeline来处理,类似于设计模式中的责任链模式。ChannelHandler可以分成ChannelInboundHandlerChannelOutboundHandler接口,分别用于处理流入和流出的数据,而不会影响到对应不是自己流向的数据。

EventLoop用于处理Netty的各种事件循环,一个EventLoop只会绑定到一个Thread上,而一个Channel始终也只会使用一个EventLoop来处理上面的事件,所以Channel是线程安全的,不用采取一些同步措施。在非阻塞传输(NIO和AIO)方式下,EventLoopGroup为每个新创建的Channel分配一个EventLoop,不过一个EventLoop可能对应多个Channel(阻塞传输是一对一),所以对于所有在这个EventLoop上的Channel来说,它们的ThreadLocal都将是一样的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章