I'm a bit of a J2EE newbie but have worked with a couple of middleware technologies over the years (primarily Tuxedo, but a couple of others as well). From everything I've read it seems that the current generation of clustering J2EE servers only support symmetrical nodes (ie. each node in the cluster is identical to all others). Is this true, or have I missed something?
If so it seems to be a bit of an architectural limitation (I realise clustering is outside the spec, but even so) - in the past I've made use of targeted deployment of server side processes to specific machines, in order to make the most of the available hardware ie. CPU intensive processes go on the boxes with the most horsepower, I/O intensive processes go on the boxes with the fastest I/O devices and network intensive processes go on the boxes with the fattest pipes etc.
Unless I've missed something basic (which is entirely possible!) it seems that you can't do this in the J2EE world (at least not yet).
Thanks in advance to anyone willing to enlighten me!
You can do it, although EJB may not be the perfect choice in this scenario. Many App servers don't support automatic clustering of EJBs to specific nodes. That doesn't mean you can't cluster them yourself - but that takes some work.
However, a more appropriate solution is to use JMS. You simply set up queues for specific types or requests, and run message handling components on the specific nodes you want them.
I've used this solution to take graphical work off the main server cluster and move it down to two boxes (say, with stronger graphic hardware) and it worked fine. Does this solution satisfy your scenario?
Yeah - now that you've pointed it out I can see how JMS would make this kind of thing possible. I guess the trade off is in deployment complexity - instead of having one cluster, you end up with multiple clusters, each with a specific group of process types (I/O bound, CPU bound, network bound, etc etc).
As for usage scenarios, I don't really have one at the moment (it was more of an idle question). If the past is anything to go by, I'm sure I'll be faced with this requirement at some point in the future though.
Any app server with decent clustering allows you to setup replication groups. I believe this will allow you to do what you are asking.
I'll have to check out replication groups - sounds exactly like what I was after. I guess this functionality is vendor specific?