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.