Netty源码阅读实战(二)-Netty基本组件

1 一个简单的socket例子

  • 无 netty 前编写的代码 传统的HTTP服务器的原理创建一个ServerSocket

  • 监听并绑定一个端口一系列客户端来请求这个端口服务器使用Accept,获得一个来自客户端的Socket连接对象

  • 启动一个新线程处理连接读Socket,

    • 得到字节流解码协议
    • 得到Http请求对象处理Http请求
    • 得到一个结果
    • 封装成一个HttpResponse对象编码协议
    • 将结果序列化字节流写Socket,
    • 将字节流发给客户端
  • 继续循环步骤3

  • 流程

    • 服务端监听端口
    • 客户端会连接服务端
    • 客户端每次都会写数据,间歇5s
    • 服务端收到并写回客户端

2 Netty对于socket的抽象

3 Netty组件简单介绍

3.1 NioEventLoop

netty的发动机

Server  Client 这些 while(true)就对应一个 run 方法 NioEventLooprunnetty里有不同的io编程模型实现,以Nio为例,对io事件的处理是在NioEventLoop里做的,事件的注册,是下面的这个方法 不同的事件调用unsafe的不同方法,netty对底层socket的操作都是通过unsafe来做的 unsafe主要由两种不同的实现

  • NioMessageUnsafe
  • NioByteUnsafe

NioServerSocketChannel使用的是NioMessageUnsafe来做socket操作 NioSocketChannel使用NioByteUnsafe来做socket操作

3.2 Channel

  • 以服务端的NioMessageUnsafe为例来看下read()方法的实现,对应是否有新连接进来的情况 AbstractNioMessageChanneldoReadMessagesNioServerSocketChanneldoReadMessages直接把底层的 channel 封装成 NioSocketChannel

3.3 ByteBuf

3.4 Pipeline

netty 将其抽象成逻辑链,看看 netty 是怎么把每个 pipeline 加入到客户端连接的

3.5 ChannelHandler

#笔记##读书笔记#
全部评论
🐴
点赞 回复
分享
发布于 2019-05-24 08:07

相关推荐

投递策略与准备精准定位:研究美团的业务方向还有技术栈,个人简历尽可能往上靠,突出与美团岗位相关的项目经验和技能!提前准备:一定要提前准备问题,要事先了解公司文化还有岗位要求,这也会在面试官心里加分。实习过程中的学习与成长主动学习:不仅限于完成分配的任务,当然一般是不会让你闲着的,基本上不用担心不会,到了再学就行,因为公司也有自己的技术和工具。实战经验:实习时候会让你参与实际的项目,让你了解软件开发的整个生命周期,流程很规范,从需求评审、方案设计、自己开发、代码评审和测试上线等。团队协作:大家都很好相处的,团建很多,已经参加两次团建的我转正攻略成果展示:一般是会写个文档(我当时转正时候)或者是转正答辩,一般都会留下的,美团的留用率还是挺高的。积极反馈:建议积极跟导师沟通,这样真的会让自己成长的很快,摊上一个好导师真的是会让工作干起来没那么不舒服。职业规划与心得目标明确:根据实习经历,及时调整和明确自己的职业规划,找到最适合自己的发展路径。我身边就有实习时候干算法,秋招找测试的,工作还是要干的舒心不是。心态调整:保持乐观的心态,将遇到的困难视为成长的机会,我问了干了10个月的校招生,也表示现在还无法独立自己做需求,所以遇到难题不要emo!!!实习生活分享美团文化:可能大家都会调侃,开水团~确实,福利貌似只有开水,但是美团周边很多的,什么有奖评论,参加抽奖啦,这些非常好拿,还有就是mbp笔记本,4年🉑回购,不是你必须干四年才可以回购,是按照笔记本开封日期算起~美团在职实习生,随便问,我必答!!!附上内推码:RW4KGAP,欢迎大家来美团👏👏👏#美团校招##美团2024届秋招##美团工作体验##正在实习的碎碎念##美团##实习##浅聊一下我实习的辛苦费#
点赞 评论 收藏
转发
点赞 7 评论
分享
牛客网
牛客企业服务