Leistungsrichtlinien und Entwurfsmuster für S3 Express One Zone - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Leistungsrichtlinien und Entwurfsmuster für S3 Express One Zone

Bei der Entwicklung von Anwendungen, die Objekte zu Amazon S3 Express One Zone hochladen und daraus abrufen, sollten Sie unsere bewährten Methoden befolgen, um die Leistung zu optimieren. Um die Speicherklasse S3 Express One Zone zu verwenden, müssen Sie einen S3-Verzeichnis-Bucket erstellen. Die Speicherklasse S3 Express One Zone wird für die Verwendung mit S3-Allzweck-Buckets nicht unterstützt.

Leistungsrichtlinien für alle anderen Amazon-S3-Speicherklassen und S3-Allzweck-Buckets finden Sie unter Bewährte Methoden für Designmuster: Optimieren der Leistung von Amazon S3.

Zur Erzielung der besten Leistung für Ihre Anwendung bei Verwendung der Speicherklasse S3 Express One Zone und von Verzeichnis-Buckets empfehlen wir die folgenden Vorgehensweisen und Designmuster.

Platzieren Sie den S3-Express-One-Zone-Speicher gemeinsam mit Ihren AWS-Computingressourcen

Jeder Verzeichnis-Bucket wird in einer einzigen Availability Zone gespeichert, die Sie bei dessen Erstellung auswählen. Sie können damit beginnen, indem Sie neuen Verzeichnis-Bucket in einer Availability Zone erstellen, die für Ihre Computng-Workloads oder Ressourcen lokal ist. Sie können dann sofort mit Lese- und Schreibvorgängen mit sehr niedriger Latenz beginnen. Verzeichnis-Buckets sind die ersten S3-Buckets, in denen Sie die Availability Zone in einer AWS-Region auswählen können, um die Latenz zwischen Rechenleistung und Speicher zu reduzieren.

Wenn Sie in verschiedenen Availability Zones auf Verzeichnis-Buckets zugreifen, erhöht sich die Latenz. Um die Leistung zu optimieren, empfehlen wir, dass Sie von Amazon Elastic Container Service-, Amazon Elastic Kubernetes Service- und Amazon Elastic Compute Cloud-Instances, die sich nach Möglichkeit in derselben Availability Zone befinden, auf einen Directory-Bucket zugreifen.

Verzeichnis-Buckets

Jeder Verzeichnis-Bucket kann Hunderttausende von Transaktionen pro Sekunde (TPS) unterstützen. Im Gegensatz zu Allzweck-Buckets organisieren Verzeichnis-Buckets Schlüssel hierarchisch in Verzeichnissen statt nach Präfixen. Ein Präfix ist eine Zeichenfolge am Anfang des Objektschlüsselnamens. Sie können sich Präfixe als eine Möglichkeit vorstellen, Ihre Daten ähnlich wie Verzeichnisse zu organisieren. Präfixe sind jedoch keine Verzeichnisse.

Präfixe organisieren Daten in einem flachen Namespace innerhalb von Allzweck-Buckets und die Anzahl der Präfixe in einem Allzweck-Bucket ist unbegrenzt. Jedes Präfix kann mindestens 3 500 PUT/POST/DELETE oder 5 500 GET/HEAD-Anforderungen pro Sekunde erreichen. Sie können Anfragen auch über mehrere Präfixe parallelisieren, um die Leistung zu skalieren. Die Skalierung erfolgt sowohl bei Lese- als auch bei Schreiboperationen schrittweise und nicht sofort. Während Allzweck-Buckets auf Ihre neue höhere Anforderungsrate skaliert werden, erhalten Sie möglicherweise einige HTTP-Statuscode 503 (Service Unavailable)-Fehler.

Bei einem hierarchischen Namespace ist das Trennzeichen im Objektschlüssel wichtig. Das einzige unterstützte Trennzeichen ist der Schrägstrich (/). Verzeichnisse werden durch Trennzeichengrenzen bestimmt. Beispielsweise führt der Objektschlüssel dir1/dir2/file1.txt dazu, dass die Verzeichnisse dir1/und dir2/ automatisch erstellt werden und das Objekt file1.txt dem /dir2-Verzeichnis im Pfad dir1/dir2/file1.txt hinzugefügt wird.

Die Verzeichnisse, die erstellt werden, wenn Objekte in Verzeichnis-Buckets hochgeladen werden, haben keine TPS-Beschränkungen pro Präfix und werden automatisch vorskaliert, um die Wahrscheinlichkeit von HTTP 503-Fehlern (Service Unavailable) zu verringern. Diese automatische Skalierung ermöglicht Ihren Anwendungen, Lese- und Schreibanforderungen innerhalb von Verzeichnissen und zwischen Verzeichnissen nach Bedarf zu parallelisieren.

Parallelisierung horizontaler Skalierungsanforderungen für verzeichnis-Buckets

Sie erreichen die beste Leistung durch die Ausgabe mehrerer gleichzeitiger Anfragen an Verzeichnis-Buckets zur Verteilung Ihrer Anforderungen auf separate Verbindungen und zur Maximierung der verfügbaren Bandbreite. S3Express One Zone hat keine Beschränkungen für die Anzahl der Verbindungen, die mit Ihrem Verzeichnis-Bucket hergestellt werden. Einzelne Verzeichnisse können die Leistung horizontal und automatisch skalieren, wenn eine große Anzahl gleichzeitiger Schreibvorgänge in dasselbe Verzeichnis stattfindet.

Wenn ein Objektschlüssel zum ersten Mal erstellt wird und sein Schlüsselname ein Verzeichnis enthält, wird das Verzeichnis automatisch für das Objekt erstellt. Bei nachfolgenden Objekt-Uploads in dasselbe Verzeichnis muss das Verzeichnis nicht erstellt werden, wodurch die Latenz beim Hochladen von Objekten in bestehende Verzeichnisse reduziert wird.

Obwohl sowohl flache als auch tiefe Verzeichnisstrukturen für das Speichern von Objekten in einem Verzeichnis-Bucket unterstützt werden, werden Verzeichnis-Buckets automatisch horizontal skaliert, wodurch die Latenz bei gleichzeitigen Uploads in dasselbe Verzeichnis oder in parallele „Verzeichnisgeschwister“ geringer ist.

Verwenden der sitzungsbasierten Authentifizierung

S3 Express One Zone und Verzeichnis-Buckets unterstützen einen neuen sitzungsbasierten Autorisierungsmechanismus zur Authentifizierung und Autorisierung von Anforderungen an einen Verzeichnis-Bucket. Bei der sitzungsbasierten Authentifizierung verwenden die AWS-SDKs automatisch den CreateSession-API-Vorgang, um ein temporäres Sitzungstoken zu erstellen, das für die Autorisierung von Datenanforderungen an einen Verzeichnis-Bucket mit geringer Latenz verwendet werden kann.

Die AWS-SDKs verwenden den CreateSession-API-Vorgang, um temporäre Anmeldeinformationen anzufordern. Anschließend erstellen und aktualisieren sie für Sie automatisch alle 5 Minuten Token. Um die Leistungsvorteile der Speicherklasse S3 Express One Zone zu nutzen, wird empfohlen, die AWS-SDKs zum Initiieren und Verwalten der CreateSession-API-Anforderung zu verwenden. Weitere Informationen zu diesem sitzungsbasierten Modell finden Sie unter CreateSession-Autorisierung.

Bewährte Methoden für zusätzliche S3-Prüfsummen

S3 Express One Zone bietet Ihnen die Möglichkeit, den Prüfsummenalgorithmus auszuwählen, der zur Validierung Ihrer Daten beim Hoch- oder Herunterladen verwendet wird. Sie können einen der folgenden Secure Hash Algorithms (SHA)- oder Cyclic Redundancy Check (CRC)-Algorithmen zur Überprüfung der Datenintegrität auswählen: CRC32, CRC32C, SHA-1 und SHA-256. MD5-based Prüfsummen werden von der Speicherklasse S3 Express One Zone nicht unterstützt.

CRC32 ist die Standardprüfsumme, die von den AWS-SDKs bei der Übertragung von Daten zu oder von S3 Express One Zone verwendet wird. Wir empfehlen die Verwendung von CRC32 und CRC32C, um die beste Leistung mit der Speicherklasse S3 Express One Zone zu erzielen.

Verwenden der neuesten Version der AWS-SDKs und der gemeinsamen Laufzeitbibliotheken

Einige der AWS-SDKs stellen auch die AWS Common Runtime (CRT)-Bibliotheken bereit, um die Leistung in S3-Clients weiter zu beschleunigen. Zu diesen SDKs gehören AWS SDK for Java 2.x, AWS SDK for C++ und AWS SDK for Python (Boto3). Der CRT-basierte S3-Client überträgt Objekte zu und von S3 Express One Zone mit verbesserter Leistung und Zuverlässigkeit, indem er automatisch den mehrteiligen Upload-API-Vorgang und Abrufe im Bytebereich verwendet, um horizontal skalierende Verbindungen zu automatisieren.

Um die höchste Leistung mit der Speicherklasse S3 Express One Zone zu erzielen, empfehlen wir, die neueste Version der AWS-SDKs zu verwenden, die die CRT-Bibliotheken enthalten, oder die AWS Command Line Interface (AWS CLI) zu verwenden.

Fehlerbehebung bei der Leistung

Wiederholung von Anforderungen für latzenzsensitive Anwendungen

S3 Express One Zone wurde speziell für gleichbleibende Leistung ohne zusätzliche Anpassungen entwickelt. Die Festlegung aggressiver Timeout-Werte und Wiederholungsversuche kann jedoch weiter zu einer gleichbleibenden Latenz und Leistung beitragen. Die AWS-SDKs verfügen über konfigurierbare Timeout- und Wiederholungsversuch-Werte, die Sie an die Toleranzen Ihrer spezifischen Anwendung anpassen können.

AWS Common Runtime (CRT)-Bibliotheken und Kopplung von Amazon-EC2-Instance-Typen

Anwendungen, die eine große Anzahl von Lese- und Schreibvorgängen ausführen, benötigen wahrscheinlich mehr Arbeitsspeicher oder Computing-Kapazitäten als Anwendungen, bei denen dies nicht der Fall ist. Wählen Sie beim Starten Ihrer Amazon-Elastic-Compute-Cloud (Amazon EC2)-Instances für Ihre leistungsforderndne Workloads die Instance-Typen aus, die über die Menge dieser Ressourcen verfügen, die Ihre Anwendung benötigt. Die S3-Express-One-Zone-Hochleistungsspeicherung lässt sich ideal mit größeren und neueren Instance-Typen mit größerem Systemspeicher und leistungsstärkeren CPUs und GPUs kombinieren, die die Vorteile von leistungsfähigerem Speicher nutzen können. Wir empfehlen außerdem, die neuesten Versionen der CRT-fähigen AWS-SDKs zu verwenden, die Lese- und Schreibanforderungen besser parallel beschleunigen können.

Verwenden Sie die sitzungsbasierte Authentifizierung in AWS-SDKs anstelle der HTTP-REST-APIs

Mit Amazon S3 können Sie auch die Leistung optimieren, wenn Sie HTTP-REST-API-Anfragen verwenden, indem Sie dieselben bewährten Methoden befolgen, die Teil der AWS-SDKs sind. Angesichts des sitzungsbasierten Autorisierungs- und Authentifizierungsmechanismus, der von S3 Express One Zone verwendet wird, empfehlen wir Ihnen jedoch dringend, die AWS-SDKs zur Verwaltung von CreateSession und das zugehörige verwaltete Sitzungstoken zu verwenden. Die AWS-SDKs erstellen und aktualisieren mithilfe der CreateSession-API-Operation automatisch Token in Ihrem Namen. Die Verwendung von CreateSession ermöglicht Einsparungen bei der Round-Trip-Latenz pro Anforderung an AWS Identity and Access Management (IAM) für die Autorisierung der einzelnen Anforderungen.