On May 6, 2009, at 2:26 PM, Paul Querna wrote:

Hi,

I think the right way to frame the discussion is, how should the API
optimally be structured -- then change the existing one to be closer
to it, rather than the barrage of incremental changes that seem to be
creating lots of cruft, and ending up with something that still
doesn't do what we want.

I think mod_proxy's decisions on what to proxy to, and where, should
be designed as a series of hooks/providers, specifically:

1) Provider for a list of backends -- This provider does nothing with
balancing, just provides a list of Backend Definition (preferably just
keep it apr_sockaddr_t?) that a Connection is able to use.  -- Backend
status via multicast or other methods go here.
2) Provider that _sorts_ the list of backends.  Input is a list,
output is a new ordered list.  -- Sticky sesions go here, along with
any load based balancing.
3) Provider that given a Backend Definition, returns a connection.
(pools connections, or open new one, whatever)  -- Some of the
proxy_util and massive worker objects go here.


I recall at one of the hackthons this being proposed and I
think it's the right one... It's a clear separation of functions
similar to the changes we've done in authn/authz, moving from
monolithic to more structured and defined concerns.

The incremental changes are just so we can keep 2.2's proxy somewhat
useful and flexible enough to survive until the next revamp.

Reply via email to