Graham -

At Wed, 27 Feb 2002 06:36:45 +0200,
Graham Leggett wrote:
> 
> [1  <text/plain; us-ascii (7bit)>]
> Joseph Wayne Norton wrote:
> 
> > In conjunction with mod_rewrite as url filter, I would like to be able
> > to use mod_accel as a proxy for only the http request portion of a
> > client request and allow for the http response portion to be served
> > directly from the backend to the client.  This would be useful in
> > situations where the response does not (or should not) have to be
> > cached by the mod_accel cache.  However, I think this type of
> > tcp-handoff cannot be performed soley by an application process such
> > as apache.  Have you a similiar requirement or experience?
> 
> The request and response come after the other on the same connection, so
> what you're asking to do is impossible. What exactly are you trying to
> achieve?
> 
> If you don't want a response to be cached, use the Pragma: no-cache and
> Cache-Control: headers correctly.
> 

Yes, I understand that what I'm asking to do is impossible with the
same connection.  I'm interested in learning how to build a better web
server cluster to support dynamic content (generated by backend
servers).  I have run across the following paper ...

 http://www.crpc.rice.edu/softlib/scalableRD.html#papers

entitled "Scalable Content-aware Request Distribution ...".  I found
it to be quite interesting.  It presents a scalable method for
distributing the operaton of tcp connection and handoff among back-end
nodes rather than relying entirely on a centralized node.  It also
helps solves an issue of trying to keep a single, web client's
"session" to being served by a particular back-end node (this helps
with cacheing).

The paper discusses about having a "Distributor" component and a
"Server" component.  I have simply been thinking about how this
"Distributor" component could be implemented by using apache's
mod_rewrite, mod_proxy, and mod_cache modules.  The "Server" component
would be a backend server that is proxied by mod_proxy (or mod_accel).

For dynamic content that has been cached or can be cached, the
"Distributor" component would simply send the response back to the
client (as mod_proxy does now after talking with the backend).  For
dynamic content that cannot be cached or doesn't need to be cached,
the "Distributor" would implement a form of TCP handoff that would
allow the backend to serve the response directly to the client.  This
later step probably cannot be done without some additional
kernel-level module.

Anyway, my questions are just ideas right now ... nothing more.


> > > mod_proxy is very ancient module and it's hard to maintain it.
> > >
> > 
> > Is it possible to integrate apache 2.0's mod_cache with mod_accel
> > and/or add mod_accel's features to mod_proxy?
> 
> Mod_proxy is no longer ancient nor hard to maintain, and as far as I am
> aware the new mod_proxy does almost everything mod_accel does - if it
> doesn't, tell me what's broken and I'll try to fix it.
> 

I haven't spent any time examining the source (or trying to extend) of
mod_proxy or mod_accel so I am not able to judge either module.  

The 2 main points that I picked up from Igor's mail that I'm not sure
if mod_proxy supports or not:

 a. It frees backend as soon as possible. mod_proxy can keep busy
   backend with slow client, i.e, using mod_proxy to accelerate
   backend is not worked with slow clients .

 b. It can use busy locks and limit number of connection to
   backend.

One additional feature that I would like to have with mod_proxy is to
have a way to install error_handler documents for all or individual
backends.  This would allow apache to return a customized error page
for individual backends for cases when the backend is not reachable,
etc.

I hope that I have made myself clear.  Any thoughts or comments?

Regards,

- jn


Reply via email to