In dielde rûngeande proxy-kiezer yn Go
Hâld in Go proxy-kiezer libben tusken oanfragen, beskermje de dielde karbestân en ûnderskied it kiezen fan in rûte fan it observearjen fan har útgong.
In kiezer kin perfekt rûngean en dochs altyd de earste proxy kieze. De flater is dat der by ûngelok foar elke oanfraach in nije kiezer makke wurdt, dy’t syn teller weromset ear’t er in twadde kar hat.
Bou de kiezer ien kear en hâld him by it transport. De HTTP-proxylist kin publike HTTP-kandidaten leverje foar de URL-set as de oanfragen publike tuskenlju tastean. Begjin mei in al falidearre, net-lege list fan proxy-URL’s:
func rotatingProxy(urls []*url.URL) func(*http.Request) (*url.URL, error) {
var mu sync.Mutex
next := 0
return func(*http.Request) (*url.URL, error) {
mu.Lock()
selected := urls[next]
next = (next + 1) % len(urls)
mu.Unlock()
return selected, nil
}
}
De omlizzende applikaasje moat in lege list ôfwize, de URL’s falidearje en de normale ymporten net/http, net/url en sync brûke. De list moat ûnferoarlik bliuwe wylst dizze kiezer har brûkt, of ferfongen wurde troch in apart syngronisearre ûntwerp.
Hingje de weromjûne funksje oan ien behâlde http.Transport. De mutex beskermet de karsekwinsje oer konkurrintende ôfroppen. It freget net dat in slot fêsthâlden wurdt wylst in stadige netwurkoanfraach foltôget.
Ferbrûk in rûte net allinnich om har te printsjen
It wer oanroppen fan de kiezer foar in diagnostyske berjocht set de teller wer foarût. Dy útfier beskriuwt miskien de folgjende kandidaat yn stee fan de kandidaat dy’t brûkt is troch de oanfraach dy’t jo ûndersykje. Registrearje de kar binnen de echte ôfrop mei in feilich einpunt-identifikaasje.
It oanroppen fan in ôfrop is gjin bewiis dat in oanfraach mei súkses ôflevere is. Omliedings as ekstra transportpogingen kinne in ienfâldige oanname fan „ien applikaasje-oprop, ien kar“ bemoeilijkje. As in wurkstream ien rûte troch ferskate operaasjes hâlde moat, kies dy rûte dan op de grins fan de wurkstream yn plak fan in globale rûngeande ôfrop te brûken.
Rûngean ûnthjit ek gjin ûnderskate publike útgongen. It pland einpunten. De definitive identiteit bliuwt in eigenskip fan it paad dat elk einpunt leveret.