I am currently investigating possible solutions for flexible load balancing of a streaming application. I will have several nodes running the application that will process and stream content to the users. Documents are spread among any number of servers such that a single machine is responsible for serving requests to the set of documents it hosts. 

Thus, I need some kind of broker that knows on which server the requested document resides and that does a forward to that server. I do NOT want to use some `HttpConnection` from the broker and then include the response of that http call into the response of the original request (this will obviously be a bottleneck). 

So my question is: How can I forward a request to another server after having analyzed the requests data (`POST`/`GET` params, headers or whatever) and determined the destination server? 

Is there already a good load balancer out there that allows me to use some form of hooks to provide the logic of how to determine destination servers (round robin will obviously not work)? 

I want to use Tomcat or something similar to host the streaming application and use only the fundamental servlet stack. Any hints to tools or patterns are appreciated.

Thanks