Hi Folks,
I have created a patch[1] against the Synapse trunk. Please review it and
send in your comments.

Thanks
Azeez

1. https://issues.apache.org/jira/browse/SYNAPSE-360


On Sun, Jun 15, 2008 at 7:15 AM, Ruwan Linton <[EMAIL PROTECTED]>
wrote:

> 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 <[EMAIL PROTECTED]> 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 <[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
>>
>
>
>
> --
> 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

Reply via email to