netty源码阅读--服务启动

这篇具有很好参考价值的文章主要介绍了netty源码阅读--服务启动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

netty是一个非常成熟的NIO框架,众多apache的顶级项目底层通信框架都是用的是netty,本系列博客主要是记录自己复习netty源码的过程,重在理解netty的关键如:如何启动,如何接受网络数据、netty的内存管理机制以及编解码器等,废话不多说,直接跟着netty源码中的MQTT的官方示例来看netty的启动过程
netty源码阅读--服务启动

启动时序图

下面这张时序图,是该example引导启动的整个过程中关键的步骤
netty源码阅读--服务启动

启动过程

bootstrap关联channel的类型

引导的初始化和netty线程池的初始化这里就不再赘述,建议大家自己去debug一下,我们直接从引导关联channel开始说起
netty源码阅读--服务启动
netty源码阅读--服务启动

服务端绑定端口相应源码解析

相关代码:

ChannelFuture f = b.bind(1883).sync();

netty源码阅读--服务启动
netty源码阅读--服务启动
最核心的就是AbstractBootstrap的initAndRegister方法,其中init和register为最核心的两个步骤

init步骤:

AbstractBootstrap中完成Channel的创建
netty源码阅读--服务启动
调用ServerBootStrap的init方法,完成Serverbootstrap中的
netty源码阅读--服务启动
addLast方法具体执行逻辑,是调用的DefaultChannelPipeline类的addLast方法:
netty源码阅读--服务启动
netty源码阅读--服务启动

register步骤

当init(channel)执行完成之后,继续执行register方法,用于把初始化的channel注册到boss eventloop

netty源码阅读--服务启动
Group().register(channel)直接执行到MultithreadEventLoopGroup.java中的register方法
netty源码阅读--服务启动
register最终访问到SingleThreadEventLoop.java中的register:
netty源码阅读--服务启动
netty源码阅读--服务启动
AbstractChannel.AbstractUnsafe类的register方法
netty源码阅读--服务启动
第8步骤中,是服务端启动时执行的方法,eventLoop.execute方法,通过NioEventLoop中的任务队列被调度执行,此时是boss线程池
netty源码阅读--服务启动
此时内部task只有一个,即第8步的register0()方法,因此下一步执行register0方法——注意,此时boss线程池中线程启动完成,当task执行之后,正式监听并处理客户端网络接入

AbstractUnsafe类的register0方法

netty源码阅读--服务启动
第10步中的doRigister方法,执行到AbstactNioChannel.AbstractNioUnsafe类中的doRegister方法:
netty源码阅读--服务启动
netty源码阅读--服务启动文章来源地址https://www.toymoban.com/news/detail-420830.html

到了这里,关于netty源码阅读--服务启动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop源码阅读(二):DataNode启动

    说明: 1.Hadoop版本:3.1.3 2.阅读工具:IDEA 2023.1.2 3.源码获取:Index of /dist/hadoop/core/hadoop-3.1.3 (apache.org) 4.工程导入:下载源码之后得到 hadoop-3.1.3-src.tar.gz 压缩包,在当前目录打开PowerShell,使用 tar -zxvf 指令解压即可,然后使用IDEA打开 hadoop-3.1.3-src 文件夹,要注意配置好Maven或

    2024年02月07日
    浏览(49)
  • zookeeper1==zookeeper源码阅读,源码启动ZK集群

    下载源码 Tags · apache/zookeeper · GitHub https://codeload.github.com/apache/zookeeper/zip/refs/tags/release-3.9.1 JDK8 MAVEN3.8.6 mvn -DskipTests=true package 配置ZK1 zkServer.cmd中指出了启动类是 QuorumPeerMain QuorumPeer翻译成集群成员比较合理,Quorum集群Peer成员 在代码目录下新建data文件夹和log文件夹 并在dat

    2024年02月05日
    浏览(45)
  • 用netty轻松实现一个高效稳定的TCP服务器

              随着物联网的发展,很多项目都开始涉及到了tcp连接这块,在这里我们轻松用netty去实现,站在巨人的肩膀上。 关于netty包引用: 实现TCP服务器代码 依赖netty只需几行代码tcp服务:  业务处理代码(参考) 以下是处理报文业务类可参考,注意代码未优化:  运行

    2024年02月22日
    浏览(43)
  • 14.Netty源码之模拟简单的HTTP服务器

    HTTP 服务器是我们平时最常用的工具之一。同传统 Web 容器 Tomcat、Jetty 一样,Netty 也可以方便地开发一个 HTTP 服务器。我从一个简单的 HTTP 服务器开始,通过程序示例为你展现 Netty 程序如何配置启动,以及引导器如何与核心组件产生联系。 完整地实现一个高性能、功能完备、

    2024年02月15日
    浏览(46)
  • 29.Netty源码之服务端启动:创建EventLoop&Selector流程

    通过前几章课程的学习,我们已经对 Netty 的技术思想和基本原理有了初步的认识,从今天这节课开始我们将正式进入 Netty 核心源码学习的课程。希望能够通过源码解析的方式让你更加深入理解 Netty 的精髓,如 Netty 的设计思想、工程技巧等,为之后继续深入研究 Netty 打下坚

    2024年02月12日
    浏览(37)
  • 32.Netty源码之服务端如何处理客户端新建连接

    Netty 服务端完全启动后,就可以对外工作了。接下来 Netty 服务端是如何处理客户端新建连接的呢? 主要分为四步: md Boss NioEventLoop 线程轮询客户端新连接 OP_ACCEPT 事件; ​ 构造 初始化Netty 客户端 NioSocketChannel; ​ 注册 Netty 客户端 NioSocketChannel 到 Worker 工作线程中; ​ 从

    2024年02月12日
    浏览(41)
  • 如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能?

    本文将详细介绍如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能。 WebSocket是一种基于TCP的协议,它允许客户端和服务器之间进行双向通信,而不需要像HTTP那样进行请求和响应。Netty是一个Java网络编程框架,它提供了强大的异步事件驱动网络编程能

    2024年02月16日
    浏览(42)
  • Nacos 1.4.x 服务发现源码阅读

    关键属性 HostReactor MapString, ScheduledFuture? futureMap:缓存向服务端请求ServiceInfo的定时任务 MapString, ServiceInfo serviceInfoMap:缓存从服务端获取的Service信息 MapString, Object updatingMap:用来标记是是否存在其他请求向服务端以相同的条件请求ServiceInfo ServiceManager MapString, MapString, Service

    2024年02月12日
    浏览(27)
  • go-zero的服务发现源码阅读

    服务发现原理与grpc源码解析_wangxiaoangg的博客-CSDN博客   go-zero rpc demo官方文档:rpc编写与调用 | go-zero 目录 一 服务注册 1. 创建rpc服务 2. 启动rpc服务 3. registerEtcd做了什么 4. discov.NewPublisher 服务发布者 二 服务发现 1.定义注册resolver 2.解析etcd地址创建链接 3.update方法 在看rp

    2024年02月06日
    浏览(59)
  • [学习分享]----sylar服务器框架源码阅读--IO协程调度模块

    sylar作者在本站的地址为 这里,也可以查看 作者主页,也有视频教程可以 点击这里。此外,也可以看一下赵路强大佬的关于sylar协程模块的博客 点击这里,我本人在阅读sylar源码的时候也是参考了赵路强大佬的解析 可以点击这里。 各位看官也可以加我的qq和我讨论2511010742

    2024年01月17日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包