`
iwinit
  • 浏览: 452479 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

深入浅出Netty之一概念模型

阅读更多

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

    资源名称:深入浅出Netty资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    架构师特刊:深入浅出Netty

    16年的一本期刊,是关于netty的,作者是李林峰,想必大家都熟悉这位作者,《netty权威指南》就是他的作品

    深入浅出Netty ppt

    这是淘宝工程师一个分享,感觉还是不错的。适合初学者

    netty in action-深入浅出netty

    如资源名称-深入浅出Netty。 英文名-Netty_in_Action_v5_MEAP_2013.pdf

    深入浅出NETTY

    构,底层都需要一个...由于 Netty 源码的复杂性和 NIO 编程本身的技术门槛限制,对于大多数初学者而言,通过自己阅读和分析源码来深入掌握 Netty 的设计原理和实现细节是件非常困难的事情。感兴趣的朋友可以过来看看

    架构师特刊:深入浅出Netty.pdf

    最近几年,Netty社区的发展如火如荼,无论是大数据领域,还是微服务架构,底层都需要一个高效的分布式通信框架作为基础组件。 Netty凭借优异的性能、灵活的可扩展新得到了广泛的应用。短短几年间,Netty已经成为...

    深入浅出Netty_netty_

    netty 编程说明,有详细的代码案例 时合新手上路。

    深入浅出Netty文档.zip

    netty文档深入浅出

    深入浅出Netty_netty5.0_

    Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序.

    架构师-深入浅出Netty 书签版

    李林锋,2007 年毕业...软件的设计和开发工作,有7 年NIO 设计和开发经验,精通Netty、Mina 等 NIO 框架和平台中间件,现任华为软件平台开放实验室架构师,《Netty 权威 指南》、《分布式服务框架原理与实践》作者。

    深入浅出netty-3.rar

    阿里大佬netty详解文档,挺不错的,对netty有兴趣的同学可以学习学习,

    Netty 高并发深入浅出学习高并发服务器

    Netty 高并发深入浅出学习高并发服务器Netty 高并发深入浅出学习高并发服务器

    Netty核心精讲之Reactor线程模型源码分析.mp4

    Netty核心精讲之Reactor线程模型源码分析 Netty核心精讲之Reactor线程模型源码分析

    netty源码解析视频

    netty源码解析视频教程,深入浅出netty源码视频

Global site tag (gtag.js) - Google Analytics