Kichaguzi cha proksi cha mzunguko kinachoshirikiwa katika Go
Weka kichaguzi cha proksi cha Go hai kati ya maombi, linda hali ya uchaguzi inayoshirikiwa na utofautishe kuchagua njia na kuchunguza utokeaji wake.
Kichaguzi kinaweza kuzunguka kikamilifu na bado kiendelee kuchagua proksi ya kwanza. Hitilafu ni kuunda kichaguzi kipya kwa bahati mbaya kwa kila ombi, jambo ambalo huweka upya kihesabu chake kabla hakijapata chaguo la pili.
Jenga kichaguzi mara moja na kishikilie pamoja na usafirishaji. Orodha ya proksi za HTTP inaweza kutoa wagombea wa HTTP wa umma kwa seti ya URL wakati maombi yanaruhusu waamuzi wa umma. Anza na orodha ya URL za proksi iliyothibitishwa tayari na isiyo tupu:
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
}
}
Programu inayozunguka lazima ikatae orodha tupu, ithibitishe URL na itumie uingizaji wa kawaida net/http, net/url na sync. Orodha inapaswa kubaki bila kubadilika wakati kichaguzi hiki kinatumia, au kubadilishwa kupitia muundo uliosawazishwa kando.
Ambatisha kitendakazi kilichorejeshwa kwa http.Transport moja iliyoshikiliwa. Mutex hulinda mfuatano wa uchaguzi kati ya simu za nyuma zinazotokea kwa wakati mmoja. Haihitaji kushikilia kufuli wakati ombi la mtandao la polepole linakamilika.
Usitumie njia kwa ajili ya kuichapisha tu
Kuita kichaguzi tena kwa ujumbe wa uchunguzi husogeza kihesabu mbele tena. Matokeo hayo yanaweza kuelezea mgombea anayefuata badala ya mgombea aliyetumiwa na ombi unalochunguza. Rekodi uchaguzi ndani ya simu halisi ya nyuma kwa kitambulisho salama cha mwisho.
Kuita simu ya nyuma si uthibitisho kwamba ombi liliwasilishwa kwa mafanikio. Uelekezaji upya au majaribio ya ziada ya usafirishaji yanaweza kutatiza dhana rahisi ya «simu moja ya programu, chaguo moja». Ikiwa mtiririko wa kazi unapaswa kudumisha njia moja katika shughuli kadhaa, chagua njia hiyo kwenye mpaka wa mtiririko wa kazi badala ya kutumia simu ya nyuma inayozunguka ya kimataifa.
Mzunguko pia hauahidi utokeaji wa umma tofauti. Hupanga vituo vya mwisho. Utambulisho wa mwisho unabaki kuwa sifa ya njia ambayo kila kituo cha mwisho hutoa.