The following module was proposed for inclusion in the Module List:
modid: Apache::AppCluster
DSLIP: bdpOg
description: Client/Srvr module for Apache app clustering
userid: MAUNDER (Mark D. Maunder)
chapterid: 16 (Server_and_Daemon_Utilities)
communities:
mod_perl mailing list
similar:
SOAP::Lite
rationale:
These modules (client/server) allow one to use apache and mod_perl
as a clustered/distrubited app server spawning remote
processes/requests in paralel. It allows you to set up a client
object locally and then register 'requests' with it. Each request is
a function call (and data structure) that will be sent to a remote
AppCluster server via a POST (using freeze/thaw for encoding) and
will be evaled on that server. The results are returned, decoded and
are accessable for each 'request' that was registered with the
object using an hash index. The client module can be used under
mod_perl or as standalone. The server component must run under
mod_perl as a handler for a <Location> and wont interfere with any
other handlers.
The server receives a method name in a package namespace e.g.
Apache::MainHandler::do_something() and a scalar reference
containing a data structure. The server then eval's the code and
handles any errors in the called module gracefully returning the
resulting data or error code to the client. All modules that will be
called by the server are registered in httpd.conf and are preloaded
by the server for performance.
The client uses non-blocking sockets to send off all requests at
the same time (in rapid succession at least) so all processing on
remote 'app servers' happens simultaneously. Results are then
collected simultaneously from all sockets as they are received
(loops through non-blocking sockets collecting data until all is
received or a timeout occurs). When registering requests you specify
the remote server and port for each request so you can have 1000
remote methods being called on 100 seperate app servers all
processing at the same time and being consolidated on a single front
end server within a single object.
This was inspired by SOAP. Every implementation of SOAP I've come
accross uses blocking sockets. So this allows you to do remote
method calls on an app server in paralel while still having a single
thread of execution in the calling process. You can also pass and
receive Perl data structures of arbritary complexity to and from the
remote server since freeze/thaw is used for encoding.
enteredby: MAUNDER (Mark D. Maunder)
enteredon: Fri Jan 4 23:37:35 2002 GMT
The resulting entry would be:
Apache::
::AppCluster bdpOg Client/Srvr module for Apache app clustering MAUNDER
Thanks for registering,
The Pause Team
PS: The following links are only valid for module list maintainers:
Registration form with editing capabilities:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=f0000000_b282a37e17268ae8&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=f0000000_b282a37e17268ae8&SUBMIT_pause99_add_mod_insertit=1