高性能WEB服务器和I/O设计模式

高性能web服务器的关键在于如何处理数据I/O,下面是05年的一篇老文章,主要讲解了同步/异步,阻塞/非阻塞的概念以及Reactor/Proactor I/O设计模式。

http://www.artima.com/articles/io_design_patterns.html


概括而言,

1、同步/异步的概念区别在于I/O操作由谁发起,如果由用户进程/线程发起则为同步,如果由OS完成然后通过回调机制通知用户进程,则为异步;

2、阻塞/非阻塞的概念区别在于所调用的系统函数,阻塞模式下,用户进程只能等待,非阻塞模式下,用户进程可以处理其他请求;

3、Reactor是反应器模式,系统通知数据可读,用户进程进行实际的I/O读取操作,是一种同步模式;Proactor则为前置处理器模式,OS全权负责处理I/O读取操作,完成后通知用户进程,用户进程只需要在预设的用户缓存空间中处理数据,是一种异步模式。Proactor的实现依赖于OS实现高效的异步I/O API。在LINUX系统上,Reactor模式实现效果更好。nginx就是用Reactor模式来实现的,进程(单线程),不需要考虑线程同步/context切换的开销,同时可为多核系统fork多个进程/任务,有很高的并发处理能力;

4、使用事件分离器(event demultiplexor)来达到I/O多路复用的目的,用户进程注册感兴趣的事件,事件分离器把来自多个事件源的事件分发给各自的事件处理器,也就是Register/Dispatcher/Handler的模式。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值