views:

96

answers:

3

When looking at SOA (Service Oriented Architectures) the main problems seems to be distributing a services load across multiple hosts and then managing these hosts (taking hosts off line or adding new hosts)

When one service talks to another it should not need to know any host information (at the application level). Rather the SOA Environment should be able to route a service request to a specific host based on the hosts current load characteristics (so it must know all hots a service is running on and their relative load).

Are there any existing open protocols for service to report their existence and load to an SOA Environment.

A: 

SOA is a set of high-level software architecture guidelines. It is not a technical standard or recommendation and it has nothing to do with technical implementation details, like load balancing.

Load balancing is based on addressing, which is dependent on the service access technology. Systems built in "SOA-way" may be using different service access technology, like SOAP (over HTTP, JMS, etc.), REST, asynchronous XML messages over JMS, etc.

With SOAP, the service consumer may look up a UDDI registry to locate the service provider. Some of the latest UDDI registry software provide simple (e.g. round-robin) load balancing. Another SOAP idea is using WS-Addressing, but it is not really meant for load balancing.

I think currently the best place for load-balancing is the underlying network transport layer. With HTTP transport you can choose hardware or software (e.g. Apache HTTPD modules) load balancers that can adapt the distribution based on response times and time-outs. With JMS transport, the most popular JMS servers provide some form of load balancing. Other protocols - like CORBA or Rendezvous - usually require a custom solution.

You can also utilize an ESB software, e.g. Oracle Service Bus or TIBCO AMX Service Bus. With an ESB you can easily create a load-balancing proxy for your service instances. The proxy may be enhanced with some logic, like look-up a database table for guidance.

As you can see, there is no one-size-fits-all solution for service load balancing. The optimal solution will be based on the actual implementation architecture and vendors' recommendations.

Miklos
Can the down-voter please give a reason? I'm really interested in it!
Miklos
@Miklos: It was not me. But I think its easy to see in that you did not answer the question. Non of your answer adds anything to people who know what the SOA tag means (but it does provide very general/generic info for developers that are new to the field). I already know about the proprietary solutions in the fields I am looking for free alternatives.
Martin York
A: 

After reading a lot the concept I was actually looking for was the Enterprise Service Bus ESP.

Though it does not explicitly define an explicit protocol it defines an architectural style that allows the solving of the problems I stated above.

Martin York
A: 

Membrane Router has loadbalancing for Web Services and also failover support. It is not a protocol but it is an open source project. You can test a router or loadbalancer with the Montor GUI application and then deploy it to the router which is a slim HTTP reverse proxy that knows about the SOAP protocol.

alt text

baranco