Wir haben ein Büro, in dem die Nachfrage nach Zugriff auf große Dateien aus unseren eigenen Amazon S3-Verzeichnissen steigt. Der schnelle Zugriff darauf ist für unser Unternehmen wichtig. Wir sind daher der Meinung, dass es an der Zeit ist, Kopien der Dateien vor Ort aufzubewahren. Dies ist nicht mein Fachgebiet, daher hoffe ich auf einen Rat.
Ein "normaler" Cache allein reicht für uns nicht aus, da wir bereits die erste Anforderung für eine bestimmte Datei beschleunigen möchten. Die AWS-CLI bietet die Möglichkeit, ein lokales Verzeichnis mit S3 synchron zu halten. Daher besteht eine Idee darin, dieses Verzeichnis in Zeiten mit geringem Datenverkehr nach einem Zeitplan auszuführen und dann einen Proxy zu konfigurieren, der dieses Verzeichnis als Cache behandelt, sofern dies möglich ist.
Eine andere Idee besteht darin, Abrufanforderungen von einem Skript an einen Caching-Proxy zu senden, um den Cache nach einem ähnlichen Zeitplan warm zu halten.
Eine Einschränkung ist, dass die S3-Assets privat sind. Daher signieren wir ihre URLs, bevor wir jede Anfrage stellen. Dies bedeutet, dass der Proxy in der Lage sein muss, die lokale Kopie basierend auf der URL ohne Abfrageparameter bereitzustellen. Beispielsweise sollten beide URLs in dieselbe zwischengespeicherte / gespiegelte Datei aufgelöst werden:
https://example.com/asset1.txt?signature=1https://example.com/asset1.txt?signature=2
Die Größe des Caches liegt im einstelligen Terabyte und verarbeitet den Datenverkehr für etwa 300 aktive Benutzer.
Also endlich meine Fragen:
- Klingt einer dieser Ansätze vernünftig?
- Kann jemand Proxy-Software empfehlen, die so konfiguriert werden kann, wie wir es brauchen?
- Gibt es Ressourcen, die ich konsultieren kann, um die Hardwareanforderungen für diese Last zu ermitteln?
- Irgendwelche anderen Gedanken / Vorschläge?