Am 17. Juli 2018 wurde in einer offiziellen AWS-Ankündigung erklärt, dass die ersten Zeichen jedes S3-Objektschlüssels nicht mehr zufällig sortiert werden müssen, um eine maximale Leistung zu erzielen: https://aws.amazon.com/about-aws/whats-new / 2018/07 / amazon-s3-kündigt-erhöhte-anfragerate-leistung an /
Amazon S3 kündigt erhöhte Leistung bei der Anforderungsrate an
Veröffentlicht am: 17. Juli 2018
Amazon S3 bietet jetzt eine verbesserte Leistung und unterstützt mindestens 3.500 Anfragen pro Sekunde zum Hinzufügen von Daten und 5.500 Anfragen pro Sekunde zum Abrufen von Daten, wodurch ohne zusätzliche Kosten erhebliche Verarbeitungszeiten eingespart werden können. Jedes S3-Präfix kann diese Anforderungsraten unterstützen, sodass die Leistung auf einfache Weise erheblich gesteigert werden kann.
Anwendungen, die heute auf Amazon S3 ausgeführt werden, profitieren von dieser Leistungsverbesserung, ohne dass Änderungen vorgenommen werden. Kunden, die neue Anwendungen auf S3 erstellen, müssen keine Anwendungsanpassungen vornehmen, um diese Leistung zu erzielen. Die Unterstützung von Amazon S3 für parallele Anforderungen bedeutet, dass Sie Ihre S3-Leistung um den Faktor Ihres Computerclusters skalieren können, ohne Anpassungen an Ihrer Anwendung vornehmen zu müssen. Leistungsskalen pro Präfix, sodass Sie so viele Präfixe verwenden können, wie Sie parallel benötigen, um den erforderlichen Durchsatz zu erzielen. Die Anzahl der Präfixe ist unbegrenzt.
Durch diese Leistungssteigerung der S3-Anforderungsrate werden alle vorherigen Anweisungen zur zufälligen Zuordnung von Objektpräfixen entfernt, um eine schnellere Leistung zu erzielen. Das heißt, Sie können jetzt bei der S3-Objektbenennung logische oder sequenzielle Benennungsmuster verwenden, ohne dass dies Auswirkungen auf die Leistung hat. Diese Verbesserung ist jetzt in allen AWS-Regionen verfügbar. Weitere Informationen finden Sie im Amazon S3-Entwicklerhandbuch.
Das ist toll, aber auch verwirrend. Es heißt, dass jedes S3- Präfix diese Anforderungsraten unterstützen kann, was es einfach macht, die Leistung signifikant zu steigern
Da Präfixe und Begrenzer nur Argumente für die GET Bucket (List Objects)
API sind, wenn der Inhalt von Buckets aufgelistet wird, kann es sinnvoll sein, über die Leistung beim Abrufen von Objekten "pro Präfix" zu sprechen. Jeder Aufruf von GET Bucket (List Objects)
kann ein beliebiges Präfix und Trennzeichen auswählen, sodass Präfixe keine vordefinierte Entität sind.
Wenn mein Bucket beispielsweise die folgenden Objekte enthält:
a1/b-2
a1/c-3
Dann kann ich wählen, "/" oder "-" als Trennzeichen zu verwenden, wenn ich den Bucket-Inhalt aufführe, sodass ich meine Präfixe als entweder betrachten kann
a1/
oder
a1/b-
a1/c-
Da die GET Object
API jedoch den gesamten Schlüssel verwendet, ist das Konzept eines bestimmten Präfixes oder Begrenzers für den Objektabruf nicht vorhanden. Kann ich also mit 5.500 Anfragen / Sek. Rechnen a1/
oder alternativ mit 5.500 Anfragen / Sek. a1/b-
Und 5.500 Anfragen / Sek. a1/c-
?
Kann jemand erklären, was mit der Ansage gemeint ist, wenn sie ein bestimmtes Leistungsniveau (z. B. +5.500 Anfragen pro Sekunde zum Abrufen von Daten) für "jedes s3-Präfix" vorschlägt?
quelle
Antworten:
Was hier eigentlich als Präfix bezeichnet wird, scheint eine zu starke Vereinfachung zu sein, die sich wirklich auf jede Partition des Bucket-Index bezieht. Der Index ist lexikalisch, sodass Aufteilungen basierend auf führenden Zeichen im Objektschlüssel erfolgen. Daher wird es als Präfix bezeichnet .
S3 verwaltet die Indexpartitionen automatisch und transparent, sodass die genaue Definition eines "Präfixes" hier eigentlich etwas ungenau ist: "Was auch immer S3 entscheidet, wird benötigt, um die Arbeitslast Ihres Buckets zu unterstützen." S3 teilt die Indexpartitionen als Reaktion auf die Arbeitslast auf, sodass zwei Objekte, die möglicherweise heute dasselbe "Präfix" haben, morgen unterschiedliche Präfixe haben können, die alle im Hintergrund ausgeführt werden.
Im Moment können a1 / a -... und a1 / b -... und a1 / c -... alle ein einzelnes Präfix sein. Werfen Sie jedoch genügend Verkehr in den Bucket, und S3 kann entscheiden, dass die Partition aufgeteilt werden soll, sodass morgen a1 / a- und a1 / b- in einem Präfix sein können, während a1 / c- in einem eigenen Präfix sein kann. (Das heißt, Schlüssel <a1 / c- befinden sich in einer Partition, Schlüssel> = a1 / c- befinden sich jetzt in einer anderen Partition.)
Wo und wann und insbesondere welcher Schwellenwert das Split-Verhalten auslöst, ist nicht dokumentiert, sondern scheint nur mit der Anzahl der Anforderungen und nicht mit der Anzahl oder Größe der Objekte in Beziehung zu stehen. Zuvor waren diese Partitionen auf jeweils einige Hundert Anforderungen pro Sekunde beschränkt, und dies wurde deutlich erhöht.
quelle