Nie, nie ma magicznej kuli.
(Odkładając na bok, musisz zdać sobie sprawę, że nie ma czegoś takiego jak "katalog" w S3, istnieją tylko obiekty ze ścieżkami, możesz uzyskać katalogowe aukcje, ale znak "/" nie jest " t magic - możesz uzyskać prefiksy dowolną postacią.)
Jak ktoś zauważył, "wstępne zipowanie" ich może pomóc zarówno w zwiększeniu prędkości, jak i przyspieszeniu. (Kosztem duplikowania pamięci).
Jeśli pobieranie jest wąskie gardło, to brzmi jak pobieranie jest szeregowe. S3 może obsługiwać 1000-tych jednoczesnych połączeń z tym samym obiektem bez przerywania potu. Będziesz musiał uruchomić testy porównawcze, aby sprawdzić, ile połączeń jest najlepsze, ponieważ zbyt wiele połączeń z jednej skrzynki może zostać zdławione przez S3. I może być konieczne wykonanie pewnych TCP tuning podczas wykonywania 1000 połączeń na sekundę.
"Rozwiązanie" zależy w dużej mierze od wzorców dostępu do danych. Spróbuj ponownie uporządkować problem. Jeśli pliki do pobrania pojedynczego pliku są rzadkie, bardziej sensowne może być zgrupowanie ich po 100 na raz w S3, a następnie podzielenie ich na żądanie. Jeśli są to małe pliki, może być sens buforowanie ich w systemie plików.
Może być sensem przechowywanie wszystkich 5000 plików jako jednego dużego pliku zip w S3 i używanie "inteligentnego klienta", który będzie mógł pobierać określone zakresy pliku zip, aby wyświetlać poszczególne pliki. (S3 obsługuje bajty, jak pamiętam.)
http://www.w2lessons.com/2012/01/fast-zipping-in-amazon-s3.html –
Widziałem to, ale nadal wymaga pobrania każdego plik indywidualnie na ec2, który jest obecnie naszym wąskim gardłem. – Jin