intelligente Leute, noob hier!
Ich plane, auf s3 ein Multi-User-Gerät für die Foto- / Objektspeicherung zu erstellen, und ich hatte vor, s3 zu verwenden. Ich habe das gesamte Frontend geplant, aber ich habe eine Frage zum Eimersystem.
Sollte ich einen Bucket für jeden Benutzer oder 4-5 Buckets haben, auf die die Benutzer verteilt sind, oder sollte ich für jeden Benutzer einen Bucket haben?
Jeder Benutzer wird im Durchschnitt etwa 35 GB speichern, und ich möchte, dass dies in der Lage ist, mit 3 Benutzern bis 300.000.000 in der Zukunft zu laufen (so skalierbar wie möglich)
Welche Methode sollte ich wählen und was hat Dropbox während ihrer S3-Tage gemacht?
amazon-web-services
amazon-s3
scalability
BurnDownTheIgloo
quelle
quelle
Antworten:
Sie brauchen definitiv keinen Eimer für jeden Benutzer. Vergessen Sie nicht die Tatsache, dass es sehr unwahrscheinlich erscheint, dass der AWS-Support einer Anforderung zustimmt, um das Standardlimit für das Gesamtvolumen Ihres Kontos von 100 auf 300.000.000 zu erhöhen. Die erste Bucket-Erstellung soll nicht aggressiv oder in Echtzeit erfolgen.
Entwerfen Sie Ihre Anwendung so, dass es egal ist, ob Sie einen oder mehrere Bucket verwenden. Wie? Speichern Sie für jeden Benutzer die bucket_id, in der die Daten dieses Benutzers gespeichert sind. Beginnen Sie dann mit allen in bucket_id 1 und haben Sie später die Flexibilität, neue Benutzer in neue Buckets zu setzen, wenn dies erforderlich wird ... oder wenn Sie sich entscheiden, einige Benutzer auf andere Buckets zu migrieren ... Lagerung in einem Eimer näher am typischen Standort des Benutzers.
S3 skaliert seine Kapazität automatisch, um die Anforderungen Ihres Datenverkehrs zu erfüllen. Sie können diesen Prozess vereinfachen, indem Sie die Pfade zu Ihren Objekten so gestalten, dass eine nicht sequentielle Zuweisung von Objektschlüsseln in der Nähe der linken Seite der Taste erfolgt.
S3 skaliert seine Kapazität durch Aufteilen der Indexpartitionen. Wenn Sie beispielsweise jedem Objekt einen Pfad geben, der mit dem Datum des Uploads beginnt, wäre dies eine wirklich schlechte Idee, da Ihr Bucket-Index einen Hotspot mit starken Uploads in einem kleinen Teil von der Schlüsselraum.
Sehen http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html
Aus demselben Grund sollten Sie Ihren Buckets keine lexikalisch sequentiellen Namen in einer Region geben.
Was Dropbox getan hat, ist wahrscheinlich nicht relevant.
quelle