Sto cercando di convertire una grande directory di immagini ad alta risoluzione (diversi milioni) in miniature usando Python. Ho una tabella DynamoDB che memorizza la posizione di ogni immagine in S3.Scrivere una coda distribuita in DynamoDB di Amazon
Invece di elaborare tutte queste immagini su un'istanza EC2 (ci vorranno settimane) mi piacerebbe scrivere un'applicazione distribuita utilizzando un gruppo di istanze.
Quali tecniche è possibile utilizzare per scrivere una coda che consentirebbe a un nodo di "estrarre" un'immagine dal database, ridimensionarla e aggiornare il database con le nuove dimensioni delle anteprime generate?
In particolare sono preoccupato per l'atomicità e la concorrenza - come impedire a due nodi di eseguire contemporaneamente lo stesso lavoro con DynamoDB?
DynamoDB è lo strumento sbagliato per il lavoro. Il processo è molto semplice con SQS. 1.DynamoDB = LargeImageLocations> SQS; SQS = Processo> n * EC2 = UpdateLocation> DynamoDB –
La frase "SQS ha un meccanismo incorporato per impedire a più istanze di leggere lo stesso messaggio" è un po 'fuorviante. Non esiste una garanzia "una sola volta". Vedo che descrivi una soluzione di chiusura con DynamoDB, ma rimuovi la dichiarazione precedente. –
Si noti che SQS non è conforme a HIPAA, quindi quello che nstehr suggerisce potrebbe essere una soluzione molto valida se non si è autorizzati a memorizzare determinate informazioni nel messaggio SQS stesso. –