Vorheriges Thema: Beispiele für das Schreiben einer effektiven Business-LogikNächstes Thema: Fallstudie 16: Designmuster der Business-Logik


Fallstudie 15: Geclusterte Metriken

Wenn üblicherweise ein bestimmter Teil einer Software beschrieben wird, kann die Beschreibung in zwei Abschnitte gegliedert werden - dem Abschnitt WAS und dem Abschnitt WIE. Im Abschnitt WAS wird beschrieben, was dieser Teil des Codes tut. Der Abschnitt WIE gibt an, wie er das tut. Die meisten neigen dazu, sich auf den WAS-Abschnitt zu konzentrieren und den WIE-Abschnitt zu ignorieren. Der Grund dafür ist einfach und in vielen Fällen gerechtfertigt. Indem Sie so vorgehen, reduzieren Sie die Kopplung zwischen Ihren Komponenten und füllen Ihren Kopf nicht mit Informationen, die in vielen Fällen irrelevant sind. In vielen Fällen jedoch kann das Ignorieren des WIE-Abschnitts zu Lasten der Leistung gehen.

Diese Fallstudie untersucht die Art und Weise, wie die Engine geclusterte Metriken berechnet (d. h. wie sie auf den WIE-Abschnitt reagiert) und beschreibt die Leistungskosten für bestimmte Implementierungen. Sie geht auch näher auf einige Möglichkeiten ein, wie diese Kosten durch die Änderung der Implementierung geändert werden kann.

Was sind geclusterte Metriken?

Geclusterte Metriken sind Metriken, die eine bestimmte Gruppe von Ressourcen in ihrer Definition eingebettet haben. Diese Gruppe wird als Cluster der Metrik bezeichnet, und jede der Ressourcen in dieser Gruppe wird als Cluster-Objekt bezeichnet. Wenn man eine geclusterte Metrik berechnet, wird eine gesonderte Berechnung für jedes dieser Cluster-Objekte ausgeführt. Die Berechnungen für jedes dieser Cluster-Objekte entsprechend einander, außer:

So werden geclusterte Metriken berechnet

Das wichtigste, was man bei der Berechnung einer geclusterten Metrik verstehen muss, ist, dass alle Cluster-Objekte parallel berechnet werden. Parallel bedeutet in diesem Fall nicht, dass sie von verschiedenen Threads berechnet werden, sondern, dass die Events während der Verarbeitung zahlreicher Events, die von verschiedenen Cluster-Objekten verarbeitet werden sollten, sequenziell verarbeitet werden. Für jedes Event werden die zugehörigen Cluster-Objekte aufgerufen, die dann dieses Event verarbeiten. Zum Beispiel gibt es viele Events, die von vielen Cluster-Objekten verarbeitet werden sollten. Es gibt zwei Optionen, dies zu tun:

Beispiel: Option 1

Für jedes Cluster-Objekt C
     Für jedes Event E, das von C verarbeitet werden soll
          Lassen Sie E von C verarbeiten

Beispiel: Option 2

Für jedes Event E
     Für jedes Cluster-Objekt C, das E verarbeiten soll
          Lassen Sie E von C verarbeiten

Die Engine verarbeitet geclusterte Metriken nach der Option 2.

Ein weiterer wichtiger Punkt, den Sie verstehen sollten, ist, dass die Ausführung des VBScript im PslWriter von einer Komponente mit dem Namen Skript-Steuerelement ausgeführt wird. Es gibt nur eine einzelne Instanz dieser Komponente pro Metrik und diese Instanz wird für die Berechnung zahlreicher Cluster-Objekte wieder verwendet. Da die Cluster-Objekte wie zuvor erwähnt parallel berechnet werden und die Komponente Skript-Steuerelement zu jedem Zeitpunkt nur die Daten eines einzelnen Cluster-Objekts enthalten kann, müssen Sie die Daten in der Komponente Skript-Steuerelement häufig umschalten.

Um diesen Vorgang zu erklären, ist nachfolgend ein detaillierter Pseudocode dargestellt, der die Berechnungen durchführt.

1-     Für jede Metrik M
2-          Lassen Sie X das früheste Event sein, dass noch nicht von M verarbeitet wurde
3-          Lassen Sie T den Zeitstempel des letzten Status vor X sein
4-          Lassen Sie L die Liste aller Events sein, die von M registriert wurden (alle Cluster-Objekte), beginnend mit dem Zeitstempel T bis hin zur aktuellen Zeit
5-          Für jedes Event E in L
6-               Für jedes Cluster-Objekt C, das E verarbeiten sollte
7-                    Lassen Sie C’ das Cluster-Objekt sein, das gegenwärtig ins Skript-Steuerelement geladen wird
8-                    Nehmen Sie die Werte der globalen Variablen vom Skript-Steuerelement und speichern Sie sie für C’
9-                    Nehmen Sie die Werte der globalen Variablen, die für C gespeichert wurden, und laden Sie sie in das Skript-Steuerelement
10-                    Verarbeiten Sie das Event E

Dieser vollständige Prozess, um einen Zeitpunkt eines Events zu finden, der noch nicht berücksichtigt wurde, und dann die Berechnung von diesem Zeitpunkt an durchzuführen, wird Neuberechnung genannt. Der Prozess, bei dem die Werte der globalen Variablen ersetzt werden (Schritte 8 und 9 im obigen Code), wird als Kontextumschaltung bezeichnet.

Wie Sie anhand des obigen Codes leicht sehen können, ergeben sich die folgenden beiden Hauptprobleme:

Neuberechnung von geclusterten Metriken

Kontextumschaltung