This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
Clustering gives you multiple copies of your application across multiple physical machines or LPARs or JVMs or whatever. Done well, the app is "horizontally scalable" meaning you can add more boxes to get more capacity (assuming you have no bottlenecks in another shared resource like a network gateway or database.) The app is also redundant, so if one copy of the app goes down, some kind of load balancer can divert all work to the remaining copies. You may take a performance hit but keep on serving customers. There are also challenges. If you keep any state in memory - including HTTP sessions - you may want to replicate it across all the copies of your app somehow. You have to be able to stop and start, add or remove copies without confusing the load balancer. All great fun!
Any of that shed light on your original question?
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Joined: Feb 13, 2004
Clustering is a group of servers that service the clients, but the client is unaware of presence of multiple servers he feels that he is interacting with a single server. Once you deploy an application in clustered environment, you can increase number of servers depending upon the increasing number of clients. Clustering gives good scalability when the number of clients increase and also gives high availability. Some of the major EJB vendors support clustering. For example if you deploy a cluster aware EJB application in three servers and if the first server is overloaded, clients are routed automatically to the next server depending upon the load balancing algorithms. And also clients are routed to the other server if the first server dies, in this situation client state is passed to the other server to handle from that point ( this is called as fail over). When you deploy your application on a single server and don't have future anticipation of increase in number of clients then do not use clustering because cluster aware EJBeans have overheads involved. You need to configure vendor specific deployment descriptor file(or other vendor specific manner) in order to get cluster aware EJB application. When you configure for clustering, EJB Container/Server generates cluster aware EJBeans. Look at vendor specific documentation for details on clustering. So use clustering to get high scalability and fail over.
I am aware of Clustered servers but need to know if a clustered environment could be used for the scenario mentioned in my original post.