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?