高并发I/O

2019-02-20  本文已影响0人  金泽祺

准备知识

用户态与内核态

I/O的两个阶段

五种网络I/O模型

模型 描述
阻塞式I/O 等待数据与拷贝数据都阻塞
非阻塞式I/O 轮询数据是否就绪
I/O多路复用 事件驱动:select, poll, epoll
信号驱动I/O 使用信号处理函数来处理数据的拷贝
异步I/O 等待数据与拷贝数据都不阻塞

I/O多路复用

select

检查的文件描述符列表作为参数传入,数量限制在1024

poll

去除了数量限制,但是依然要遍历所有传入的文件描述符,并且从用户态拷贝到内核态

epoll

数据结构

流程


Reactor模式

简单模式

单Reactor线程模式

多Reactor线程模式

Netty实现多Reactor线程模式

Reactor Netty
Initiation Dispatcher NioEventLoop
Synchronous Event Demultiplexer Selector
Event Handler ChannelHandler
mainReactor bossGroup中的某个NioEventLoop
subReactor workerGroup中的某个NioEventLoop
acceptor ServerBootstrapAcceptor
Thread pool 用户自定义的线程池

Proactor模式(貌似有两种方案?)

上一篇下一篇

猜你喜欢

热点阅读