synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ruwan Linton" <ruwan.lin...@gmail.com>
Subject Re: Intelligent Synapse Load Balancer
Date Sun, 15 Jun 2008 01:45:50 GMT
Azeez,

Thanks for the great explanation and I think this is very cool.

Looking forward to your patch which implements this. When you are adding the
session affinity please go through Eric's email to the list which will give
you a good understanding on existing session bind mechanisms as well as what
we can do more.

Thanks,
Ruwan

On Sat, Jun 14, 2008 at 11:52 PM, Afkham Azeez <afkham@gmail.com> wrote:

> Here you go:
>
> Consider,
>                       *<dynamicLoadbalance failover="true"
> algorithm="roundrobin2">
>                         <membershipHandler
>
> class="org.apache.synapse.core.axis2.Axis2LoadBalanceMembershipHandler">
>                             <property name="applicationDomain"
> value="apache.axis2.app.domain"/>
>                         </membershipHandler>
>                     </dynamicLoadbalance
>
> failover=true* indicates that if an error occurs while trying to send to a
> node, we need to failover to another*
> algorithm => the LB algorithm
>
> *We also need to have configurations for session affinity*.
>
> membershipHandler
> ------------------------------
> *Since this is about dynamic load balancing, what concerns us is how the
> members are discovered. This can be plugged in using the implementation of
> the following interface:
>
> public interface LoadBalanceMembershipHandler {
>
>     /**
>      * Initialize this
>      * @param properties The properties specific to this
> LoadBalanceMembershipHandler
>      */
>     void init(Properties properties);
>
>     /**
>      * Get the next application member to whom the message has to be sent
> to
>      *
>      * @return Next application member to whom the message has to be sent
> to
>      */
>     ApplicationMember getNextApplicationMember();
> }
>
> The dynamicLoadBalanceEndpoint will call this interface to get the next
> member to which the message has to be sent to.  So, different
> implementations of this interface may require different properties in order
> to properly initialize the LoadBalanceMembershipHandler. These are provided
> using the property entries (yes, you can have multiple of them). When we
> need to load balance across a domain of Axis2 nodes, we use the underlying
> Tribes based GCF to our advantage, and provide the "applicationDomain"
> property. Thereby we need not implement anything related to group membership
> management. I'm trying to figure out how to properly bridge between the
> Tribes GCF and Synapse.
>
> *
> *
> On Sat, Jun 14, 2008 at 9:23 PM, Ruwan Linton <ruwan.linton@gmail.com>
> wrote:
>
>> Hi Azeez,
>>
>> On Sat, Jun 14, 2008 at 7:36 PM, Afkham Azeez <afkham@gmail.com> wrote:
>>
>>> Hi Paul/Eric,
>>>
>>> I have renamed it to dynamicLoadbalance.
>>
>>
>> This name looks better over the former ;-)
>>
>>
>>>
>>>
>>> Eric, I don't think there will be a clash between your improvements and
>>> mine. I will go through your mail and send you a response.
>>
>>
>> I agree with Azeez, and I think it is yet another session affinity LB that
>> has to be implemented with the endpoint LB scheme.
>>
>>
>>>
>>>
>>> Also as per Paul's feedback and suggestions, I am planning to modify the
>>> configuration as shown below. With such a configuration, we can load balance
>>> across multiple groups. Thanks for the feedback and comments. Please keep
>>> them coming.
>>
>>
>> This seems cool from your words, but just for the clarity can you please
>> explain the config language a bit more. failover and algorithm attributes
>> are obvious, but can we have more than one applicationDomain properties and
>> so on??
>>
>> Thanks,
>> Ruwan
>>
>>
>>>
>>>
>>> <sequence name="main" onError="errorHandler">
>>>         <in>
>>>             <send>
>>>                 <endpoint>
>>>                       *<dynamicLoadbalance failover="true"
>>> algorithm="roundrobin2">
>>>                         <membershipHandler
>>>
>>> class="org.apache.synapse.core.axis2.Axis2LoadBalanceMembershipHandler">
>>>                             <property name="applicationDomain"
>>> value="apache.axis2.app.domain"/>
>>>                         </membershipHandler>
>>>                     </dynamicLoadbalance>*
>>>                 </endpoint>
>>>             </send>
>>>             <drop/>
>>>         </in>
>>>         <out>
>>>             <send/>
>>>         </out>
>>> </sequence>
>>>
>>>
>>> Thanks
>>> Azeez
>>>
>>
>>
>> --
>> Ruwan Linton
>> http://wso2.org - "Oxygenating the Web Services Platform"
>> http://ruwansblog.blogspot.com/
>
>
>
>
> --
> Thanks
> Afkham Azeez
>
> http://afkham.org
> http://www.wso2.org
> GPG Fingerprint: 643F C2AF EB78 F886 40C9 B2A2 4AE2 C887 665E 0760
>



-- 
Ruwan Linton
http://wso2.org - "Oxygenating the Web Services Platform"
http://ruwansblog.blogspot.com/

Mime
View raw message