Multiple machine scaling techniques rely on using multiple
copies
of an application server; multiple consecutive requests from various
clients
can be serviced by different servers. If each client request is completely
independent of every other client request, it does not matter if consecutive
requests are processed on the same server. However, in practice, client
requests
are not independent. A client often makes a request, waits for the
result,
then makes one or more subsequent requests that depend on the results
received
from the earlier requests.
This sequence of operations on behalf of a client falls
into two categories:
- Stateless
- A server processes requests based solely on information provided
with
each request and does not rely on information from earlier requests.
The
server does not need to maintain state information between requests.
- Stateful
- A server processes requests
based on both the information provided with
each request and information stored from earlier requests. The server
needs
to access and maintain state information generated during the processing
of an earlier request.
For stateless interactions,
it does not matter whether different requests
are processed by different servers. However, for stateful interactions,
the
server that processes a request needs access to the state information
necessary
to service that request. Either the same server can process all requests
that are associated with the same state information, or the state
information
can be shared by all servers that require it. In the latter case,
accessing
the shared state information from the same server minimizes the processing
overhead associated with accessing the shared state information from
multiple
servers.
The load distribution facilities in the product use
several different
techniques for maintaining state information between client requests:
- Session affinity, where the load distribution
facility recognizes the
existence of a client session and attempts to direct all requests
within
that session to the same server.
- Transaction affinity, where
the load distribution facility recognizes
the existence of a transaction and attempts to direct all requests
within
the scope of that transaction to the same server.
- Server
affinity, where the load distribution facility recognizes that
although multiple servers might be acceptable for a given client
request,
a particular server is best suited for processing that request.
- The session
manager,
which is part of each application server, stores client session information
and takes session affinity and server affinity into account when
directing
client requests to the cluster members of an application server.
The workload
management service considers server affinity and transaction affinity
when
directing client requests among the cluster members of an application
server.