You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Olivier Collard <ol...@yahoo.com> on 2007/08/09 19:38:11 UTC

Load-balancing between service instances

Hi,
I'm wondering how I could implement load-balancing with Tuscany. Basically, I would need the ability to configure component X to talk to multiple instances of another component Y.
Ideally, this would be like 'wiring' a reference to multiple instances of component Y, running either locally or remotely.
Would I need to write some kind of extension for this?
Thanks,
O.




      ____________________________________________________________________________________
Luggage? GPS? Comic books? 
Check out fitting gifts for grads at Yahoo! Search
http://search.yahoo.com/search?fr=oni_on_mail&p=graduation+gifts&cs=bz

Re: Load-balancing between service instances

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Simon Laws wrote:
> On 8/9/07, Maciek Chociej <ma...@phiscape.com> wrote:
>   
>> Hello,
>>
>> Recently I've been investigating the same thing. I'm trying to rebuild
>> our in-house
>> SOA platform with the use of Tuscany. What I am lacking is clustering,
>> dynamic
>> lookup and load balancing of service providers. I don't think I need
>> that for
>> local wiring, so I just focused on providing those over the ws binding.
>> From what
>> I see right now it is possible to do that rather gracefully in a number
>> of ways.
>> For example on the remote side, you can use your web container's
>> clustering
>> scheme. For example Tomcat clusters might balance request to the axis
>> servlets
>> responsible for the ws.binded services, the downside of this is that the
>> balancing
>> gets out of Tuscany's control. On the other hand, on the local side
>> (which I find
>> much nicer) I've tampered a little with the ws axis binding and it
>> should be easily
>> possible to inject a UDDI or similar ws lookup into the
>> ReferenceBindingProvider
>> or to build a 'lookup' version extending the axis one.
>>
>> I'm rather new to Tuscany so any comments appreciated.
>> Cheers
>>
>> Maciek
>>
>> Olivier Collard wrote:
>>     
>>> Hi,
>>> I'm wondering how I could implement load-balancing with Tuscany.
>>>       
>> Basically, I would need the ability to configure component X to talk to
>> multiple instances of another component Y.
>>     
>>> Ideally, this would be like 'wiring' a reference to multiple instances
>>>       
>> of component Y, running either locally or remotely.
>>     
>>> Would I need to write some kind of extension for this?
>>> Thanks,
>>> O.
>>>
>>>
>>>
>>>
>>>
>>>       
>> ____________________________________________________________________________________
>>     
>>> Luggage? GPS? Comic books?
>>> Check out fitting gifts for grads at Yahoo! Search
>>> http://search.yahoo.com/search?fr=oni_on_mail&p=graduation+gifts&cs=bz
>>>
>>>       
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>>
>> Hi
>>     
>
> This is an interesting thread. The easy answer is that you are both right
> that we haven't addressed load balancing or clustering directly just yet.
>
> We are working on a first step at the moment which might make some of this
> easier. That is the ability to have an SCA domain run across multiple nodes
> (JVMs). We have had a very simple version of this for a while and we are
> bringing it up again now on top of the new wiring mechanism and new SCA
> binding.  The basic idea here is that you have parts of the domain, i.e.
> component services,  running on separate nodes and Tuscany is able to locate
> which node is running which service.
>
> So this could be considered load balancing in that it allows you to
> distribute your application across a number of nodes but it's not load
> balancing in the sense that Olivier mentioned. I.e. spreading the load on a
> single component/service.
>
> I think Maciek is on the right track though. I like the ideas about having a
> new binding that is able to provide this feature within a Tuscany domain
> with reference to some registry of services. It would certainly be
> interesting to do this with a binding based on the web services binding
> with, as suggested, suitable logic to look up target services and pick one
> from the list of returned endpoints.
>
> Running inside a clustered container should also be a possibility. A you say
> we would expect the clustering to be outside Tuscany's control in this case
> and we would have to engineer for the registry of service endpoints to have
> the address of the head node rather than the individual servers where
> Tuscany is running components in the cluster. We would also need to look out
> for session replication issues.
>
> Either of you interested in doing some work on this?
>
> Regards
>
> Simon
>
>   

So I guess there's at least two options:
[a] leverage the Tomcat clustering / load-balancing capabilities (make 
sure that Tuscany works OK in that environment)
[b] write a binding extension, or tamper with an existing one :) to add 
load-balancing in Tuscany

If any of you are interested in doing some work on this, here are a few 
pointers:

- a simple distributed sample, which could be used as a starting point 
to demonstrate some load-balancing 
http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/calculator-distributed/

- the Tuscany SCA default binding, which uses a simple registry shared 
on the network to record endpoints of services as they start, and to 
resolve these endpoints later

the binding extension
http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/binding-sca-axis2/

the distributed registry
http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/distributed
http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/distributed-impl/

We're just at the beginning of implementing this so it's the right time 
to jump in if you want to add some load-balancing :)

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org


Re: Load-balancing between service instances

Posted by Simon Laws <si...@googlemail.com>.
On 8/9/07, Maciek Chociej <ma...@phiscape.com> wrote:
>
> Hello,
>
> Recently I've been investigating the same thing. I'm trying to rebuild
> our in-house
> SOA platform with the use of Tuscany. What I am lacking is clustering,
> dynamic
> lookup and load balancing of service providers. I don't think I need
> that for
> local wiring, so I just focused on providing those over the ws binding.
> From what
> I see right now it is possible to do that rather gracefully in a number
> of ways.
> For example on the remote side, you can use your web container's
> clustering
> scheme. For example Tomcat clusters might balance request to the axis
> servlets
> responsible for the ws.binded services, the downside of this is that the
> balancing
> gets out of Tuscany's control. On the other hand, on the local side
> (which I find
> much nicer) I've tampered a little with the ws axis binding and it
> should be easily
> possible to inject a UDDI or similar ws lookup into the
> ReferenceBindingProvider
> or to build a 'lookup' version extending the axis one.
>
> I'm rather new to Tuscany so any comments appreciated.
> Cheers
>
> Maciek
>
> Olivier Collard wrote:
> > Hi,
> > I'm wondering how I could implement load-balancing with Tuscany.
> Basically, I would need the ability to configure component X to talk to
> multiple instances of another component Y.
> > Ideally, this would be like 'wiring' a reference to multiple instances
> of component Y, running either locally or remotely.
> > Would I need to write some kind of extension for this?
> > Thanks,
> > O.
> >
> >
> >
> >
> >
> ____________________________________________________________________________________
> > Luggage? GPS? Comic books?
> > Check out fitting gifts for grads at Yahoo! Search
> > http://search.yahoo.com/search?fr=oni_on_mail&p=graduation+gifts&cs=bz
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
> Hi

This is an interesting thread. The easy answer is that you are both right
that we haven't addressed load balancing or clustering directly just yet.

We are working on a first step at the moment which might make some of this
easier. That is the ability to have an SCA domain run across multiple nodes
(JVMs). We have had a very simple version of this for a while and we are
bringing it up again now on top of the new wiring mechanism and new SCA
binding.  The basic idea here is that you have parts of the domain, i.e.
component services,  running on separate nodes and Tuscany is able to locate
which node is running which service.

So this could be considered load balancing in that it allows you to
distribute your application across a number of nodes but it's not load
balancing in the sense that Olivier mentioned. I.e. spreading the load on a
single component/service.

I think Maciek is on the right track though. I like the ideas about having a
new binding that is able to provide this feature within a Tuscany domain
with reference to some registry of services. It would certainly be
interesting to do this with a binding based on the web services binding
with, as suggested, suitable logic to look up target services and pick one
from the list of returned endpoints.

Running inside a clustered container should also be a possibility. A you say
we would expect the clustering to be outside Tuscany's control in this case
and we would have to engineer for the registry of service endpoints to have
the address of the head node rather than the individual servers where
Tuscany is running components in the cluster. We would also need to look out
for session replication issues.

Either of you interested in doing some work on this?

Regards

Simon

Re: Load-balancing between service instances

Posted by Maciek Chociej <ma...@phiscape.com>.
Hello,

Recently I've been investigating the same thing. I'm trying to rebuild 
our in-house
SOA platform with the use of Tuscany. What I am lacking is clustering, 
dynamic
lookup and load balancing of service providers. I don't think I need 
that for
local wiring, so I just focused on providing those over the ws binding. 
 From what
I see right now it is possible to do that rather gracefully in a number 
of ways.
For example on the remote side, you can use your web container's clustering
scheme. For example Tomcat clusters might balance request to the axis 
servlets
responsible for the ws.binded services, the downside of this is that the 
balancing
gets out of Tuscany's control. On the other hand, on the local side 
(which I find
much nicer) I've tampered a little with the ws axis binding and it 
should be easily
possible to inject a UDDI or similar ws lookup into the 
ReferenceBindingProvider
or to build a 'lookup' version extending the axis one.

I'm rather new to Tuscany so any comments appreciated.
Cheers

Maciek

Olivier Collard wrote:
> Hi,
> I'm wondering how I could implement load-balancing with Tuscany. Basically, I would need the ability to configure component X to talk to multiple instances of another component Y.
> Ideally, this would be like 'wiring' a reference to multiple instances of component Y, running either locally or remotely.
> Would I need to write some kind of extension for this?
> Thanks,
> O.
>
>
>
>
>       ____________________________________________________________________________________
> Luggage? GPS? Comic books? 
> Check out fitting gifts for grads at Yahoo! Search
> http://search.yahoo.com/search?fr=oni_on_mail&p=graduation+gifts&cs=bz
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org