当前位置: 首页 > news >正文

网站开发是网站后台开发吗/上海seo搜索优化

网站开发是网站后台开发吗,上海seo搜索优化,德庆网站建设价格,电子商务网站有哪些功能文章目录 1. 介绍2. 启动流程2.1 创建并初始化 Channel2.2 注册 Channel 到 EventLoop2.3 绑定端口并启动监听2.4 处理新连接(主从 Reactor 模型) 3. 启动流程图4. 总结 1. 介绍 Netty 服务器启动的核心入口是 ServerBootstrap 对象的 bind(int inetPor…

文章目录

  • 1. 介绍
  • 2. 启动流程
    • 2.1 创建并初始化 Channel
    • 2.2 注册 Channel 到 EventLoop
    • 2.3 绑定端口并启动监听
    • 2.4 处理新连接(主从 Reactor 模型)
  • 3. 启动流程图
  • 4. 总结


1. 介绍

Netty 服务器启动的核心入口是 ServerBootstrap 对象的 bind(int inetPort) 方法,本文将介绍 bind(int inetPort) 内部的执行流程。

2. 启动流程

2.1 创建并初始化 Channel

  • 创建 NioServerSocketChannel
    • 通过反射实例化用户指定的 Channel 类型(默认为 NioServerSocketChannel),其无参构造函数会通过调用 SelectorProvider 对象的 openServerSocketChannel() 方法 创建底层 JDK ServerSocketChannel,并设置为非阻塞模式。
    • 同时初始化 ChannelConfig(如 NioServerSocketChannelConfig)和 ChannelPipeline含头尾节点)。
  • 初始化 Channel 参数:通过 option() 设置的参数(如 SO_BACKLOG)被应用到 ChannelConfig,但部分参数(如 SO_BACKLOG)需在 绑定端口时 通过 JDK 的 ServerSocket 生效。

2.2 注册 Channel 到 EventLoop

  • 选择 EventLoop:从 BossGroup 的 EventLoopGroup 中选择一个 NioEventLoop(主 Reactor)。
  • 异步注册过程
    • 通过 register()Channel 注册到 EventLoop,该操作由 EventLoop 线程 异步执行若当前线程不是 EventLoop 线程,则任务会被提交到任务队列。
    • 注册成功后,Channel 进入“已注册未激活”状态(尚未绑定端口)。
  • 初始化 ChannelPipeline:注册完成后触发 ChannelInitializer 对象的 initChannel() 回调,执行以下操作:
    • 添加用户 Handler:将用户通过 handler() 设置的 Handler 添加到 Pipeline 中。
    • 添加 ServerBootstrapAcceptor:作为最后一个处理器,负责将新连接的 SocketChannel 分配给 WorkerGroup,并传递 childHandler()childOptions() 等配置。

2.3 绑定端口并启动监听

  • 绑定本地端口
    • 提交绑定任务到 EventLoop 的任务队列,由 EventLoop 线程调用 doBind():底层通过 JDK 的 ServerSocketChannel 对象的 bind() 方法绑定端口,此时 SO_BACKLOG 等参数真正生效。
    • 绑定成功后触发 ChannelActive 事件:通过 beginRead() 设置 interestOpsAbstractNioChannel 自动注册 OP_ACCEPT 事件。
  • 异步通知:绑定结果通过 ChannelFuture 通知,用户可通过 sync() 阻塞等待 或 addListener() 回调处理。

2.4 处理新连接(主从 Reactor 模型)

  • 接受连接请求:主 Reactor 的 NioEventLoop 监听到 OP_ACCEPT 事件后,调用 NioServerSocketChannel 对象的 doReadMessages() 方法,通过 ServerSocketChannel 对象的 accept() 方法创建 SocketChannel 对象。
  • 分配从 ReactorServerBootstrapAcceptor 将新建的 SocketChannel 提交到 WorkerGroup 的某个 EventLoop(从 Reactor),可能跨线程执行(通过 EventLoop.execute())。
  • 初始化客户端 Channel
    • 参数应用childOption()childAttr() 在注册时应用到客户端 Channel
    • 异步初始化:通过 childHandler() 中的 ChannelInitializer 延迟添加用户 Handler,在 EventLoop 线程中触发 initChannel(),避免阻塞主 Reactor。
    • 事件注册:客户端 Channel 默认关注 OP_READ 事件(可通过 childHandler() 修改)。

3. 启动流程图

启动流程图

4. 总结

Netty 服务器的启动流程主要体现在 ServerBootstrap 对象的 bind(int inetPort) 方法里,分为四个部分:

  • 创建并初始化 Channel
  • 注册 ChannelEventLoop
  • 绑定端口并启动监听。
  • 使用主从 Reactor 模型处理事件。
http://www.whsansanxincailiao.cn/news/31963188.html

相关文章:

  • 网站源码酒类/广东做seo的公司
  • 如何修改asp网站栏目/培训心得体会200字
  • 企业宣传网站源码/网站的优化seo
  • 大学生免费服务器/代做seo关键词排名
  • 织梦网站404怎么做/怎么优化一个网站
  • 武汉光谷未来学校/seo网站快速整站优化技术
  • 网站备案 取消/营销渠道名词解释
  • 网站建设的威胁/石家庄seo优化
  • 莱特币做空网站/武汉网站排名提升
  • 云服务器建设网站/林哥seo
  • 百度做的网站靠谱吗/优化seo教程
  • 小米网站制作/怎么优化网站
  • 网站菜单导航怎么做的/2024年将爆发新瘟疫
  • 河北邯郸做移动网站/ip子域名大全
  • 佛山建网站定制/女装标题优化关键词
  • 淘宝客网站开发视频教程/谷歌优化工具
  • 建筑学院网站/南宁白帽seo技术
  • 网站制作图书/自助建站网站哪个好
  • 做网站编辑的感受/搜狗站长推送工具
  • 网站后端性能优化措施/武汉百度推广优化
  • 邮箱网站架构/直销产业发展论坛
  • 图书馆网站建设所需资料/广州最新发布最新
  • 汽车4S店网站建设/四川二级站seo整站优化排名
  • 广西南宁网站公司/惠州网站seo排名优化
  • wordpress如何获取视频封面/沈阳百度推广优化
  • 找兼职工作在家做哪个网站好/杭州排名推广
  • 临沂在线做网站/抖音seo源码搭建
  • 创新的龙岗网站建设/相似图片在线查找
  • 如何做网商商城的网站/快速排名网站
  • 如何修改网站联系人/优化设计答案四年级上册语文