博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程与并发服务器设计(23-1)
阅读量:6610 次
发布时间:2019-06-24

本文共 1381 字,大约阅读时间需要 4 分钟。

hot3.png

常见并发服务器方案

1、循环式/迭代式( iterative )服务器

    无法充分利用多核CPU,不适合执行时间较长的服务
2、并发式(concurrent)服务器
one connection per process/one connection per thread
    适合执行时间比较长的服务
3、prefork or pre threaded(UNP2e 第27章)
4、反应式( reactive )服务器 (reactor模式)
    并发处理多个请求,实际上是在一个线程中完成。无法充分利用多核CPU
不适合执行时间比较长的服务,所以为了让客户感觉是在“并发”处理而不是“循环”处理,每个请求必须在相对较短时间内执行。
5、reactor + thread per request(过渡方案)
6、reactor + worker thread(过渡方案)

7、reactor + thread pool(能适应密集计算)

8、multiple reactors(能适应更大的突发I/O)
    reactors in threads(one loop per thread)
    reactors in processes
9、multiple reactors + thread pool(one loop per thread + threadpool)(突发I/O与密集计算)
10、proactor服务器(proactor模式,基于异步I/O)
    理论上proactor比reactor效率要高一些
异步I/O能够让I/O操作与计算重叠。充分利用DMA特性。
Linux异步IO
glibc aio(aio_*),有bug
kernel native aio(io_*),也不完美。目前仅支持 O_DIRECT 方式来对磁盘读写,跳过系统缓存。要自已实现缓存,难度不小。
boost asio实现的proactor,实际上不是真正意义上的异步I/O,底层是用epoll来实现的,模拟异步I/O的。


iterative服务器

    iterative 只能使用短连接,只有一个 线程,如果使用长连接,那么其他请求就无法得到响应!

处理完一个连接,然后关闭连接。

    这种服务器有很多缺陷 : 

  •     单线程,不能充分利用多核cpu

  •    因为是短链接,有可能上一次断开的连接就是本次的连接,这样效率明显下降

  •   不能并发处理


concurrent服务器

    这种服务器,因为是多线程或者多进程的,所以能并发处理请求。

注:如果是多进程,记得关闭监听套接字,因为子进程会继承套接字。

    如果是多线程,就不用关闭监听套接字了,因为线程没有继承打开的套接字。


prefork服务器

    这种服务器由于多个进程在accept等待中,当一个请求到达时,都会被触发,但是只有一个成功返回。这是一种“惊群”现象。


basic reactor (4)

并发处理,但是是单线程的。


reactor+threadpool(7 第5中的改正)

一个IO线程,多个compute线程,适用于计算密集型


multiple reactors

roll robin


multiple reactors+threadpool

 

转载于:https://my.oschina.net/zhangjie830621/blog/355632

你可能感兴趣的文章
Spring mvc 注解@ResponseBody 返回内容编码问题
查看>>
一次线上OOM故障排查经过
查看>>
JAVA中的HashMap,LinkList,ArrayList添加,删除元素的速度验证
查看>>
配置CITRIX XML 服务与IIS 共享端口
查看>>
一篇关于PTP和www日志删除的方法
查看>>
Factory Method(二)
查看>>
一只超级愤怒的租房者对黑中介(鹏基伟业的控诉)
查看>>
git 服务器安装
查看>>
对前端web js,css文件进行压缩混淆
查看>>
红帽6.5的安装
查看>>
TRIDENT - A HIGH-LEVEL ABSTRACTION FOR REALTIME COMPUTATION
查看>>
分享一个jquery easyui拼接table的例子
查看>>
mysql 新建表
查看>>
计算数值区间内某个数字出现的次数(使用函数)
查看>>
浅谈DBA工作
查看>>
时间向前或向后多少天
查看>>
tornado(三)-----template
查看>>
我的友情链接
查看>>
智慧停车诱导技术方案
查看>>
UTF-8编码中BOM的检测与删除
查看>>