1.服务器模型
1.1 c/s模型
服务器编程框架
模块 | 单个服务器程序 | 服务器机群 |
IO处理单元 | 处理客户连接,读写网络数据 | 作为接入服务器实现负载均衡 |
逻辑处理单元 | 业务进程或线程 | 逻辑服务器 |
网络存储单元 | 本地数据库、文件 | 数据库服务器 |
请求队列 | 各单元之间的通信 | 各服务器之间永久的TCP连接 |
2.IO模型
IO模型 | 读写操作和阻塞阶段 |
阻塞IO | 程序阻塞于读写函数 |
IO复用 | 程序阻塞于IO复用系统调用,可同时监听多个IO事件 |
SIGIO信号IO | 信号触发读写就绪事件,用户程序执行读写操作 |
异步IO | 内核执行读写操作并触发读写完成事件 |
3.事件处理模式
3.1 Reactor模式
epoll_wait实现Reactor模式
1.主线程往内核事件表中注册socket读就绪事件
2.调用epoo_wait等待读就绪事件
3.读事件触发,主线程通知工作线程处理客户请求,往内核事件表中注册写就绪事件
4.主线程调用epoll_wait等待socket可写
5.写事件触发,主线程通知工作线程写入数据
3.2 Proactor模式
1.主线程往内核事件表中注册socket读就绪事件
2.调用epoo_wait等待读就绪事件
3.读事件触发,主线程循环从socket中读取数据直到没有数据可读,将读到数据封装成对象插入请求队列
4.工作线程处理数据对象,注册写就绪事件
5.主线程调用epoll_wait等待socket可写
6.写事件触发,主线程往socket上写入数据
原文:https://www.cnblogs.com/zzljx/p/14422314.html