3 netty的组件和设计

关于EventLoopGroup、EventLoop、ServerChannel、Channel之间的关系,还是没搞明白。

3 netty的组件和设计

 

 

Channel—Socket

EventLoop—控制流、多线程处理、并发;

ChannelFuture—异步通知。

 

3 netty的组件和设计

 

 channel的结构如上:我们最常用的是NioServerSocketChannel 和 NioSocketChannel

 

Channel、EventLoop、Thread 以及EventLoopGroup 之间的关系如下:

3 netty的组件和设计

 

 3 netty的组件和设计

 

 

3 netty的组件和设计

 

3 netty的组件和设计

 

 

 

3 netty的组件和设计

3 netty的组件和设计

 

 

3 netty的组件和设计

 

 

 

//(2) 创建ServerBootstrap
      ServerBootstrap b = new ServerBootstrap();
      b.group(group)
          //(3) 指定所使用的 NIO 传输 Channel
          .channel(NioServerSocketChannel.class)
          //(4) 使用指定的端口设置套接字地址
          .localAddress(new InetSocketAddress(port))
          //(5) 添加一个EchoServerHandler到于Channel的 ChannelPipeline
          .childHandler(new ChannelInitializer<SocketChannel>() {
            @Override
            public void initChannel(SocketChannel ch) throws Exception {
              //EchoServerHandler 被标注为@Shareable,所以我们可以总是使用同样的实例
              //这里对于所有的客户端连接来说,都会使用同一个 EchoServerHandler,因为其被标注为@Sharable,
              //这将在后面的章节中讲到。
              ch.pipeline().addLast(serverHandler);//这个就是Handler的添加顺序
            }
          });

 

 

 

 3 netty的组件和设计3 netty的组件和设计

 

3 netty的组件和设计

 

 

面向连接的协议 请记住,严格来说,“连接”这个术语仅适用于面向连接的协议,如TCP,其

保证了两个连接端点之间消息的有序传递。

有两种类型的引导:一种用于客户端(简单地称为Bootstrap),而另一种

ServerBootstrap)用于服务器。无论你的应用程序使用哪种协议或者处理哪种类型的数据,

唯一决定它使用哪种引导类的是它是作为一个客户端还是作为一个服务器。

3 netty的组件和设计

 

 

① 实际上,ServerBootstrap 类也可以只使用一个EventLoopGroup,此时其将在两个场景下共用同一个EventLoopGroup。—译者注

3 netty的组件和设计

 

 

与ServerChannel 相关联的EventLoopGroup 将分配一个负责为传入连接请求创建

Channel 的EventLoop。一旦连接被接受,第二个EventLoopGroup 就会给它的Channel

分配一个EventLoop

 

关于EventLoopGroup、EventLoop、ServerChannel、Channel之间的关系,还是没搞明白。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 netty的组件和设计

上一篇:Django后端实现基于ajax的pyecharts动态加载


下一篇:Kubernetes存储框架解析