Domanda

Sono un programmatore Java e non ho molta familiarità con il funzionamento delle reti (oltre alle connessioni UDP / TCP di base)

Supponi di avere server in esecuzione su macchine negli Stati Uniti, in Asia, in America Latina e in Europa. Quando un utente richiede un servizio, voglio che la sua richiesta vada al server più vicino a loro.

È possibile avere un indirizzo: mycompany.com e in qualche modo ricevere richieste indirizzate al server appropriato? Apparentemente quando qualcuno va su cnn.com, riceve le foto, i video, ecc. Da un server vicino a loro. Francamente, non vedo come funziona.

A proposito, i miei server non servono pagine web, servono altri servizi come i dati di borsa ... nel caso in cui ciò sia pertinente.

Dato che sono un programmatore, sono interessato a sapere come si farebbe nel software. Dal momento che questo è poco più di una curiosità oziosa, i puntatori a prodotti o servizi commerciali non saranno molto utili per comprendere questo problema :)

È stato utile?

Soluzione

Un approccio semplice sarebbe quello di esaminare il primo byte (Classe A) dell'indirizzo IP che entra nella richiesta DNS UDP e quindi basarsi sul fatto che si potrebbe fornire l'IP corretto.

Altri suggerimenti

Un altro approccio sarebbe un po 'più complicato. Invece di utilizzare il server geograficamente più vicino all'utente, è possibile utilizzare il server con la latenza più bassa per quell'utente.

La latenza più bassa fornirà velocità di trasferimento più elevate pur essendo più facile da calcolare rispetto alla posizione geografica.

Per un aspetto molto più dettagliato, dai un'occhiata a questo articolo sui CDN (fai attenzione alla sezione Tecnologia):

Rete di distribuzione dei contenuti - Wikipedia

Questi sono i tipi di reti che i grandi siti usano per distribuire i loro contenuti in rete (Akamai è un esempio popolare). Come puoi vedere, le cose possono complicarsi abbastanza rapidamente con i CDN che hanno i loro protocolli proprietari, ecc ...

Aggiornamento: non ho visto il disclaimer sulle soluzioni commerciali alla fine del post originale. Lo lascio a coloro che potrebbero trovarlo di interesse.

-

Dai un'occhiata a http://ultradns.com/ . Una gestione Un servizio DNS del genere potrebbe essere proprio ciò di cui hai bisogno per realizzare ciò che stai cercando.

Amazon.com, Forbes.com, Oracle, li usano tutti ...

Citazione da http://ultradns.com/solutions/traffic.html :

  

La soluzione UltraDNS Traffic Management fornisce una serie di strumenti che consentono agli amministratori IT di definire configurazioni di bilanciamento del carico per i server di contenuti che risiedono in una o più posizioni geografiche. Traffic Management Solution gestisce il traffico diretto ai server modificando dinamicamente le risposte alle richieste DNS. Il bilanciamento del carico viene eseguito in base a metriche dinamiche ottenute dai server host su una base di monitoraggio continuo. La soluzione di gestione del traffico UltraDNS non è una singola applicazione, ma combina le capacità di numerosi sistemi UltraDNS esistenti per controllare il traffico, gestire gli errori del sito e ottimizzare i sistemi di contenuti Web.

Un approccio è, come menzionato Jeff, utilizzando l'indirizzo IP: http: //en.wikipedia. org / wiki / Geolocation_software

Nella mia esperienza, questo è preciso per la città relativamente grande più vicina (almeno negli Stati Uniti). Ci sono diversi database aperti per aiutare in questo (vedi il link wiki). Quindi è possibile generare tag immagine e collegamenti per il download e simili in base a queste informazioni.

Per quanto riguarda l'individuazione del server più vicino, sono sicuro che puoi pensare ad alcuni modi per farlo. Ad esempio, se il miglior rendimento che puoi ottenere è la città principale, puoi cercare quella città in un elenco di Latitudine / Longitudine e calcolare il server più vicino in base a quello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top