Sto cercando buone pratiche o qualsiasi consiglio riguardante i meccanismi di transazione per l'accesso ai file . Avremo più istanze di un'applicazione distribuite su una rete ridondante (cloud) che guarda una directory su un NAS disponibile al 100%. Sto anche cercando un'architettura alternativa che potrebbe essere più appropriata.
- Avremo migliaia di dispositivi mobili che accedono al sistema ogni minuto. I dispositivi producono un file binario (immagine ad esempio) che viene inviato a un servizio RESTful senza trasformazione. Il dispositivo deve eseguire rapidamente il lavoro per preservare la batteria.
- Poiché il servizio RESTful deve prendere l'input il più velocemente possibile, il file binario viene attualmente scritto direttamente come file in un NAS con disponibilità al 100%.
- Se si verifica un errore (il file non viene scritto correttamente), il client viene avvisato e può riprovare.
Dobbiamo creare un servizio di lavoro che guarderà la cartella di file per i nuovi file per elaborarli. L'operatore li convertirà in un altro formato, quindi li sposta in un'altra cartella sul NAS. Utilizzeremo il maggior numero possibile di istanze per gestire il carico.
La mia preoccupazione principale riguarda l'accesso ai file. Il servizio RESTful sta scrivendo su un file temporaneo con un'estensione che il servizio worker sta ignorando (.tmp), quindi dopo che l'ultimo byte è stato scritto, il file viene rinominato. Il processo è veloce, ma non possiamo permetterci il caso in cui 2 o più servizi di lavoro accedono allo stesso file nello stesso momento.
Abbiamo bisogno di un meccanismo di transazione o di qualsiasi altro modello di architettura di entreprise.
Esiste qualche tipo di meccanismo di transazione del file system che viene ridimensionato?