Entwerfen für Skalierbarkeit
Skalierbarkeit ist die Fähigkeit einer Anwendung, eine zusätzliche Last mit einem linearen Anstieg der Ressourcennutzung zu bedienen. Skalierbarkeit ist in jeder verteilten Anwendung wichtig. Einschränkungen der Skalierbarkeit stehen in der Regel im Mittelpunkt der Ressourcennutzung und abhängigkeiten, die versehentlich im Entwurf der Anwendung erstellt wurden.
In der folgenden Liste werden Skalierbarkeitsprobleme beschrieben und Lösungen vorgeschlagen:
Computerinterne Ressourcen. Die Anzahl der verfügbaren Threads und des verfügbaren Arbeitsspeichers kann die Skalierbarkeit einschränken. Verwenden Sie ein Threadingmodell, das für Ihre Anwendung am effizientesten ist.
Computerübergreifende Ressourcen. Die Anzahl der verfügbaren Computer zum Verteilen der Anwendungsworkload kann sich auf die Skalierbarkeit auswirken.
Clientaffinität. Zwei Affinitätssituationen können versehentlich von einer Anwendung erstellt werden: eine Situation, in der die Anwendung vom Zustand der Daten abhängig ist, die der Client mit seiner Anforderung sendet; und eine Situation, in der die Anwendung einen clientspezifischen Zustand erfordert. Vermeiden Sie das Entwerfen von Zustandsabhängigkeiten zwischen dem Client und der Anwendung.
Serveraffinität. Eine COM+-Anwendung kann ihre Skalierbarkeit einschränken, indem sie eine Serveraffinität erstellt, bei der die Anwendung von einem bestimmten Servercomputer abhängig ist, um Informationen zu erhalten. Diese Affinität kann bei vielen datenbankorientierten Anwendungen auftreten. Die beste Möglichkeit, einen Serveraffinitätsengpass zu vermeiden, besteht darin, Daten auf verschiedenen Servercomputern zu partitionieren. Teilen Sie beispielsweise Kundendaten zwischen Servern durch den am häufigsten verwendeten Schlüssel auf, oder umfassen Sie eine Kundendatenbank über mehrere Server mit dem Nachnamen des Kunden (z. B. Server1: a-f, Server2: g-m, Server3: n-z).
Hinweis
Die Datenpartitionierung kann die Programmierlogik erheblich komplexer machen und sollte erst ausgeführt werden, nachdem andere Optionen zur Erhöhung der Skalierbarkeit getestet wurden.
Objektlebensdauer. Um skalierbar zu sein, muss eine COM+-Anwendung die Lebensdauer von Objekten genau beachten. Während ein Objekt vorhanden ist, werden Ressourcen verbraucht. Es ist wichtig sicherzustellen, dass die Lebensdauer von Objekten, die teure Ressourcen enthalten, sorgfältig verwaltet wird. Bei Objekten mit hohem Bedarf, die keine teuren Ressourcen verbrauchen, kann das COM+-Objektpooling die Skalierbarkeit erhöhen, da Sie die Poolingwerte administrativ anpassen können, um von beliebiger Hardware zu profitieren. Und es ist eine natürliche Möglichkeit, Verbindungen zu steuern: Wenn Sie beispielsweise über eine Lizenz für 20 SQL Verbindungen verfügen, können Sie dies mit der Einstellung Max. Pool vorgeben.
Anwendungskomponentengruppierung. Um die Skalierbarkeit einer COM+-Anwendung zu verbessern, sollten die Komponenten der mittleren Ebene in zeitabhängige und zeitunabhängige Dienste unterteilt werden. Dadurch können Sie sich auf die Verwendung eines Microsoft Windows-Diensts konzentrieren, um eine erforderliche Komponentenaktion zu implementieren. Beispielsweise können Sie einen Dienst wie Message Queuing oder COM+-Komponenten in der Warteschlange verwenden, um zeitunabhängige, asynchrone Aufgaben zu verarbeiten.