The client then contacts the designated back-end server, unaware that a different server could be selected for its next DNS resolution. Routers can also bind a TCP flow to any back-end server based on the current load conditions and then use that binding for the duration of the flow. Load balancing at these layers is somewhat limited, however, because they do not take into account the content of client requests. Clustering is a cost effective way to achieve high availability and high performance by combining many commodity computers to improve overall system processing power. Processes can then be distributed transparently among computers in the cluster.
Clusters generally employ load sharing and process migration.
Process migration mechanisms balance load across processors or, more generally, across network nodes by transferring the state of a process between nodes. 3 Transferring process states requires significant platform infrastructure support to handle platform differences between nodes. It can also limit applicability to programming languages based on virtual machines, such as Java. The lack of flexibility arises from the inability to support application-defined metrics at run time when making load balancing decisions. ORB middleware lets clients invoke operations on distributed objects without concern for object location, programming language, OS platform, communication protocols and interconnects, and hardware.