A cluster is the term given to two or more JVMs working together to serve up a common set of EJBs and Servlets. If you want to workload manage your applications, which essentially means having redundant JVMs on which your applications are running, what you do is set up a �cluster.�
With a cluster, when you deploy your application, rather than deploying to a single JVM, you deploy your application to the cluster. Then each member of the cluster, each Java Virtual Machine that is, is capable of handling requests from clients.
What is Vertical Scaling?
If a cluster is a collection of JVMs working together to provide a workload managed environment, then �vertical scaling� happens when each of those JVMs are running on the same physical machine.
Now I know what you�re thinking: that doesn�t provide any failover support? Well, if the cleaning staff accidentally kicks out the power cord on your server, then indeed, you�re going to experience some downtime.
So what benefit does vertical scaling provide?
Vertical scaling provides a variety of benefits, especially if your environment is heavy on hardware.
First of all, if one JVM goes offline, whether intentionally or not, the other JVMs can pick up the slack, so you do get a certain degree of failover, although its not exactly the level of failover we usually associate with workload management. With vertical scaling, we are still node dependent.
A more likely reason for implementing a vertically scaled environment is to take advantage of powerful, multiprocessor machines.
The fact is, despite the use of our modern, multithreaded operating systems, there are enough concurrent processes within a JVM to make having one java.exe process running on a multiprocessor system a fairly ineffective endeavor. To take maximum advantage of your multiprocessor machine, you should implement vertical scaling and have n-1 JVMs running, where n is the number of processors in your system, and 1 is the number between zero and two.
What is Horizontal Scaling?
Horizontal scaling occurs when you deploy an application across multiple physical machines. Horizontal scaling is traditionally what we think of when the term �workload management� is thrown around.
WebSphere makes implementing horizontal scaling incredibly easy. The first step is to install the base edition of WebSphere onto a couple of different machines, and then install the Deployment Manager on another machine. Make the base editions part of the deployment manager�s administrative domain, and then use the administrative console to create a cluster.
The WebSphere Administrative Console makes it very easy to set up JVMs on multiple nodes that will act as a cluster. When you subsequently deploy your applications to the cluster, the various JVMs on the multiple nodes will take part in serving up the application. If one node goes down, the other JVMs on other nodes will pick up the slack.
XML schemas, which are applications of the XML language, may apply XML to horizontal or vertical domains. Horizontal domains are cross-industry domains, while vertical domains are specific to types of industries.
[ November 21, 2006: Message edited by: Peer Reynders ]
posted 13 years ago
Thanks for the distinction between horizontal and vertical in the J2EE context. This is very interesting and helpful in architecture and implementation considerations.
posted 13 years ago
Thanks for the info. I read the blueprints XML chapter...don't know how I missed this. Thanks for clearing it up!
Whatever you say buddy! And I believe this tiny ad too:
Devious Experiments for a Truly Passive Greenhouse!