Netty是一个java领域常用的IO框架,小编最近简单看了下它的实现,和大家分享下。小编能力有限,有不对的地方还请大家指出。这个系列将分多个文章来完成,第一篇先简单介绍下netty的概念模型。使用的netty版本是3.5.11.Final。
Netty的核心概念可以用这个类图来表示:
一.Bootstrap
netty框架启动的工具类,分client,server和udp3种,其核心功能是初始化主channel
二.ChannelFactory
创建Channel的工厂,接受ChannelPipeline参数,创建一个Channel。针对不同场景,netty提供了各种ChannelFactory,比如ServerChannelFactory用来创建server端的Channel,比如DatagramChannelFactory用来创建UDP的Channel
三.ChannelPipelineFactory
创建ChannelPipeline的工厂,比如在server中接受一个请求(子channel)时,会使用ChannelPipelineFactory创建一个ChannelPipeline,并附给子channel。该类一般是用户定义,是netty提供的扩展接口,基于此用户可以自定义其事件处理流。
四.Channel
Channel代表着一个通道,其封装了各种IO操作,比如bind,connect等,Channel还管理着一些配置信息,用户可以自定义一些IO参数。同时Channel是可以继承的,在server场景下,accept的channel会作为主channel的子channel存在。netty默认提供了各种Channel实现,包括OIO/NIO,udp/tcp,client/server等。Netty的channel是对java nio的封装。
五.ChannelPipeline
ChannelPipeline管理着一些列由用户自定义的ChannelHandler,handler之间使用职责链组成。同时,它还提供了事件触发的入口,这些事件将在handler之间按注册顺序执行。
六.ChannelHandler
事件处理器,主要分2个子接口ChannelUpstreamHandler和ChannelDownstreamHandler,分别处理UpstreamEvent和DownstreamEvent。这是业务方直接可扩展的接口,业务逻辑基本都封装在这里。一个handler也可以同时处理2种类型的事件。
七.ChannelEvent
事件,流转方式分Upstream events和downstream events,类型分MessageEvent,ExceptionEvent,ChannelStateEvent,WriteCompletionEvent等。
Upstream event主要有:messageReceived,exceptionCaught,channelOpen,channelClosed,channelBound,channelUnbound,channelConnected,writeComplete,channelDisconnected,channelInterestChanged,childChannelOpen,childChannelClosed等。
Downstream event主要有:write,bind,unbind,connect,disconnect,close等。
八.ChannelSink
Downstream事件的最终处理者,所有downstream事件交给netty线程前都会被其处理。它是管理IO线程和事件处理的桥梁。同样针对不同的场景,netty提供了各种实现。
以上是netty的核心模型,事件流转如下图
Upstream事件只会交给Upstream handler处理,downstream同理。
- 大小: 95 KB
- 大小: 84.8 KB
分享到:
相关推荐
《深入浅出Netty》是针对Java网络编程框架Netty的一份详细讲解材料,由淘宝工程师精心制作,特别适合初学者。Netty是一款高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。...
Netty是一种基于Java NIO操作的框架,它提供了异步的事件驱动的网络应用程序框架和工具,用于快速开发可维护的高性能协议服务器和客户端。Netty被广泛应用于互联网协议服务器和客户端的开发,包括但不限于HTTP服务器...
《深入浅出Netty》是一本专注于讲解Netty框架的编程指南,非常适合初学者入门。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书通过详实的代码案例,...
《深入浅出Netty_netty5.0_》是针对Netty 5.0版本的一本详细教程,旨在帮助读者理解并熟练运用这一强大的网络编程框架。Netty是一个开源的Java框架,它为开发高效、稳定、可扩展的网络应用提供了全面的支持。在本文...
这个“深入浅出Netty文档”压缩包包含了一份详细的PDF文档,旨在帮助开发者深入理解Netty的工作原理及其在实际应用中的使用。 Netty 的核心是它的事件驱动模型,基于Java NIO(非阻塞I/O)实现。它提供了一种优雅的...
《深入浅出Netty》是针对Java网络编程框架Netty的一份详细讲解文档,由阿里巴巴的专家编写。Netty是一个高性能、异步事件驱动的网络应用程序框架,它为开发可维护的高性能协议服务器和客户端提供了丰富的组件和API。...
Netty是一款高性能、异步事件驱动的网络应用框架,它被设计用于简化网络编程,特别是对于TCP和UDP协议的服务端和客户端的开发。Netty通过利用Java的NIO类库,提供了高效的网络处理能力,并且具有很高的可定制性和...
总的来说,《Netty进阶之路-跟着案例学Netty》是一本深入浅出、实践性强的Netty教程,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅,提升你的网络编程技能。通过阅读这本书,你将能够熟练地利用Netty...
第一部分:深入浅出Netty源码剖析 这部分教程主要讲解Netty框架的内部工作机制,包括其设计模式、事件驱动模型、线程模型以及缓冲区等核心概念。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可...
这本书籍《Netty 权威指南》深入浅出地介绍了 Netty 的核心概念、设计模式以及实际应用,是 IT 开发者深入理解和使用 Netty 的宝贵资源。 1. **Netty 概述** Netty 是由 JBoss 提供的一个开源框架,它简化了网络...
总之,《Netty 全文指南》高清版是一本深入浅出的教程,对于想要深入了解和使用 Netty 的开发者来说,能够提供宝贵的指导,帮助他们构建稳定、高效的网络应用。通过阅读这本书,你可以掌握 Netty 的核心概念、最佳...
这本书深入浅出地介绍了Netty的核心概念、设计模式以及实际应用场景,帮助读者理解和掌握如何在Java环境中构建高效、可靠的网络应用程序。 Netty的核心特性之一是其基于NIO(非阻塞I/O)的模型。非阻塞I/O允许一个...