Come può una lingua lato server estendersi su molti server?

5

Vorrei chiederti come esperti su PHP, ASP.NET/C#, Python o qualsiasi altra lingua lato server.

Come si estendono su più server? Quando vedo un grande sito Web e guardo quanti server dedicati utilizza, almeno utilizza 10 server. Mi siedo e penso a come la langauge che è stata usata nella costruzione di questo sito si estenda su questi server? C'è qualcosa nel linguaggio stesso o nella sua architettura che lo rende in grado di andare con questo e c'è un linguaggio migliore di altri in questo?

Modifica: ma vedo molti siti basati su ASP.NET e PHP che si trovano su molti server, in questo caso come può lo stesso sito programmato essere sul server 1, sul server 2, ecc. Il server 1 contiene alcune funzionalità ad esempio e Server 2 ne contiene altre? Oppure progrmano il sito e la società di hosting fa l'equilibrio tra questi server?

    
posta Alison 05.08.2011 - 13:41
fonte

4 risposte

7

In generale, la lingua non ha un concetto di server multipli. Funziona in isolamento sul suo server. Il fatto che ci siano più istanze non è generalmente considerato a livello linguistico.

È un po 'come il personale di cassa in un supermercato, ognuno fa il proprio lavoro. Non è necessario considerare se ci sono altri membri dello staff o interagire con loro.

La questione di come indirizzare traffico / clienti verso macchine diverse è nell'architettura.

Modifica per indirizzare la domanda riveduta:

Ora stai facendo una domanda molto più grande. Non esiste una risposta adatta, tuttavia ti do un esempio di configurazione comune con php.

Diciamo che abbiamo un sito Web php che deve consentire una funzione di login e una funzione di visualizzazione dei feed rss.

Potremmo avere tutti i server come php generale e tutti eseguono la visualizzazione di login e rss.

In alternativa, potremmo assegnare 5 server per l'accesso e 5 per la visualizzazione.

Ci sono un miliardo di domande / problemi che ci aiutano a decidere come dividere l'architettura.

Nell'esempio sopra, sarebbe normale che l'accesso avvenga tramite HTTPS, ma la visualizzazione RSS non deve essere eseguita tramite HTTPS.

I server HTTPS hanno un utilizzo delle risorse più elevato del non, quindi potrebbe essere sensato dividere le funzioni HTTPS (login) da HTTP (visualizza rss)

Inoltre, suddividere il contenuto statico, ad es. I file CSS, le immagini lontano da PHP sono spesso utili. È possibile configurare i server in modo che siano molto utili per la pubblicazione di file statici lasciando i server php predisposti per il php.

Ora abbiamo uno scenario con un gruppo di server che gestiscono accessi HTTPS, visualizzazione HTTP e un terzo gruppo che ospita i nostri css, immagini, javascript, ecc.

C'è molto di più su questo argomento, ma c'è molto materiale da leggere - google per ridimensionare le applicazioni o cercare discussioni da Facebook, ecc., che danno informazioni su come lo fanno (fino ad un certo livello).

    
risposta data 05.08.2011 - 13:52
fonte
4

La parola chiave è bilanciamento del carico qui. Alcuni linguaggi come Java offrono un supporto speciale per questo. Una buona introduzione multiparte da un punto di vista Java può essere trovata qui .

    
risposta data 05.08.2011 - 13:51
fonte
3

Costruire tali siti è essenzialmente programmazione distribuita e una delle poche lingue che supportano questo concetto di base è Erlang.

    
risposta data 05.08.2011 - 14:03
fonte
2

Ci sono diversi modi fondamentali per farlo, nessuno di questi richiede un supporto speciale a livello di lingua:

1) Tutti i server possono fare tutto ciò che deve essere fatto. Un utente viene assegnato a un server in modo casuale, in base al server più vicino a lui in rete o in base al carico. Ogni server fa il proprio lavoro senza preoccuparsi che un sacco di altri server stiano facendo la stessa cosa. I server possono accedere a un database comune.

2) I server svolgono compiti completamente diversi. Un server può contenere immagini statiche. Un altro server può contenere feed RSS. Un altro server potrebbe memorizzare le informazioni dell'account. Una pagina Web può contenere bit e parti assemblati provenienti da diversi server e inviare un modulo a qualche altro server. Un altro server potrebbe gestire la posta elettronica.

3) I server eseguono lo stesso tipo di lavoro, ma dividono lo spazio delle attività. Ad esempio, un sito di notizie potrebbe avere cinque server Web, uno per le notizie internazionali, uno per le notizie locali, uno per le previsioni meteorologiche e così via.

4) I server usano un approccio a catena di montaggio. Un server front-end potrebbe ricevere richieste Web, confermare che sono valide e selezionare un server di secondo livello. Il server di secondo livello potrebbe registrare la richiesta e capire quale server di terzo livello gestisce i dati che l'utente sta cercando. Il server di terzo livello raccoglie i dati, eventualmente utilizzando un database, e li restituisce al server di secondo livello. Il server di secondo livello crea HTML o XML o qualsiasi cosa l'utente richieda e lo restituisce al server di primo livello.

    
risposta data 13.08.2011 - 15:44
fonte

Leggi altre domande sui tag