Szukam przekształcenia dużego katalogu obrazów wysokiej rozdzielczości (kilka milionów) w miniatury za pomocą Pythona. Mam tabelę DynamoDB, która przechowuje położenie każdego obrazu w S3.Pisanie rozproszonej kolejki w dynamoDB firmy Amazon
Zamiast przetwarzania wszystkich tych obrazów w jednej instancji EC2 (zajęłoby to tygodnie), chciałbym napisać aplikację rozproszoną za pomocą kilku instancji.
Jakich technik można użyć do napisania kolejki, która pozwoliłaby węzłowi "sprawdzić" obraz z bazy danych, zmienić jego rozmiar i zaktualizować bazę danych o nowe wymiary wygenerowanych miniatur?
W szczególności martwię się o atomowość i współbieżność - w jaki sposób mogę uniemożliwić dwóm węzłom jednoczesne sprawdzanie tej samej pracy z DynamoDB?
DynamoDB to niewłaściwe narzędzie do pracy. Proces jest bardzo prosty w/SQS. 1.DynamoDB = LargeImageLocations> SQS; SQS = Proces> n * EC2 = UpdateLocation> DynamoDB –
Zdanie "SQS ma wbudowany mechanizm zapobiegający wielokrotnemu odczytywaniu tego samego komunikatu" jest nieco mylące. Nie ma gwarancji "tylko raz". Widzę, że opisujesz rozwiązanie blokujące z DynamoDB, ale lepiej usuń powyższe stwierdzenie. –
Należy pamiętać, że SQS nie jest zgodny z HIPAA, więc to, co sugeruje nstehr, może być bardzo realnym rozwiązaniem, jeśli nie wolno przechowywać pewnych informacji w samym komunikacie SQS. –