Come reindirizzare gli utenti a server diversi in base alla loro posizione?


8

Ho un sito Web sviluppato utilizzando ASP.NET e MY DB è MySQL. Attualmente è ospitato su server USA. Ma quando provo ad accedervi vicino all'India, i contenuti dinamici si caricano troppo lentamente. È accettabile poiché la richiesta deve andare in un'altra parte del mondo. Negli Stati Uniti è davvero veloce. Ho già collegato questo sito con cloudflare CDN. Ma la CDN è utile per i contenuti statici. Ogni mia pagina ha quasi contenuti dinamici.

Quindi voglio ridimensionare questo sito Web. Quindi, se una richiesta proveniva dall'America, voglio gestire quella richiesta dal server USA e se una richiesta proveniva dall'ASIA, voglio che fosse gestita da un server ASIAN. Ma tieni presente che, indipendentemente da dove sono stati reindirizzati, il contenuto dovrebbe essere lo stesso su due server. (Due server dovrebbero essere sincronizzati)

Quindi, come realizzare questa architettura?

Come fanno Google, Facebook, Yahoo? Come servono in tutto il mondo? Penso che abbiano datacenter in tutti i continenti. Come si sincronizzano tra loro?

Risposte:


10

Oltre a ciò che ha risposto @ Gabriel-Talavera, aggiungerei un paio di note:

  • Il routing di rete, così come il bilanciamento del carico geografico, è totalmente estraneo alla "sincronizzazione dei dati" tra server diversi. Sono due problemi affrontati con molte tecnologie molto diverse.

Poiché il titolo della tua domanda sembra essere focalizzato sul lato della rete, mi concentrerò sulla prima parte (i problemi di routing della rete).

Come puoi vedere da solo, i requisiti sono difficili da soddisfare per le piccole aziende ICT. Ma le aziende "globali" (come quelle che hai citato nel tuo PO), non avranno problemi ad adottarlo.

Come nota a margine, la prima volta che ho sentito parlare di "anycast" è stato grazie a un post BLOG di CloudFlare , in cui hanno discusso (... tra molte altre cose), come qualsiasi anycast può anche essere adottato come contromisura a D- Attacchi DOS.


3

È possibile fornire risposte DNS selettive in base alla posizione con BIND Views se si utilizza BIND come server DNS esterno. L'anteprima tecnica della nuova versione di Windows Server ha anche una funzionalità chiamata Criteri DNS che sembra molto promettente.

Per fornire contenuti in base alla posizione del cliente e ad altri criteri come User Agent o pianificazioni, F5 ha un'appliance denominata Global Traffic Manager che utilizzata in congiunzione con i propri sistemi di bilanciamento del carico raggiunge ciò che stai cercando. In ambienti Cloud, la Route 53 di Amazon può fare lo stesso.

Per mantenere i dati sincronizzati, è necessario disporre di un back-end di archiviazione in grado di eseguire la replica sincrona o utilizzare la replica fornita da MySQL, che manterrà i dati replicati coerenti.


ma questo non funzionerà in modo affidabile se i client utilizzano server DNS diversi come Google DNS o OpenDNS.
Josef dice di reintegrare Monica l'

La replica con mysql può mostrare un ritardo significativo tra le scritture e la disponibilità dei dati per le letture. Qualcosa che ridimensiona la replica come riak o altri database nosql dovrebbe essere considerato.
pulcini,

0

Ci sono situazioni in cui vorresti avere:

  • L'integrità dei dati garantisce transazioni serializzabili.
  • I dati possono essere aggiornati dagli utenti a livello globale.
  • I dati possono essere aggiornati con bassa latenza.

Sfortunatamente la combinazione di tutto quanto sopra non è fisicamente possibile. Sarai limitato dalla velocità della luce.

Invece devi considerare i tuoi esatti requisiti. Per alcuni dati, la precisione limitata è abbastanza buona. Considera il contatore delle visualizzazioni su un video di YouTube. Alla maggior parte delle persone non importa se il contatore della vista è temporaneamente un po 'fuori. Se le visualizzazioni avvenute 10 secondi fa dall'altra parte del mondo non sono ancora incluse, ma sono incluse le visualizzazioni avvenute 5 secondi fa più vicine, è ancora abbastanza accurata. Se sei così rilassato con l'integrità del contatore delle visualizzazioni, corri il rischio che due persone diverse possano entrambi pensare di essere lo spettatore numero 100 di quel particolare video. Ma la maggior parte delle persone considererebbe il danno fatto da ciò trascurabile.

In altri casi l'integrità dei dati è più importante. Considera due persone che cercano contemporaneamente di iscriversi con lo stesso nome utente. Dire ad entrambe le persone che hanno ottenuto il nome utente non è accettabile, quindi in una situazione del genere sceglierei un approccio più lento con una migliore integrità. È accettabile dire a entrambe le persone che il nome utente è stato adottato, quindi un possibile approccio sarebbe quello di provare a riservare il nome utente su ciascuna replica e riportare il successo solo se si è riusciti su oltre il 50% delle repliche. Non è improbabile che questo approccio permetta all'utente di attendere mezzo secondo per ottenere una risposta. Ma gli utenti non affrontano questo processo abbastanza spesso da essere disturbati da quel ritardo.

In altri casi potresti aver bisogno di una buona integrità e aggiornamenti rapidi, ma solo una persona può aggiornare questo particolare dato. In tal caso, puoi inserire la copia autorevole dei dati su un server che ritieni sia vicino all'utente e consentire ad altri server di disporre di una versione cache, che è per lo più aggiornata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.