Come faccio a caricamento collettivo a s3?
-
21-08-2019 - |
Domanda
Recentemente ho refactoring po 'del mio codice per le righe roba in un db usando 'i dati di carico' e funziona benissimo - tuttavia per ogni record che ho devo caricare i file su 2 S3 - questo distrugge totalmente il magnifico aggiornamento velocità mi era ottenere. Mentre ero in grado di elaborare 600+ di questi documenti / seconda ora sono gocciolando in in 1 / secondo a causa di s3.
Quali sono i tuoi soluzioni per questo? Guardando l'API vedo che è per lo più RESTful, quindi non sono sicuro di cosa fare - forse dovrei solo bastone tutto questo nel database. I file di testo sono di solito non più di 1.5k. (L'altro file che roba lì è una rappresentazione XML del testo)
I già cache di questi file in richieste HTTP al mio server web in quanto sono utilizzati un bel po '.
A proposito: la nostra attuale implementazione utilizza Java; Non ho ancora provato le discussioni, ma che potrebbe essere un'opzione
Raccomandazioni?
Soluzione
È possibile utilizzare il [putObjects
] [1] la funzione di Jets3t per caricare più file in una sola volta.
In alternativa è possibile utilizzare un thread in background per caricare S3 da una coda, e aggiungere i file alla coda dal codice che carica i dati nel database.
[1]: http://jets3t.s3.amazonaws.com/api/org/jets3t/service/multithread/S3ServiceMulti.html#putObjects (org.jets3t.service.model.S3Bucket , org. jets3t.service.model.S3Object [])
Altri suggerimenti
Ho appena trovato una bella soluzione per caricare un'intera directory con php :
$client->uploadDirectory(
SOURCE_FOLDER,
YOUR_BUCKET_NAME,
DESTINATION,
array(
'concurrency' => 5,
'debug' => TRUE,
'force' => FALSE,
'params' => array(
'ServerSideEncryption' => 'AES256',
),
)
);