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资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
16年的一本期刊,是关于netty的,作者是李林峰,想必大家都熟悉这位作者,《netty权威指南》就是他的作品
这是淘宝工程师一个分享,感觉还是不错的。适合初学者
如资源名称-深入浅出Netty。 英文名-Netty_in_Action_v5_MEAP_2013.pdf
构,底层都需要一个...由于 Netty 源码的复杂性和 NIO 编程本身的技术门槛限制,对于大多数初学者而言,通过自己阅读和分析源码来深入掌握 Netty 的设计原理和实现细节是件非常困难的事情。感兴趣的朋友可以过来看看
最近几年,Netty社区的发展如火如荼,无论是大数据领域,还是微服务架构,底层都需要一个高效的分布式通信框架作为基础组件。 Netty凭借优异的性能、灵活的可扩展新得到了广泛的应用。短短几年间,Netty已经成为...
netty 编程说明,有详细的代码案例 时合新手上路。
netty文档深入浅出
Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序.
李林锋,2007 年毕业...软件的设计和开发工作,有7 年NIO 设计和开发经验,精通Netty、Mina 等 NIO 框架和平台中间件,现任华为软件平台开放实验室架构师,《Netty 权威 指南》、《分布式服务框架原理与实践》作者。
阿里大佬netty详解文档,挺不错的,对netty有兴趣的同学可以学习学习,
Netty 高并发深入浅出学习高并发服务器Netty 高并发深入浅出学习高并发服务器
Netty核心精讲之Reactor线程模型源码分析 Netty核心精讲之Reactor线程模型源码分析
netty源码解析视频教程,深入浅出netty源码视频