Go இல் பகிரப்பட்ட சுழற்சி ப்ராக்ஸி தேர்வி
Go ப்ராக்ஸி தேர்வியை கோரிக்கைகளுக்கு இடையே உயிர்ப்புடன் வைத்திருங்கள், பகிரப்பட்ட தேர்வு நிலையைப் பாதுகாத்து, ஒரு பாதையைத் தேர்ந்தெடுப்பதை அதன் வெளியேற்றத்தைக் கவனிப்பதிலிருந்து வேறுபடுத்துங்கள்.
ஒரு தேர்வி சரியாகச் சுழன்றும் முதல் ப்ராக்ஸியையே தொடர்ந்து தேர்ந்தெடுக்கலாம். தவறு என்னவென்றால், ஒவ்வொரு கோரிக்கைக்கும் தற்செயலாகப் புதிய தேர்வியை உருவாக்குவது; அது இரண்டாவது தேர்வைச் செய்வதற்கு முன்பே அதன் கணக்கியை மீட்டமைக்கிறது.
தேர்வியை ஒரே முறை உருவாக்கி, அதைப் போக்குவரத்துடன் வைத்திருங்கள். கோரிக்கைகள் பொது இடைத்தரகர்களை அனுமதிக்கும்போது 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 ஒரே நேரத்தில் நிகழும் பின்தொடர்புகளுக்கு இடையே தேர்வு வரிசையைப் பாதுகாக்கிறது. மெதுவான பிணையக் கோரிக்கை முடியும்போது பூட்டைப் பிடித்திருக்கத் தேவையில்லை.
அச்சிடுவதற்காக மட்டும் ஒரு பாதையைச் செலவழிக்க வேண்டாம்
கண்டறியும் செய்திக்காகத் தேர்வியை மீண்டும் அழைப்பது கணக்கியை மீண்டும் முன்னேற்றுகிறது. அந்த வெளியீடு நீங்கள் ஆராயும் கோரிக்கை பயன்படுத்திய வேட்பாளருக்குப் பதிலாக அடுத்த வேட்பாளரை விவரிக்கலாம். உண்மையான பின்தொடர்புக்குள் பாதுகாப்பான முனை அடையாளங்காட்டியுடன் தேர்வைப் பதிவு செய்யுங்கள்.
பின்தொடர்பை அழைப்பது ஒரு கோரிக்கை வெற்றிகரமாக வழங்கப்பட்டதற்கான சான்று அல்ல. வழிமாற்றங்கள் அல்லது கூடுதல் போக்குவரத்து முயற்சிகள் “ஒரு பயன்பாட்டு அழைப்பு, ஒரு தேர்வு” என்ற எளிய அனுமானத்தைச் சிக்கலாக்கலாம். ஒரு பணிப்பாய்வு பல செயல்பாடுகள் முழுவதும் ஒரு பாதையைத் தக்கவைக்க வேண்டுமானால், உலகளாவிய சுழலும் பின்தொடர்பைப் பயன்படுத்துவதற்குப் பதிலாக பணிப்பாய்வின் எல்லையில் அந்தப் பாதையைத் தேர்ந்தெடுங்கள்.
சுழற்சி வெவ்வேறு பொது வெளியேற்றங்களையும் உறுதியளிக்காது. அது முனைகளைத் திட்டமிடுகிறது. இறுதி அடையாளம் ஒவ்வொரு முனையும் வழங்கும் பாதையின் பண்பாகவே இருக்கும்.