熬夜手绘netty线程模型图 如果还不懂的话,那我...
Netty组件
ServerBootstrap/Bootstrap
不知道大家还熟悉这个么,我们在学习jvm类加载的时候,讲过一个引导类加载器,我们也清楚了引导类加载器是用来干啥的,所以同样,netty的这两个组件也有同样的地位和身份,它们分别是服务端启动配置引导类和客户端启动配置引导类。通过这个引导类 串联netty所有的组件
Channel
Netty 网络通信的组件,能够用于执行网络 I/O 操作。Channel 为用户提供:
1)当前网络连接的通道的状态(例如是否打开?是否已连接?)
2)网络连接的配置参数 (例如接收缓冲区大小)
3)提供异步的网络 I/O 操作(如建立连接,读写,绑定端口),异步调用意味着任何 I/O 调用都将立即返回,并且不保 证在调用结束时所请求的 I/O 操作已完成。
4)调用立即返回一个 ChannelFuture 实例,通过注册监听器到 ChannelFuture 上,可以 I/O 操作成功、失败或 消时回调通知调用方。我们现在已经见到的有SocketChannel 和ServerSocketChannel,后面还会见到更多。
Selector
netty 是基于selector对象 实现多路复用。关于多路复用实现方式,我们在第一节课也给大家介绍了,这里就不展开讲了。netty通过selector 单个线程就可以实现对多个客户端channel事件的监听。
NioEventLoop
NioEventLoop内部维护了一个线程和一个任务队列,支持异步提交任务。线程启动后会调用loop的run方法,执行异步队列中的非I/O任务和I/O任务。
IO任务
accecpt、connect、read、write
非I/O任务
注册、绑定等
NioEventLoopGroup
内部维护多个NioEventLoop,负责处理多个channel事件,但是一个channel只会交给一个NioEventLoop处理
ChannelHandler
ChannelHandler 处在pipline中,它有两种类型:进站和出站,当服务端收到消息时,所有的进站hanlder将会被执行,当服务端往客户端写消息时,所有的出站handler将会被执行。
ChannelPipline
这就是上面说的pipline,一个pipline中会维护很多handler,保存一个handler list,这里涉及到一个设计模式:职责链设计模式。
手绘模型图
相关文章
- NETs相关基因构建预后模型干湿结合发12分+SCI
- 用 Minio 快速启动 Velero 实现 Kubernetes资源备份
- MySQL(1) - 用户管理及root密码修改
- Jmeter系列(40)- 详解 Jmeter 图形化 HTML 压测报告
- Jmeter系列(39)- 详解 Jmeter CLI 模式
- Jmeter系列(38)- Jmeter 分布式测试
- Jmeter系列(37)- 跨平台运行 Jmeter,CSV 文件路径设置
- Jenkins操作手册 - 巨详细,一篇足矣!
- 【JVM实战系列】「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康
- 【Spring专题】「开发指南」夯实实战基础功底之解读logback-spring.xml文件的详解实现
- 精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)
- 【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机制
- 精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
- 深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」
- 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
- 【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
- 【秒杀购物商城业务服务】「分布式架构服务」盘点中间件服务的高可用模式及集群技术的方案分析
- 作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析
- 【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系
- Kafka技术专题之「性能调优篇」消息队列服务端出现内存溢出OOM以及相关性能调优实战分析