• Netty组件介绍(转)


    http://www.tuicool.com/articles/mEJvYb

    为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作的。Netty应用中必不可少的组件:

    • Bootstrap or ServerBootstrap
    • EventLoop
    • EventLoopGroup
    • ChannelPipeline
    • Channel
    • Future or ChannelFuture
    • ChannelInitializer
    • ChannelHandler
    Bootstrap,一个Netty应用通常由一个Bootstrap开始,它主要作用是配置整个Netty程序,串联起各个组件。
    Handler,为了支持各种协议和处理数据的方式,便诞生了Handler组件。Handler主要用来处理各种事件,这里的事件很广泛,比如可以是连接、数据接收、异常、数据转换等。
    ChannelInboundHandler,一个最常用的Handler。这个Handler的作用就是处理接收到数据时的事件,也就是说,我们的业务逻辑一般就是写在这个Handler里面的,ChannelInboundHandler就是用来处理我们的核心业务逻辑。
    ChannelInitializer,当一个链接建立时,我们需要知道怎么来接收或者发送数据,当然,我们有各种各样的Handler实现来处理它,那么ChannelInitializer便是用来配置这些Handler,它会提供一个ChannelPipeline,并把Handler加入到ChannelPipeline。
    ChannelPipeline,一个Netty应用基于ChannelPipeline机制,这种机制需要依赖于EventLoop和EventLoopGroup,因为它们三个都和事件或者事件处理相关。
    EventLoops的目的是为Channel处理IO操作,一个EventLoop可以为多个Channel服务。
    EventLoopGroup会包含多个EventLoop。
    Channel代表了一个Socket链接,或者其它和IO操作相关的组件,它和EventLoop一起用来参与IO处理。
    Future,在Netty中所有的IO操作都是异步的,因此,你不能立刻得知消息是否被正确处理,但是我们可以过一会等它执行完成或者直接注册一个监听,具体的实现就是通过Future和ChannelFutures,他们可以注册一个监听,当操作执行成功或失败时监听会自动触发。总之,所有的操作都会返回一个ChannelFuture。
  • 相关阅读:
    eclipse取消validation验证
    VMware12 pro装unlocker207补丁后依然没有apple mac选项,问题解决
    OSG学习:使用OSG中预定义的几何体
    技嘉主板+AMD CPU开启CPU虚拟化方法
    OSG学习:用多通道(multiple passes)实现透明度
    shader language学习(1)——shader language简介背景
    OSG学习:阴影代码示例
    代码整洁之道_条件判断
    springboot使用hibernate validator校验
    解决spring boot在RabbitMQ堆积消息情况下无法启动问题
  • 原文地址:https://www.cnblogs.com/guazi/p/6602905.html
Copyright © 2020-2023  润新知