ఎంపికకర్త పరిపూర్ణంగా తిరుగుతూ కూడా మొదటి ప్రాక్సీని ఎంచుకుంటూనే ఉండవచ్చు. పొరపాటు ఏమిటంటే ప్రతి అభ్యర్థనకు అనుకోకుండా కొత్త ఎంపికకర్తను సృష్టించడం, ఇది రెండవ ఎంపిక చేయక ముందే దాని కౌంటర్ను రీసెట్ చేస్తుంది.

ఎంపికకర్తను ఒకసారి నిర్మించి రవాణాతో పాటు ఉంచండి. అభ్యర్థనలు పబ్లిక్ మధ్యవర్తులను అనుమతించినప్పుడు HTTP ప్రాక్సీ జాబితా URL సమితికి పబ్లిక్ HTTP అభ్యర్థులను అందించగలదు. ఇప్పటికే ధృవీకరించిన, ఖాళీ కాని ప్రాక్సీ URL జాబితాతో ప్రారంభించండి:

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

చుట్టూ ఉన్న అప్లికేషన్ ఖాళీ జాబితాను తిరస్కరించాలి, URLలను ధృవీకరించాలి మరియు సాధారణ net/http, net/url మరియు sync దిగుమతులను ఉపయోగించాలి. ఈ ఎంపికకర్త దాన్ని ఉపయోగిస్తున్నంతసేపు జాబితా మార్పులేనిదిగా ఉండాలి, లేదా విడిగా సింక్ చేసిన రూపకల్పన ద్వారా భర్తీ చేయాలి.

తిరిగి ఇచ్చిన ఫంక్షన్ను ఒక నిల్వ చేసిన http.Transport కు జోడించండి. Mutex ఏకకాల కాల్బ్యాక్ల మధ్య ఎంపిక క్రమాన్ని రక్షిస్తుంది. నెమ్మదిగా జరిగే నెట్వర్క్ అభ్యర్థన పూర్తవుతున్నప్పుడు లాక్ పట్టుకోవాల్సిన అవసరం లేదు.

కేవలం ముద్రించడానికి మార్గాన్ని వినియోగించవద్దు

నిర్ధారణ సందేశం కోసం ఎంపికకర్తను మళ్లీ పిలవడం కౌంటర్ను మళ్లీ ముందుకు కదిలిస్తుంది. ఆ అవుట్పుట్ మీరు పరిశోధిస్తున్న అభ్యర్థన ఉపయోగించిన అభ్యర్థి బదులు తదుపరి అభ్యర్థిని వివరించవచ్చు. నిజమైన కాల్బ్యాక్ లోపల సురక్షిత ఎండ్పాయింట్ గుర్తింపుతో ఎంపికను నమోదు చేయండి.

కాల్బ్యాక్ను పిలవడం అనేది అభ్యర్థన విజయవంతంగా పంపబడిందని రుజువు కాదు. రీడైరెక్ట్లు లేదా అదనపు రవాణా ప్రయత్నాలు “ఒక అప్లికేషన్ కాల్, ఒక ఎంపిక” అనే సరళమైన ఊహను క్లిష్టతరం చేయవచ్చు. వర్క్ఫ్లో అనేక కార్యకలాపాలలో ఒక మార్గాన్ని నిలబెట్టుకోవాల్సి ఉంటే, గ్లోబల్ తిరిగే కాల్బ్యాక్ను ఉపయోగించడం బదులు వర్క్ఫ్లో సరిహద్దులో ఆ మార్గాన్ని ఎంచుకోండి.

రౌండ్-రోబిన్ వేర్వేరు పబ్లిక్ నిష్క్రమణలను కూడా వాగ్దానం చేయదు. ఇది ఎండ్పాయింట్లను షెడ్యూల్ చేస్తుంది. తుది గుర్తింపు ప్రతి ఎండ్పాయింట్ అందించే మార్గం యొక్క లక్షణంగానే ఉంటుంది.

సంబంధిత వ్యాసాలు