Bootstrap

设计模式 - 2. Reactor VS Proactor (通过Web服务器的多种实现方案来比较Reactor与Proactor)

TODO

一、概述

对于并发应用,同步多线程是目前比较流行的机制。但是线程会消耗额外的资源,并且多线程编程需要对同步机制有很深的理解,因此目前越来越多的操作系统都提供了异步并发机制,保留了并发的好处,同时还消除了线程的资源损耗以及多线程编程的复杂性。
Proactor模式就是为了描述如何有效利用操作系统的异步机制,而被提出的一种异步并发模式。使用该模式,当应用执行调用异步操作时,由操作系统代表应用来执行操作,无需应用持有相关的线程。这种模式简化了并发变成,提高了性能,并且只需更少的线程数。

二、通过典型的web服务器来比较Reactor与Proactor

典型的Web服务器结构

webserver1

典型Web服务器的工作工程如下:

  1. 浏览器发送HTTP GET请求到Web服务器;
  2. Web服务器收到请求后进行解析和验证;
  3. Web服务器处理请求,上图所示的是读取文件服务器;
  4. Web服务器将处理结果(图中所示是一个文件)发送给浏览器

要开发高性能的Web服务器,需要解决如下问题:

  • 并发:服务器必须能同时处理多个客户端的请求
  • 效率:服务器必须尽量减少延时,增大吞吐量,并尽量减少CPU的- 消耗
  • 易编码:服务器的设计应该使用简单而高效的并发策略

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;