一、初探
1、Reactor模型
Reactor是反应堆的意思,Reactor模型,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。Reactor模式也叫Dispatcher模式,即I/O多了复用统一监听事件,收到事件后分发(Dispatch给某进程),是编写高性能网络服务器的必备技术之一,关键两个组成
-
Reactor
Reactor在一个单独的线程中运行,负责监听和分发事件,分发给适当的处理程序来对IO事件做出反应。 它就像公司的电话接线员,它接听来自客户的电话并将线路转移到适当的联系人 -
Handlers
处理程序执行I/O事件要完成的实际事件,类似于客户想要与之交谈的公司中的实际官员。Reactor通过调度适当的处理程序来响应I/O事件,处理程序执行非阻塞操作
类型:单Reactor单线程、单Reactor多线程、主从Reactor多线程
2、主从Reactor多线程模型原理如下:
-
MainReactor负责客户端的连接请求,并将请求转交给SubReactor
-
SubReactor负责相应通道的IO读写请求
-
非IO请求(具体逻辑处理)的任务则会直接写入队列,等待worker threads进行处理
二、Netty简介
- Netty是一个基于NIO的异步事件驱动的网络应用程序框架,用于开发高性能的服务端和客户端,它是发展于主从Reactor多线程模型,但是跟它不同的是,虽然借用了它MainReactor和SubReactor的结构,实际实现上,SubReactor和Worker线程在同一个线程池中
- Netty中的I/O操作是异步的,包括bind、write、connect等操作会简单的返回一个ChannelFuture,调用者并不能立刻获得结果,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果
- 关键组件
- Bootstrap、ServerBootstrap
Bootstrap意思是引导,一个Netty应用通常由