Techniken zur Statusverwaltung
Skalierungstechniken mit mehreren Maschinen beruhen darauf, dass mehrere Kopien eines Anwendungsservers eingesetzt werden; mehrere aufeinander folgende Anforderungen von verschiedenen Clients können von unterschiedlichen Servern bedient werden. Wenn jede Clientanforderung von jeder anderen Clientanforderung vollständig unabhängig ist, spielt es keine Rolle, ob aufeinander folgende Anforderungen auf demselben Server verarbeitet werden. Allerdings sind in der Praxis Clientanforderungen nicht unabhängig. Ein Client sendet häufig eine Anforderung, wartet auf das Ergebnis, und sendet dann eine oder mehrere Folgeanforderungen, die von den Ergebnissen der vorhergehenden Anforderungen abhängen.
Bei dieser Operationsfolge von Clients gibt es zwei Kategorien:
- Nicht kontextsensitiv (Stateless)
- Ein Server verarbeitet Anforderungen nur aufgrund von Informationen in der jeweiligen Anforderung und reagiert nicht auf Informationen aus früheren Anforderungen. Der Server braucht also keine Statusinformationen zwischen Anforderungen zu behalten.
- Stateful
- Ein Server verarbeitet Anforderungen aufgrund von Informationen in der jeweiligen Anforderung und aufgrund von gespeicherten Informationen aus früheren Anforderungen. Der Server muss also Statusinformationen behalten und auswerten, die während der Verarbeitung einer vorhergehenden Anforderung generieret wurden.
Bei nicht kontextsensitiven Interaktionen spielt es keine Rolle, ob unterschiedliche Anforderungen von unterschiedlichen Servern verarbeitet werden. Bei kontextsensitiven Interaktionen jedoch muss der Server, der eine Anforderung verarbeitet, auf die Statusinformationen zugreifen, die für die Bearbeitung der Anforderung wichtig sind. Entweder kann derselbe Server alle Anforderungen verarbeiten, die denselben Statusinformationen zugeordnet sind, oder die Statusinformationen können von allen Servern, die sie benötigen, gemeinsam benutzt werden. Im letzteren Fall minimiert der Zugriff auf gemeinsam benutzte Statusinformationen vom selben Server aus den Verarbeitungsaufwand, der mit dem Zugriff auf gemeinsam benutzte Statusinformationen von mehreren Servern aus verbunden ist.
Die Einrichtungen zur Auslastungsverwaltung im Produkt verwenden mehrere verschiedene Techniken für die Verwaltung von Statusinformationen zwischen Clientanforderungen:
- Sitzungsaffinität, bei der die Einrichtung zur Auslastungsverwaltung das Vorhandensein einer Clientsitzung erkennt und versucht, alle Anforderungen in der Sitzung an denselben Server zu leiten.
- Transaktionsaffinität, bei der die Einrichtung zur Auslastungsverwaltung das Vorhandensein einer Transaktion erkennt und versucht, alle Anforderungen im Bereich der Transaktion an denselben Server zu leiten.
- Serveraffinität, bei der die Einrichtung zur Auslastungsverwaltung erkennt, dass ein spezieller Server am besten für die Verarbeitung der anstehenden Clientanforderung geeignet ist, obwohl mehrere Server für die Anforderung in Frage kommen würden.
Der Sitzungsmanager, der Bestandteil jedes Anwendungsservers ist, speichert Informationen zu Clientsitzungen und berücksichtigt die Sitzungs- und Serveraffinität, wenn er Clientanforderungen an die Cluster-Member eines Anwendungsservers übergibt. Der Workload-Management-Service berücksichtigt die Server- und Transaktionsaffinität, wenn er Clientanforderungen an die Cluster-Member eines Anwendungsservers übergibt.