• Netty 基本概念


    从高层次的角度来讲,Netty解决了两个相应的关注领域: 技术的和体系结构的。 首先,它基于NIO的异步的和事件驱动的实现,保证了高负载下应用程性能的最大化和可伸缩性。其次,Netty也包含了一组设计模式,将应用程序逻辑从网络层解耦,简单了开发过程,同时也最大限度地提高了可以测试性、模块化以及代码的可重用性。

    3.1 Channel  EventLoop 和 ChannelFuture

    3.1.1  Channel

    Channel --Socket---连接----四元组

    Channel 类型: 从服务器端和客户端来分 NioServerSocketChannel   NioSocketChannel

                              从协议类型来说: OioServerSocketChannel  NioSocketChannel  NioDatagramChannel  EmbeddedChannel

    Channel 的主要方法: bind()   connect()   read()   write()   flush()

     3.1.2  EventLoop 

    • NioEventLoopGroup 实际上就是个线程池,一个 EventLoopGroup 包含一个或者多个 EventLoop;
    • 一个 EventLoop在它的生命周期内只和一个 Thread绑定;
    • 所有有 EnventLoop 处理的 I/O 事件都将在它专有的 Thread 上被处理;
    • 一个 Channel 在它的生命周期内只注册于一个 EventLoop;
    • 每一个 EventLoop 负责处理一个或多个 Channel;

     从类结构可知,NioEventLoopGroup是一个Schedule类型的线程池,线程池中的线程用数组存放,EventLoopGroup(其实是MultithreadEventExecutorGroup) 内部维护一个类型为 EventExecutor children 数组, 其大小是 nThreads, 这样就构成了一个线程池,线程池大小通过在实例化 NioEventLoopGroup 时, 如果指定线程池大小, 则 nThreads 就是指定的值, 反之是处理器核心数 * 2;

     

     3.1.3 ChannelFuture 

    Netty 中所有I/O操作都是异步的,因为一个操作可能不会立即返回,所以我们需要一种用于在之后的某个时间点确定其结果的方法,所以Netty提供了ChannelFuture接口

    ChannelFuture 主要的方法 get()  sync() cancel()  addListener()

     3.2  ChanelHandler 和 ChannelPipeline

    3.1 ChannelHandler 

    从应用程序开发人员的角度来讲,Netty的主要组件是ChannelHandler,它充当了所有处理入站和出站数据的应用程序逻辑的容器。 

    3.2 ChannelPipeline 

     ChannelPipeline 是可以为 ChannelHandler 编排顺序

  • 相关阅读:
    python分布式爬虫-Selenium(针对需要渲染的页面)
    《PHP高性能开发:基础、框架与项目实战》_王甲临
    flutter hello world
    C#+EF+SQLite数据库操作
    【转】Wilcoxon 检验之 rank-sum 与 signed-rank
    [转]多目标进化算法的性能指标总结 (一)
    IDEA查找栏
    [转]IDEA空指针断点
    Java 高斯分布随机数
    【Vegas原创】centos中挖矿病毒kdevtmpfsi的终极解决方法
  • 原文地址:https://www.cnblogs.com/Ivyduan/p/14167074.html
Copyright © 2020-2023  润新知