高效并发服务器模型
2012-11-30 16:28
232 查看
1、单线程/阻塞/同步模型
适用范围:单一连接
缺点:多连接时相互影响,一个阻塞,别的也得不到响应
2、多进程/阻塞/同步模型
适用范围:连接数较少,且使用的资源较多,比如文件操作
缺点:系统进程数有上限,不适用大量并发连接,且进程间切换开销较大
3、多线程/阻塞/同步模型
适用范围:连接数较少,且使用系统资源不多,可多个线程共享
缺点:系统线程数有上限,不适用大量并发连接,且线程间的需要保护
4、单线程/非阻塞/同步模型
特征:强行逐个连接轮询处理,没有探测
适用范围:连接数较少
缺点:需要处理数据的拼接,且凭空占用资源,CPU高
5、select事件驱动模型(单线程/阻塞/同步模型/先探测后处理/挂起式阻塞)
特征:事件驱动,先集中探测事件,再对有事件的连接逐一响应
适用范围:连接数中
缺点:探测效率不高,且探测和处理处于同一线程,处理时间较长时容易影响探测;
6、平台相关的驱事件驱动(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)
特征:使用特殊平台自身的接口,linux为poll、epoll,BSD为kqueue、solaris为/dev/poll、windows为iocp;
适用范围:大量并发连接
优点:使用消息队列或信号等方式将事件探测和响应分离在不同线程,从而确保事件探测不会被响应影响;
探测和响应的线程都使用了挂起机制,从而有效防止了线程空转,只占用很少的资源;
缺点:难于跨平台
7、开源跨平台事件驱动模型(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)
适用范围:大量并发连接
优点:跨平台
缺点:需要第三方开源库来移植和封装平台
开源例子:libev、libevent、ACE、asio
8、事件驱动模型的抽象
最大限度地利用网络本身的并发能力;
本地资源不能成为网络并发瓶径;
多个连接之间不能相互阻塞;
事件响应不能阻塞事件探测;
线程无任务时不能空转;
9、网络I/O术语
单线程/多线程/多进程
阻塞/挂起式阻塞/超时阻塞/非阻塞/空转/轮询
同步/异步/消息队列/信号
先探测/后响应/集中探测/线程分离
并发连接数
开源/跨平台
适用范围:单一连接
缺点:多连接时相互影响,一个阻塞,别的也得不到响应
2、多进程/阻塞/同步模型
适用范围:连接数较少,且使用的资源较多,比如文件操作
缺点:系统进程数有上限,不适用大量并发连接,且进程间切换开销较大
3、多线程/阻塞/同步模型
适用范围:连接数较少,且使用系统资源不多,可多个线程共享
缺点:系统线程数有上限,不适用大量并发连接,且线程间的需要保护
4、单线程/非阻塞/同步模型
特征:强行逐个连接轮询处理,没有探测
适用范围:连接数较少
缺点:需要处理数据的拼接,且凭空占用资源,CPU高
5、select事件驱动模型(单线程/阻塞/同步模型/先探测后处理/挂起式阻塞)
特征:事件驱动,先集中探测事件,再对有事件的连接逐一响应
适用范围:连接数中
缺点:探测效率不高,且探测和处理处于同一线程,处理时间较长时容易影响探测;
6、平台相关的驱事件驱动(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)
特征:使用特殊平台自身的接口,linux为poll、epoll,BSD为kqueue、solaris为/dev/poll、windows为iocp;
适用范围:大量并发连接
优点:使用消息队列或信号等方式将事件探测和响应分离在不同线程,从而确保事件探测不会被响应影响;
探测和响应的线程都使用了挂起机制,从而有效防止了线程空转,只占用很少的资源;
缺点:难于跨平台
7、开源跨平台事件驱动模型(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)
适用范围:大量并发连接
优点:跨平台
缺点:需要第三方开源库来移植和封装平台
开源例子:libev、libevent、ACE、asio
8、事件驱动模型的抽象
最大限度地利用网络本身的并发能力;
本地资源不能成为网络并发瓶径;
多个连接之间不能相互阻塞;
事件响应不能阻塞事件探测;
线程无任务时不能空转;
9、网络I/O术语
单线程/多线程/多进程
阻塞/挂起式阻塞/超时阻塞/非阻塞/空转/轮询
同步/异步/消息队列/信号
先探测/后响应/集中探测/线程分离
并发连接数
开源/跨平台
相关文章推荐
- 高效并发服务器模型
- Java 内存模型 与 高效并发
- 并发服务器模型(收藏)
- Linux服务器--服务器模型,I/O模型,两种高效的事件处理模式
- TCP并发服务器模型(二)
- 这个模型用来测试并发服务器,是否会产生僵尸进程
- C++ 网络编程 阻塞I/O模型并发回显服务器
- 服务器两种高效的并发模式
- C++ linux epoll并发服务器模型初探
- C#SocketAsyncEventArgs实现高效能多并发TCPSocket通信 (服务器实现)
- 常见多线程并发服务器编程模型
- Ruby Web 服务器的并发模型与性能
- Linux网络编程并发服务器模型
- 搭建高并发服务器--高效I/O复用(epoll)
- Select I/O模型来实现一个并发处理多个客户端的TCP服务器 <转>
- 网络服务器的几种并发服务模型
- 高并发服务器设计之多路复用模型
- Linux下高效并发服务器的常用方法和案例(转)
- (五十三)高并发服务器——多路IO转接机制Select模型
- LINUX环境并发服务器的三种实现模型