Memorizzazione di immagini / file caricati dall'utente in ambiente multi server

1

In un sistema multi server, ad es. un servizio di bilanciamento del carico, più server Web e un server di database, dove memorizzi i file / le immagini che gli utenti caricano quando ogni web server avrà bisogno di accesso?

Prima d'ora ho appena usato un singolo server web, o forse un server web e un server di database MySQL. Ma se hai più server web, suppongo tu abbia una serie di opzioni per assicurarti che risorse come immagini e altri file utente siano condivisi, come ad esempio:

  • Archiviandoli sul server database
  • o un server specifico per loro
  • Forse montando la stessa directory
  • O utilizzando uno strumento come rsync per sincronizzare le directory di upload degli utenti su ciascun server web

O forse hai una soluzione diversa? o c'è un modo de facto per farlo di cui non sono a conoscenza?

    
posta stilliard 18.02.2014 - 13:58
fonte

1 risposta

3

Prenderò in considerazione alcune opzioni, in base a diversi fattori:

  • Se non si tratta di un volume enorme di immagini, un singolo file server accessibile da tutti i server Web è il percorso più semplice.

  • Se le immagini sono molto piccole (molto meno di un megabyte ...), è possibile prendere in considerazione una memoria a valore chiave. (ma nota che un file system è un valore-chiave grande ed efficiente quando i valori sono più di pochi kilobyte)

  • Se il contenuto viene letto molto più che modificato (almeno 100 o 1000 volte più frequentemente), quindi replicato (tramite rsync o unison) può ridurre il tempo di ritardo. Ma è improbabile che questo vantaggio sia significativo. Un fileserver è ancora un'ottima opzione.

  • Se la quantità di immagini è superiore a quella che è conveniente archiviare su un singolo server, un sistema di storage distribuito consente una crescita quasi infinita. (ceph RADOS, moosefs, glusterFS, ecc.)

risposta data 18.02.2014 - 15:44
fonte