Nein, es gibt kein Wundermittel.
(Nebenbei bemerkt muss man feststellen, dass es in S3 kein "Verzeichnis" gibt. Es gibt nur Objekte mit Pfaden. Sie können Verzeichnis-ähnliche Listen erhalten, aber das '/' Zeichen ist nicht ' t magic - Sie können Präfixe mit jedem Zeichen erhalten, das Sie wollen.)
Wie jemand darauf hingewiesen hat, kann "pre-zipping" ihnen helfen, sowohl Geschwindigkeit und Append-Geschwindigkeit herunterladen. (Auf Kosten von doppeltem Speicher.)
Wenn das Herunterladen der Engpass ist, klingt es so, als würden Sie seriell herunterladen. S3 kann 1000 gleichzeitige Verbindungen mit demselben Objekt unterstützen, ohne ins Schwitzen zu kommen. Sie müssen Benchmarks ausführen, um zu sehen, wie viele Verbindungen am besten sind, da zu viele Verbindungen aus einer Box von S3 gedrosselt werden. Und Sie müssen möglicherweise einige TCP tuning tun, wenn 1000 Verbindungen pro Sekunde.
Die "Lösung" hängt stark von Ihren Datenzugriffsmustern ab. Versuchen Sie, das Problem neu zu arrangieren. Wenn Ihre Einzeldatei-Downloads selten sind, ist es möglicherweise sinnvoller, sie zu 100 in S3 zu gruppieren und sie dann bei Bedarf zu trennen. Wenn es sich um kleine Dateien handelt, kann es sinnvoll sein, sie im Dateisystem zwischenzuspeichern.
Oder es könnte sinnvoll sein, alle 5000 Dateien als eine große Zip-Datei in S3 zu speichern und einen "Smart Client" zu verwenden, der bestimmte Bereiche der Zip-Datei herunterladen kann, um die einzelnen Dateien zu bedienen. (S3 unterstützt Byte-Bereiche, wie ich mich erinnere.)
http://www.w2lessons.com/2012/01/fast-zipping-in-amazon-s3.html –
Ich sah das, aber es erfordert immer noch herunterladen Datei einzeln auf ec2, das ist derzeit unser Engpass – Jin