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
