Hi Azeez,
 
your explanations sounds reasonable to me. I also like the idea of renaming 
your proposal from intelligentLoadbalance to something like dynamicLoadbalance 
as this describes the way in which the actual members of the LB group are 
discovered. The algorithm is responsible for the actual distribution of the 
load (currently only roundRobin in Synapse, but his can be improved).
 
Regarding some improvents to current loadbalancing I wrote a mail to the list 
some time back early this month:
http://mail-archives.apache.org/mod_mbox/synapse-dev/200806.mbox/[EMAIL 
PROTECTED]
 
It would be interesting for me to hear what you think about this as well, and 
how this may interfere with your planned improvements.I don't think there is 
much overlapping, but I maybe wrong.
 
Regards,
   Eric

________________________________

Von: Afkham Azeez [mailto:[EMAIL PROTECTED]
Gesendet: Fr 13.06.2008 07:28
An: [email protected]
Betreff: Re: Intelligent Synapse Load Balancer


Paul,
I have planned this for a future iteration. This is actually a different load 
balancing algorithm, where if a perceived load of a node is high, we abstain 
from sending further requests to it until it recovers. We should be able to 
plug this into the currently available LB or the new LB I'm writing. I have 
also planned to dynamically fire-up new application nodes when the load 
increases. I guess the term intelligent LB may be misleading and a better term 
would be dynamic LB or HA LB. So indeed, we can abstract away the idea of 
"which systems are available and how much load can they accept" into the LB 
algorithm, which is consistent with the current design and implementation.


 <sequence name="main" onError="errorHandler">
        <in>
            <send>
                <endpoint>
                    <intelligentLoadbalance failover="true" 
algorithm="intelligent"/>
                </endpoint>
            </send>
            <drop/>
        </in>
        <out>
            <send/>
        </out>
</sequence>

Thanks
Azeez


On Fri, Jun 13, 2008 at 3:34 AM, Paul Fremantle <[EMAIL PROTECTED]> wrote:


        Azeez
        
        I guess I'm probably misunderstanding your proposal. I have a feeling
        that what you are proposing supports what I want, but maybe in a
        slightly different syntax and model.
        
        Maybe if I explain what I'm thinking you can map what you are
        proposing onto it and then I'll understand it better.
        
        My understanding of how intelligent load balancers communicate with
        endpoints is that there is usually some form of plugpoint that allows
        the loadbalancer to know which endpoints are available and in what
        proportion to send requests to those endpoints.
        
        So for example, the load balancer may call an API:
        
        EndpointReport getEndpoints("serviceX");
        
        where EndpointReport will be a map of endpoints and a weighting:
        
        {
         "192.168.2.1 <http://192.168.2.1/> " -> 65%
         "192.168.2.2 <http://192.168.2.2/> " -> 35%
        }
        
        Typically underneath this API is some kind of information gathering
        system. There are three usual systems: (1) access to the application
        running on the endpoint (so this corresponds to getting information
        directly from the Axis2 group communications), (2) running an OS-level
        agent on the system that monitors CPU, Memory and IO, or (3) pinging
        systems and seeing how fast they respond.
        
        So I guess I'm thinking that this abstraction should not assume there
        is a group communication system but simply abstract away the idea of
        "which systems are available and how much load can they accept".
        
        Paul
        
         

<<winmail.dat>>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to