• 8 引导


    服务器致力于使用一个父Channel 来接受
    来自客户端的连接,并创建子Channel 以用于它们之间的通信;而客户端将最可能只需要一个
    单独的、没有父Channel 的Channel 来用于所有的网络交互。(正如同我们将要看到的,这也
    适用于无连接的传输协议,如UDP,因为它们并不是每个连接都需要一个单独的Channel。)
    为什么引导类是Cloneable 的
    你有时可能会需要创建多个具有类似配置或者完全相同配置的Channel。
    为了支持这种模式而又不需要为每个Channel 都创建并配置一个新的引导类实例,
    AbstractBootstrap 被标记为了Cloneable在一个已经配置完成的引导类实例上调用clone()方法将返回另一个可以立即使用的引导类实例。 注意,这种方式只会创建引导类实例的EventLoopGroup的一个浅拷贝,
    所以,后者将在所有克隆的Channel实例之间共享。
    这是可以接受的,因为通常这些克隆的Channel的生命周期都很短暂,
    一个典型的场景是——创建一个Channel以进行一次HTTP请求。

     

    关于IllegalStateException 的更多讨论
    在引导的过程中,在调用bind()或者connect()方法之前,必须调用以下方法来设置所需的组件:
     group();
     channel()或者channelFactory();
     handler()。
    如果不这样做,则将会导致IllegalStateException。对handler()方法的调用尤其重要,因
    为它需要配置好ChannelPipeline。

    ServerChannel 的实现负责创建子Channel,这些子Channel 代表了已被接受的连接。

     

    我们在这一节中所讨论的主题以及所提出的解决方案都反映了编写Netty 应用程序的一个一

    般准则:尽可能地重用EventLoop,以减少线程创建所带来的开销。

  • 相关阅读:
    [Leetcode Week3]Evaluate Division
    [Leetcode Week3]Course Schedule
    [Leetcode Week3]Clone Graph
    [Leetcode Week2]Sort List
    [Leetcode Week2]Sort Colors
    [Leetcode Week2]Merge Intervals
    [Leetcode Week1]Longest Substring Without Repeating Characters
    哈夫曼树的数组实现
    cocos2d-x3.16 default模式项目 Android Studio C++文件编译失败问题
    html display和visibility在资源加载上的区别
  • 原文地址:https://www.cnblogs.com/lakeslove/p/13082426.html
Copyright © 2020-2023  润新知