美文网首页程序员
netty源码分析(17)- 新连接接入处理逻辑总结

netty源码分析(17)- 新连接接入处理逻辑总结

作者: Jorgezhong | 来源:发表于2019-02-26 10:53 被阅读0次

前面的学习从12到第16节都是围绕新连接接入的代码来学习,本节做一个总结。

  • 检测新连接:netty在服务端channel也就是绑定的NioEventLoop,bossGroup中轮询到accept事件
  • 创建NioSocketChannel:轮询到了事件之后,调用jdk的accpet()方法,获取了一个jdk的客户端channel,并将之封装厂netty的客户端channel,即NioSocketChannel,创建的过程中包括了其中的重要组件unsafepipeline,unsafe主要实现channel的读写,pipeline负责数据处理的业务逻辑链。
  • 分配线程以及注册Selector:服务端channel通过一个连接接入器ServerBootstrapAcceptor给当前客户端channel分配NioEventLoop,并且将该channel绑定到唯一的selector
  • 向selector注册读事件:最后通过传播channelActive()方法将客户端channel的读事件注册到selector上,至此新链接可正常读写数据。

两个问题

  • netty是在哪里检测到有新连接接入的?

boss线程执行的第一个过程,轮询出accpet事件,然后第二个过程通过jdk底层的accept方法,去创建这个连接

  • 新连接时怎么注册到NioEventLoop线程的

简单来说,boss线程通过获取chooser的next()方法,拿到一个NioEventLoop。然后将新连接注册到这个NioEventLoop上的selector。

相关文章

网友评论

    本文标题:netty源码分析(17)- 新连接接入处理逻辑总结

    本文链接:https://www.haomeiwen.com/subject/dgooyqtx.html