1.网络模型
Netty实现了非常经典的多reactor模型其中mainReactor是对应的Boss类,它负责接收客户端新来的连接。它使用了线程池1,有多个Boss对象供绑定多个地址进行监听,这些地址均匀分配到各个Boss上。默认只使用一个Boss对象监听。
subReactor对应Worker类,它负责监听由Boss类accept的socket的读写事件。它使用了另外一个线程池2,有多个Worker类处理这些socket,socket均匀分布在各个worker上。每个worker线程读取消息后,同步调用相应的解码、处理器,待处理完毕后才返回。因此如果业务处理器是非常耗时的非计算密集形操作,如DB操作,worker线程的同步操作严重影响性能。因此这些耗时操作适合放置到线程池3中。
ExcutorHandler类是一个异步处理类,它包含一个线程池3,在Worker读取消息后将消息以任务的形式交给ExecutorHandler,它会把这任务加入到线程池中并令worker线程立即返回。
2.线程模型
在第1点中介绍了网络模型,其它包括3个线程池,其中与Worker相对的线程池2称为IO线程,其余线程均为非IO线程。从socket读消息操作自然是在IO线程中执行,在读取消息时可能将消息放入消息处理线程池中执行,或者在TimeIdlerHandler定时器超时执行的操作,这些操作后如果有数据要写入worker中的socket,这时因此执行这些操作的线程并非是IO线程,Netty会将这些操作以任务的形式加入到worker的任务队列并唤醒worker,让IO线程来执行这些write操作。
3.异步事件驱动模型
每个Channel有一个Pipeline,Pipeline内有两条由Handler构成的处理链,upstream一般处理读事件,downstream一般处理写事件。downstream末端由ChannelSinkt处理。通过ChannelEvent可以获取ChannelFuture立即返回而不需要等待消息处理完毕,向其添加监听器即可在事件处理完毕后执行相关的操作。
相关推荐
Netty核心精讲之Reactor线程模型源码分析 Netty核心精讲之Reactor线程模型源码分析
从源码和网上资料,总结了Mina2与Netty4的区别,主要是分析线程模型的Buffer,还提到了Netty4中引入的Google的优秀的序列化工具ProtoBuf
深入Hotspot源码与Linux内核理解NIO与Netty线程模型 源码讲解分析,非常详细,简单易懂
Netty是什么,Netty为什么速度这么快,线程模型分析.doc
NIO客户端13 3.Netty源码分析16 3.1. 服务端创建16 3.1.1. 服务端启动辅助类ServerBootstrap16 3.1.2. NioServerSocketChannel 的注册21 3.1.3. 新的客户端接入25 3.2. 客户端创建28 3.2.1. 客户端连接辅助类...
大致内容包括: Java内存模型 Java内存交互协议 Java的线程 Netty的并发编程分析 正确的使用锁 volatile的正确使用 CAS指令和原子类 线程安全类 读写锁的应用
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
精通并发与netty视频教程(2018)视频教程 netty视频教程 Java视频教程目录: 1_学习的要义 2_Netty宏观理解 3_Netty课程大纲深度解读 ...91_Netty自定义协议与TCP粘包拆包问题解决之道 92_精通并发与Netty课程总结与展望
第1讲:学习的要义 第2讲:Netty宏观理解 第3讲:Netty课程大纲深度解读 第4讲:项目环境搭建与Gradle配置 ...第91讲:Netty自定义协议与TCP粘包拆包问题解决之道 第92讲:精通并发与Netty课程总结与展望
从这篇文章中,大家可以学习到如下知识:什么是I/O多路复用Reactor三种线程模型Netty线程模型NioEventLoop源码分析JDKepollbug学习I/O多路复用之前,我们先来了解如下几个概念:阻塞I/O:客户端从socket中读取数据或...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...
在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...