Global nutzen
In der vorherigen Einheit wurde beschrieben, wie Sie die Rechenleistung skalieren und deren Verfügbarkeit erhöhen. Es wurde außerdem empfohlen, durch das Hinzufügen von Azure Cache for Redis die Leistung zu verbessern und Azure SQL-Datenbanken per Sharding aufzuskalieren.
Wenn Ihr Unternehmen wächst, besteht der nächste Schritt möglicherweise in der globalen Nutzung. Es gibt jedoch einige Dinge, die Sie berücksichtigen müssen, bevor Sie versuchen, eine vollständig globale Architektur zu implementieren.
Wichtige Fragen
Die erste Frage ist: Ist die globale Nutzung tatsächlich nötig?
Machen Sie sich klar, wie schlimm die Situation für unsere Kunden sein muss, damit sie sich an eine solche Aufgabe wagen. Stellen Sie sich also noch ein paar weitere Fragen:
- Können Sie die räumliche Distanz zum Endbenutzer mithilfe eines Content Delivery Network (CDN) verringern?
- Müssen Sie dieses spezielle System wirklich über zwei (oder mehr) geografische Regionen hinweg skalieren? Muss ein Benutzer in den USA beispielsweise genau dasselbe Konto im Vereinigten Königreich haben? Wären unabhängige Systeme nicht vielleicht besser geeignet? Dieses Muster ist im E-Commerce gängig.
- Welche Konsistenz benötigen Sie für die Datenbank, wenn Sie tatsächlich ein global verteiltes System brauchen? Starke Konsistenz auf der ganzen Welt ist schwer zu erreichen und bei Diensten wie Cosmos DB nicht zulässig, buchstäblich wegen der Lichtgeschwindigkeit.
Datenkonsistenz
Sehen wir uns das Problem der Datenkonsistenz genauer an.
Konsistenz in Datenbanksystemen bezieht sich auf die Anforderung, dass jede Datenbanktransaktion betroffene Daten nur auf zulässige Weise ändern darf. Beim verteilten Computing werden zwei Konsistenzmodelle genutzt.
Starke Konsistenz bietet eine Garantie für die Linearisierbarkeit. Die Lesevorgänge geben garantiert die neueste Version eines Elements zurück, für die ein Commit ausgeführt wurde.
Bei der letztlichen Konsistenz handelt es sich um das Konzept, dass eine Datenbank oder ein System im Laufe der Zeit letztendlich konsistent wird. Es gibt keine Garantie der Reihenfolge von Lesevorgängen. Erfolgen keine weiteren Schreibvorgänge, dann konvergieren die Replikate früher oder später unweigerlich.
Tools zur globalen Nutzung
Wenn Sie Ihre Anwendung tatsächlich global skalieren müssen, gibt es einige Azure-Dienste, die Ihnen dabei helfen können. Sehen Sie sich Azure Front Door und Azure Traffic Manager an:
- Bei Azure Traffic Manager handelt es sich um einen globalen DNS-basierten Dienst für den Lastenausgleich. Er nutzt DNS und Integritätstests, um Ihre Benutzer*innen basierend auf den von Ihnen definierten Routingrichtlinien an das optimale fehlerfreie Back-End weiterzuleiten. Diese Definition kann auf der Leistung, dem Standort, Roundrobin usw. basieren. Nachdem ein fehlerfreies Back-End identifiziert wurde, stellen Clients immer eine direkte Verbindung mit diesem Back-End her.
- Azure Front Door Service ist ein ADN-as-a-Service (Application Delivery Network) und bietet verschiedene Funktionen zum Lastenausgleich in Schicht 7 für Ihre Anwendungen. Er umfasst die Beschleunigung dynamischer Websites (DSA) sowie einen globalen Lastenausgleich mit Failover beinahe in Echtzeit. Es handelt sich um einen hoch verfügbaren und skalierbaren Dienst, der vollständig von Azure verwaltet wird.
Azure Front Door ist im Wesentlichen ein globaler HTTP-basierter Lastenausgleich. Der Client stellt eine Verbindung mit Front Door selbst her, sodass Front Door als Proxy für die Anforderungen der Benutzer fungiert. Wenn sich das angeforderte Element nicht im Cache befindet, wird die richtige Routingregel identifiziert. Anschließend wird der Integritätstest des relevanten Back-Ends überprüft und – vorausgesetzt, dass keine Fehler vorliegen – die Benutzeranforderung basierend auf der Routingmethode an das beste Back-End weitergeleitet.
Da die Verbindung Azure Front Door als Proxy nutzt, können Sie einige erweiterte Funktionen nutzen, zum Beispiel das Ausführen einer Web Application Firewall oder Caching, was für die Skalierung hilfreich ist. Traffic Manager bietet keine dieser Funktionen.
Das Diagramm zeigt, wie Sie beides gleichzeitig verwenden können.
Diese Konfiguration verwendet Traffic Manager für den einfachen DNS-basierten Lastenausgleich für Ihre statischen Ressourcen in Speicherkonten. Außerdem wird Front Door für das pfadbasierte Routing ihrer Webanwendung für App Service und VMs verwendet.