Selettur jista’ jdur perfettament u xorta jibqa’ jagħżel l-ewwel proxy. L-iżball huwa li jinħoloq selettur ġdid b’mod aċċidentali għal kull talba, li jġib lura l-counter tiegħu qabel ma jkollu t-tieni għażla.

Ibni s-selettur darba u żommu mat-transport. Il-lista tal-proxy HTTP tista’ tipprovdi kandidati HTTP pubbliċi għas-sett ta’ URL meta t-talbiet jippermettu intermedjarji pubbliċi. Ibda b’lista ta’ URL tal-proxy diġà vvalidata u mhux vojta:

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
    }
}

L-applikazzjoni li tħaddanha trid tirrifjuta lista vojta, tivvalida l-URL u tuża l-importazzjonijiet normali net/http, net/url u sync. Il-lista għandha tibqa’ mhux modifikabbli waqt li dan is-selettur jużaha, jew tiġi sostitwita permezz ta’ disinn sinkronizzat separatament.

Waħħal il-funzjoni rritornata ma’ http.Transport wieħed miżmum. Il-mutex jipproteġi s-sekwenza tal-għażla bejn sejħiet lura konkorrenti. Ma jitlobx li tinżamm lock waqt li talba tan-netwerk bil-mod tkun qed titlesta.

Tiħux rotta biss biex tipprintjaha

Sejħa oħra lis-selettur għal messaġġ dijanjostiku tressaq il-counter mill-ġdid. Dak l-output jista’ jiddeskrivi l-kandidat li jmiss minflok il-kandidat li użat it-talba li qed tinvestiga. Irreġistra l-għażla ġewwa s-sejħa lura vera b’identifikatur tal-punt tat-tmiem sigur.

Sejħa lura mhijiex prova li talba ntbagħtet b’suċċess. Direzzjonijiet mill-ġdid jew tentattivi ta’ transport addizzjonali jistgħu jikkumplikaw suppożizzjoni sempliċi “sejħa waħda tal-applikazzjoni, għażla waħda”. Jekk fluss tax-xogħol irid iżomm rotta waħda matul diversi operazzjonijiet, agħżel dik ir-rotta fil-fruntiera tal-fluss tax-xogħol minflok ma tuża sejħa lura li ddur globalment.

Ir-round-robin lanqas ma jwiegħed ħruġ pubbliċi distinti. Huwa jiskeda punti tat-tmiem. L-identità finali tibqa’ proprjetà tat-triq li tipprovdi kull punt tat-tmiem.

Artikli relatati