Selezziunà i nodi più vicini in a reta

Selezziunà i nodi più vicini in a reta

A latenza di a rete hà un impattu significativu nantu à u rendiment di l'applicazioni o servizii chì interagiscenu cù a reta. Più bassa hè a latenza, più altu hè u rendiment. Questu hè veru per qualsiasi serviziu di rete, da un situ web regulare à una basa di dati o almacenamentu in rete.

Un bon esempiu hè u Sistema di Nomi di Dominiu (DNS). DNS hè per natura un sistema distribuitu, cù nodi radicali spargugliati in u pianeta. Per accede à qualsiasi situ web, avete prima bisognu di ottene u so indirizzu IP.

Ùn scriveraghju micca tuttu u prucessu di passà in recursively à traversu l'"arbre" di e zoni di duminiu, ma mi limiteraghju à u fattu chì per cunvertisce un duminiu in un indirizzu IP, avemu bisognu di un resolutore DNS chì farà tuttu stu travagliu per noi.

Allora, induve uttene l'indirizzu di risolve DNS?

  1. L'ISP furnisce l'indirizzu di u so resolutore DNS.
  2. Truvate l'indirizzu di un resolutore publicu in Internet.
  3. Pigliate u vostru propiu o aduprate quellu integratu in u vostru router di casa.

Qualchese di queste opzioni vi permetterà di gode di una navigazione senza preoccupazione in u World Wide Web, ma s'ellu avete bisognu di cunvertisce un gran numaru di domini in IP, allora duvete avvicinà l'scelta di un resolutore più currettamente.

Cum'è aghju scrittu, in più di u resolutore ISP, ci sò assai indirizzi publichi, per esempiu, pudete verificà sta lista. Qualchidunu di elli ponu esse assai più preferiti perchè anu una cunnessione di rete megliu cà u resolutore predeterminatu.

Quandu a lista hè chjuca, pudete facilmente "ping" manualmente è paragunate i tempi di ritardu, ma ancu s'ellu pigliate a lista citata sopra, questu compitu diventa spiacevoli.

Dunque, per fà stu compitu più faciule, eiu, pienu di sindromu di l'impostore, hà abbozzatu una prova di cuncettu di a mo idea in Go chjamata avvicinassi.

Per esempiu, ùn aghju micca cuntrollà a lista sana di risolve, ma mi limiteraghju solu à i più populari.

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Closest hosts:
	1.0.0.1 [3.4582ms]
	8.8.8.8 [6.7545ms]
	1.1.1.1 [12.6773ms]
	8.8.4.4 [16.6361ms]
	9.9.9.9 [40.0525ms]

À un tempu, quandu aghju sceltu un risolve per mè stessu, mi limitò à verificà solu l'indirizzi principali (1.1.1.1, 8.8.8.8, 9.9.9.9) - dopu tuttu, sò cusì belli, è ciò chì pudete aspittà da brutti indirizzi di salvezza.

Ma postu chì ci hè un modu automatizatu per paragunà i ritardi, perchè micca espansione a lista...

Cum'è a prova hà dimustratu, l'indirizzu "backup" di Cloudflare hè più adattatu per mè, postu chì hè cunnessu in spb-ix, chì hè assai più vicinu à mè cà msk-ix, chì hà a bella 1.1.1.1 inserita in questu.

A diferenza, cum'è pudete vede, hè significativa, perchè ancu u raghju di luce più veloce ùn pò micca ghjunghje da San Petruburgu à Mosca in menu di 10 ms.

In più di u ping simplice, PoC hà ancu l'uppurtunità di paragunà i ritardi per altri protokolli, cum'è http è tcp, è ancu u tempu per cunvertisce domini à IP per mezu di un resolutore specificu.

Ci sò piani di paragunà u numeru di nodi trà l'ospiti chì utilizanu traceroute per fà più faciule per truvà l'ospiti chì anu una strada più corta per elli.

U codice hè crudu, ùn manca una mansa di cuntrolli, ma funziona abbastanza bè nantu à dati puliti. Aghju apprezzatu ogni feedback, stelle nantu github, è se qualchissia hà piaciutu l'idea di u prugettu, allora benvenutu per diventà un cuntributore.

Source: www.habr.com

Add a comment