Qual è il modo migliore per eseguire caricamenti di file scalabili orizzontalmente?

0

In generale, in che modo i siti Web gestiscono i caricamenti di file quando vengono ridimensionati orizzontalmente? Ovviamente se si dispone di un servizio di bilanciamento del carico su 10 server delle applicazioni e ciascun server delle applicazioni salva un caricamento sul proprio file system, alcuni file finiranno per restituire un 404 a seconda del server applicativo con cui il bilanciamento del carico vi accoppia.

Ho pensato che forse stavo creando un server TCP che servisse e caricasse i file da e verso una directory, ma entrambi sembravano eccessivi e questo non funzionerebbe per file di grandi dimensioni dal momento che il server dell'app dovrà attendere l'intera risposta TCP a entrare prima di inviare la propria risposta al browser, con conseguenti carichi incredibilmente lenti per l'utente.

Un altro pensiero che ho avuto è stato il proxy della richiesta HTTP agli altri server delle app se quella originariamente richiesta non è presente nel proprio file system, anche se non ero sicuro se questo avrebbe avuto lo stesso grosso problema di file di un File server basato su TCP o se esistesse una soluzione migliore e più standard.

Non ho una situazione specifica per la quale ho bisogno di usare questo, stavo pensando concettualmente a come questo sarebbe stato gestito in un ambiente che ha richieste di scalabilità elevate.

    
posta Danny M 26.04.2017 - 06:34
fonte

1 risposta

3

NFS o un altro protocollo di condivisione del filesystem funziona bene qui. Quello che potresti fare è distribuire un server dedicato alla condivisione di un array di dischi ad alta velocità tramite NFS. Quindi ciascun server nel pool di bilanciamento del carico monterà quella condivisione NFS e scriverà il file caricato su di esso. In questo modo, non importa quale server applicativo gestisce il caricamento. Ogni server sarà in grado di leggere un file caricato da qualsiasi server.

Un problema da evitare è la collisione del nome file, quindi assicurati di disporre di un meccanismo per assegnare un nome un file in modo univoco su tutti i server.

Spero che questo aiuti.

    
risposta data 26.04.2017 - 08:21
fonte

Leggi altre domande sui tag