තෝරකයක් පරිපූර්ණ ලෙස කැරකෙමින් තිබියදීත් පළමු ප්‍රොක්සියම තෝරා ගත හැක. වැරැද්ද වන්නේ සෑම ඉල්ලීමකටම අහම්බෙන් නව තෝරකයක් සෑදීමයි; එය දෙවන තේරීමක් කිරීමට පෙර එහි ගණකය නැවත සකසයි.

තෝරකය එක් වරක් ගොඩනගා ප්‍රවාහනය සමඟ රඳවා ගන්න. ඉල්ලීම් පොදු මැදිහත්කරුවන්ට ඉඩ දෙන විට 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 සමගාමී ආපසු කැඳවීම් අතර තේරීම් අනුපිළිවෙල ආරක්ෂා කරයි. මන්දගාමී ජාල ඉල්ලීමක් අවසන් වන අතරතුර අගුලක් රඳවා ගැනීම අවශ්‍ය නොවේ.

මුද්‍රණය කිරීමට පමණක් මාර්ගයක් වැය නොකරන්න

රෝග විනිශ්චය පණිවිඩයක් සඳහා තෝරකය නැවත කැඳවීම ගණකය නැවත ඉදිරියට ගෙන යයි. එම ප්‍රතිදානය ඔබ විමර්ශනය කරන ඉල්ලීම භාවිත කළ අපේක්ෂකය වෙනුවට ඊළඟ අපේක්ෂකය විස්තර කළ හැක. සැබෑ ආපසු කැඳවීම තුළ ආරක්ෂිත අන්ත ලක්ෂ්‍ය හඳුනා ගැනුම්කරුවක් සමඟ තේරීම වාර්තා කරන්න.

ආපසු කැඳවීමක් ඇමතීම ඉල්ලීමක් සාර්ථකව ලබා දුන් බවට සාක්ෂියක් නොවේ. නැවත යොමු කිරීම් හෝ අමතර ප්‍රවාහන උත්සාහ “එක් යෙදුම් ඇමතුමක්, එක් තේරීමක්” යන සරල උපකල්පනය සංකීර්ණ කළ හැක. කාර්ය ප්‍රවාහයක් ක්‍රියාකාරකම් කිහිපයක් තුළ එක් මාර්ගයක් තබා ගත යුතු නම්, ගෝලීය කැරකෙන ආපසු කැඳවීමක් භාවිත කරනවාට වඩා කාර්ය ප්‍රවාහයේ මායිමේදී එම මාර්ගය තෝරන්න.

රවුම්-රොබින් වෙනස් පොදු පිටවීම් ද පොරොන්දු නොවේ. එය අන්ත ලක්ෂ්‍ය කාලසටහන් කරයි. අවසාන අනන්‍යතාව එක් එක් අන්ත ලක්ෂ්‍යය සපයන මාර්ගයේ ගුණාංගයක් ලෙසම පවතී.

අදාළ ලිපි