Factors to consider for Load Balancing

Factors to Consider in Implementing a J2EE Cluster
There are many factors to take into account when designing a J2EE cluster. The following is a list of questions to be considered in a large-scale J2EE system design. (This list is taken from "Creating Highly Available and Scalable Applications Using J2EE" in the EJB Essentials Training document.)

Clustering
  • What kind of clustering should be implemented: vertical scaling or horizontal scaling?
  • In what tier should clustering be implemented: web server or servlet container for servlets, JSP, and HTTP session objects; or application server for EJB, JMS, and JNDI objects or database clustering?
Load Balancing
  • When is a server selected (i.e. affinity): every request, every transaction, or every session?
  • How is a server selected (i.e. load balancing policy): randomly, round-robin, weight-based, least loaded server, or by the application?
  • Where is load balancing accomplished: in one place or many, at the client or at the server?
Fault Tolerance
  • How are server failures detected?
  • When is it right time to fail over and try another server?
  • What about system and application state at the failed node?
Session State Persistence
  • How is state communicated?
  • How often is it communicated?
  • How is object state materialized?
  • Is the state persistence mechanism efficient?
  • Consistency of replicated state?
  • Any network constraints in replicating the session state?

Published Monday, June 27, 2005 11:36 PM by microlau