Qual è la considerazione hardware e software che un sito web importnte richiede per gestire correttamente i server di 1000+?

Mi dispiace per una domanda così alta. Capisco le basi del bilanciamento del carico del server, ma il concetto di gestione di 30.000 server è un po 'estraneo a me. È davvero lo stesso concetto di bilanciamento di 2 o 3 server aumentato di 10.000 volte?

Come si riferisce a cose come memcached, sql / mysql, motori di ricerca, ecc?

È un sistema di heirarchy per avere server 'controller' e server slave che forniscono i dati basati su questo? Come viene gestita la ridondanza?

Grazie per qualsiasi informazione o direzione per un articolo sulla questione.

EDIT Grazie per le risposte ragazzi. Il mio post è stato chiuso, ma ho rivisto il titolo, spero che sarà riaperto in quanto ritengo che il process di risoluzione dei problemi coinvolti con queste soluzioni di dati di alto livello superiori sia affascinante e attualmente creo un api che richiederà un carico di base equilibrando, quindi la domanda.

  • Se i server ridondanti hanno la stessa configuration, o leggermente diversi?
  • Fornire alta disponibilità e failover utilizzando MySQL su EC2
  • Valutazione degli errori ECC non corretta e dei methods fallback
  • Puoi impostare un IP di backup per il tuo server in DNS?
  • Eliminare il singolo punto di errore per i webserver?
  • Aggiornamento del software del server senza periodo di blackout
  • Connessioni di networking ridondanti per il sito web
  • "Hot data" e codifica di cancellazione: come sapere se è gestita in modo efficiente?
  • 3 Solutions collect form web for “Qual è la considerazione hardware e software che un sito web importnte richiede per gestire correttamente i server di 1000+?”

    La maggior parte dello stack software utilizzato da Google sui server è stata sviluppata in-house. Per ridurre gli effetti di un guasto hardware inevitabile, il software è progettato per essere tollerante ai guasti.

    Fonte: Google Platform

    Dopo aver letto l'articolo, immagino che sia lo stesso concetto di bilanciare il carico tra pochi server scalati fino a 1000+ server usando la pila di software interna sviluppata in casa su Linux. ad esempio GFS (Google File System), BigTable – Sistema di archiviazione strutturato costruito su GFS

    Questo collegamento descrive come bilanciare il carico di networking.

    Utilizzano gli interruttori di bilanciamento del carico per distribuire il carico. Tutte le richieste per il sito Web arrivano a una macchina che passa la richiesta a uno dei server disponibili. L'interruttore può scoprire dai server che uno è less caricato, in modo che tutti stanno facendo una quantità uguale di lavoro.

    La topologia di networking di Google è la seguente:

    Quando un computer client tenta di connettersi a Google, diversi server DNS risolvono http://www.google.com in più indirizzi IP tramite la politica di Round Robin. Inoltre, questo funge da primo livello di bilanciamento del carico e dirige il client a diversi cluster Google. Un cluster di Google dispone di migliaia di server e una volta che il client è connesso al server, aggiusta il bilanciamento del carico per submit le query al server web less caricato.

    La grande parte qui è, se il software non è progettato per scalare, come può? Ad esempio, una delle restrizioni più grandi di Facebook adesso è la loro dipendenza da MySQL: sono state capaci di aggirare il problema lanciando sempre più macchine, ma il proprio tecnico lo chiama "un destino peggiore della morte".

    In genere, è necessario essere in grado di caricare le richieste di bilanciamento – e sono progettati molti progetti, open source o altro. Ma questo viene fornito con overhead, inclusi scrittura di registri, scrittura ritardata e architetture "eventualmente coerenti". In altre parole, la scalatura non viene a buon mercato.

    Così le cose come i server web, che servono i contenuti statici, possono essere facilmente paralleli. I sisthemes memorizzati e gli altri sisthemes di memorizzazione sono facilmente bilanciati. Ma come puoi cambiare singoli punti di fallimenti? Come funziona la tua scala di database singola, grande e relazionale? Che cosa circa archivi di file? In sostanza, questo è un integer branch di ricerca … non qualcosa che può essere risposto da una singola domanda.

    Penso che gli stessi concetti dovrebbero essere gli stessi e il punto critico è come distribuire il carico e i dati tra le risorse disponibili e come individuare i tuoi dati.

    Un modo è la distribuzione geografica dei server. Ogni utente verrà indirizzato al server più vicino.

    Un servizio di registro può essere utilizzato per ricercare i dati richiesti.

    Pensate all'esecuzione del servizio DNS. Dispone di un database molto distribuito. I nodes di origine dirigono gli utenti ad altri nodes di livello inferiore e così via fino a raggiungere il nodo responsabile in grado di rispondere alla tua query.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.