You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by fi...@apache.org on 2007/04/25 04:10:50 UTC

svn commit: r532168 - /httpd/sandbox/amsterdam/ROADMAP

Author: fielding
Date: Tue Apr 24 19:10:49 2007
New Revision: 532168

URL: http://svn.apache.org/viewvc?view=rev&rev=532168
Log:
server architecture notes

Modified:
    httpd/sandbox/amsterdam/ROADMAP

Modified: httpd/sandbox/amsterdam/ROADMAP
URL: http://svn.apache.org/viewvc/httpd/sandbox/amsterdam/ROADMAP?view=diff&rev=532168&r1=532167&r2=532168
==============================================================================
--- httpd/sandbox/amsterdam/ROADMAP (original)
+++ httpd/sandbox/amsterdam/ROADMAP Tue Apr 24 19:10:49 2007
@@ -4,6 +4,21 @@
 
     * Let's get one or two tables together at 10am Tuesday, May 1
 
+Background reading on server architecture/performance:
+
+   * Dan Kegel:   <http://www.kegel.com/c10k.html>
+   * Tim Brecht:  
+<http://bcr2.uwaterloo.ca/~brecht/papers/getpaper.php?file=eurosys-2007.pdf>
+<http://bcr2.uwaterloo.ca/~brecht/papers/getpaper.php?file=hotweb-2006.pdf>
+<http://bcr2.uwaterloo.ca/~brecht/papers/getpaper.php?file=cascon-2004.pdf>
+
+   * Matt Welsh:  <http://www.eecs.harvard.edu/~mdw/papers/events.pdf>
+                  <http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf>
+                  <http://www.eecs.harvard.edu/~mdw/papers/mdw-phdthesis.pdf>
+   * Jeff Darcy:  <http://pl.atyp.us/content/tech/servers.html>
+   * Others:      <http://bulk.fefe.de/scalability/>
+                  <http://www.cs.princeton.edu/nsg/papers/latency_usenix_06/>
+
 ROADMAP DISCUSSION POINTS:
 
 Configuration
@@ -57,11 +72,25 @@
       and thread models.  A reasonable goal is to have one thread model
       that runs on both unix and winnt.
 
+      - Decouple low-level I/O (disk and network and pipes) from concurrency
+        models (multi-process, multi-threaded, event-driven async) and also
+        from our protocol handlers. [AaronB]
+
     * Provide a generic IPC or Scoreboard mechanism with an easy to use API
       for modules and the core.
 
     * Break the 1:1 mapping of a worker to a single request.
 
+    * Consider having three types of worker:
+        1) triage workers to accept the connection, load check, read
+           the request headers, and construct an internal request
+           object + fd for request body;
+        2) handler workers that each handles a defined prefix of URIs,
+           tests access, auth, performs the action, and constructs a
+           response object and brigade;
+        3) delivery workers that translate the response to a message
+           on the network connection and then return the connection to
+           the event loop.
 
 Worker Front-end
 
@@ -74,6 +103,9 @@
 
     * Async IO Core, including a generic Event Loop, allowing modules and
       protocols to register new events and when to be notified.
+
+      - Consider using libevent for the event loop abstraction. [AaronB]
+        <http://www.monkey.org/~provos/libevent/>
 
     * Use Serf (and its Bucket system) as the starting point for making
       filters, buckets and brigades work with the Async Core.