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 <[EMAIL PROTECTED]>
wrote:
> Hi Azeez,
>
> On Sat, Jun 14, 2008 at 7:36 PM, Afkham Azeez <[EMAIL PROTECTED]> 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