Muster für Zuverlässigkeit
Das Dokument bietet eine aufschlussreiche und umfassende Ressource zum Verständnis der Prinzipien und Techniken für die Erstellung von äußerst zuverlässigen und resilienten Systemen in der Cloud. Dieser Leitfaden deckt eine Vielzahl von Themen wie Fehlertoleranz, Redundanz, Überwachung und Wiederherstellung ab und stattet Architekten und Entwickler mit grundlegenden Kenntnissen aus, um robuste Lösungen zu entwerfen, die Ausfällen standhalten und kontinuierliche Verfügbarkeit bieten können.
Verfügbarkeit
Die Verfügbarkeit wird als Prozentsatz der Betriebszeit gemessen und ist als der Zeitraum definiert, in dem ein System betriebsbereit ist und ausgeführt wird. Die Verfügbarkeit wird durch Systemfehler, Infrastrukturprobleme, böswillige Angriffe und die Systemauslastung beeinflusst. Cloudanwendungen bieten Benutzern in der Regel eine Vereinbarung zum Servicelevel (Service Level Agreement, SLA), was bedeutet, dass Anwendungen entworfen und implementiert werden müssen, um die Verfügbarkeit zu maximieren.
Muster | Zusammenfassung |
---|---|
Bereitstellungsstempel | Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich Datenspeicher |
Geografischer Knoten | Es wird beschrieben, wie Sie Back-End-Dienste für eine Gruppe von geografischen Knoten bereitstellen, von denen jeweils die Clientanforderungen einer beliebigen Region verarbeitet werden können. |
Überwachung des Integritätsendpunkts | Implementieren Sie Funktionsprüfungen in einer Anwendung, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen können. |
Warteschlangenbasierter Lastenausgleich | Verwenden Sie eine Warteschlange, die als Puffer zwischen einer Aufgabe und einem Dienst fungiert, den sie aufruft, um zeitweilig hohe Lasten zu glätten. |
Ratenbegrenzungsmuster | Begrenzungsmusters, die Ihnen helfen, Drosselungsfehler im Zusammenhang mit diesen Drosselungsbegrenzungen zu vermeiden oder zu minimieren und eine genauere Vorhersage für den Durchsatz zu ermöglichen. |
Drosselung | Steuern Sie den Ressourcenverbrauch einer Anwendungsinstanz, eines einzelnen Mandanten oder eines gesamten Diensts. |
Um Verfügbarkeitsrisiken durch böswillige DDoS-Angriffe (Distributed Denial of Service) zu minimieren, implementieren Sie den nativen Azure DDoS-Schutzdienst oder eine Drittanbieterfunktion.
Hochverfügbarkeit
Die Azure-Infrastruktur besteht aus geografischen Regionen, Regionen und Verfügbarkeitszonen. Diese Divisionen begrenzen den Radius eines Fehlers und begrenzen somit die potenziellen Auswirkungen auf Kundenanwendungen und -daten. Das Azure-Verfügbarkeitszonenkonstrukt wurde entwickelt, um eine Software- und Netzwerklösung zum Schutz vor Rechenzentrumsausfällen und höherer Hochverfügbarkeit bereitzustellen. Bei der Hochverfügbarkeitsarchitektur besteht ein Gleichgewicht zwischen hoher Resilienz, geringer Latenz und Kosten.
Muster | Zusammenfassung |
---|---|
Bereitstellungsstempel | Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich Datenspeicher |
Geografischer Knoten | Stellen Sie Back-End-Dienste in einer Reihe von geografischen Knoten bereit. Jeder Knoten kann jede Clientanforderung in jeder Region verarbeiten. |
Überwachung des Integritätsendpunkts | Implementieren Sie Funktionsprüfungen in einer Anwendung, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen können. |
Bulkhead | Isolieren sie Elemente einer Anwendung in Pools. Wenn ein Element fehlschlägt, funktionieren die anderen weiterhin. |
Sicherung | Behandeln Sie Fehler, deren Behebung beim Herstellen einer Verbindung mit einem Remotedienst oder einer Remoteressource unterschiedlich lange dauern kann. |
Resilienz
Die Resilienz ist die Fähigkeit eines Systems, Fehler (sowohl versehentlicher als auch schädlicher Art) richtig zu behandeln und anschließend die Wiederherstellung durchzuführen.
Beim Cloudhosting sind Anwendungen häufig mehrinstanzenfähig, verwenden gemeinsame Plattformdienste, konkurrieren um Ressourcen und Bandbreite, kommunizieren über das Internet und werden auf Standardhardware ausgeführt. Diese Situation bedeutet, dass die Wahrscheinlichkeit erhöht ist, dass sowohl vorübergehende als auch dauerhafte Fehler auftreten. Der hohe Vernetzungsgrad im Internet und die immer anspruchsvolleren und häufigeren Angriffe erhöhen die Wahrscheinlichkeit einer Beeinträchtigung der Sicherheit.
Um Fehler zu erkennen und schnell und effizient wiederherzustellen, ist es notwendig, die Resilienz aufrechtzuerhalten.
Muster | Zusammenfassung |
---|---|
Bulkhead | Isolieren sie Elemente einer Anwendung in Pools. Wenn ein Element fehlschlägt, funktionieren die anderen weiterhin. |
Sicherung | Behandeln Sie Fehler, deren Behebung beim Herstellen einer Verbindung mit einem Remotedienst oder einer Remoteressource unterschiedlich lange dauern kann. |
Ausgleichende Transaktion | Machen Sie durch eine Reihe von Schritten ausgeführte Arbeit rückgängig, die zusammen einen letztlich konsistenten Vorgang definieren. |
Überwachung des Integritätsendpunkts | Implementieren Sie Funktionsprüfungen in einer Anwendung, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen können. |
Auswahl einer übergeordneten Instanz | Koordinieren Sie die Aktionen, die von einer Sammlung zusammenarbeitender Aufgabeninstanzen in einer verteilten Anwendung ausgeführt werden, indem Sie eine instance als Leader auswählen. Der Leiter übernimmt die Verantwortung für die Verwaltung der anderen Instanzen. |
Warteschlangenbasierter Lastenausgleich | Verwenden Sie eine Warteschlange, die als Puffer zwischen einer Aufgabe und einem Dienst, den sie aufruft, fungiert. Diese Warteschlange glättet zeitweilig schwere Lasten. |
Wiederholung | Ermöglichen Sie einer Anwendung beim Herstellen einer Verbindung mit einem Dienst oder einer Netzwerkressource die Behandlung antizipierter, temporärer Fehler, indem ein zuvor nicht erfolgreich durchgeführter Vorgang transparent wiederholt wird. |
Scheduler-Agent-Supervisor | Koordinieren Sie eine Reihe von Aktionen in einer verteilten Gruppe von Diensten und anderen Remoteressourcen. |