首页 > Web开发 > 详细

3 netty的组件和设计

时间:2020-06-06 22:24:20      阅读:59      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

 

 

Channel—Socket

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

ChannelFuture—异步通知。

 

技术分享图片

 

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

 

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

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

技术分享图片

 

 

 

技术分享图片

技术分享图片

 

 

技术分享图片

 

 

 

//(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的添加顺序
            }
          });

 

 

 

 技术分享图片技术分享图片

 

技术分享图片

 

 

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

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

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

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

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

技术分享图片

 

 

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

技术分享图片

 

 

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

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

分配一个EventLoop

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 netty的组件和设计

原文:https://www.cnblogs.com/lakeslove/p/13056723.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!