Puhverserver B, jälle puhverserver B, seejärel puhverserver A. Teie logi tundub kahtlane, kuid juhuslik valija tohib täpselt seda teha.

Iga päringu puhul samast nimekirjast valimine lubab kordusi. Kahe võrdselt tõenäolise lõpp-punkti korral on järgmisel sõltumatul valikul üks kahest võimalus langeda kokku eelmisega. Lühike kordustega jada ei ole tõestus, et valija jättis nimekirja tähelepanuta.

Valige käitumine, mida te tegelikult vajate

NõueValikureegel
Iga valik on sõltumatuValige igal korral sobivast nimekirjast
Kasutage iga lõpp-punkti üks kord enne uuesti alustamistSegage koopia, tarbige see ja alustage siis uut läbimist
Vältige vahetult eelmist lõpp-punktiVälistage see lõpp-punkt enne valimist

Viimase poliitika puhul käsitlege ühe lõpp-punkti juhtu selgesõnaliselt:

candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
    raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)

See katkend eeldab, et random on imporditud ja lõpp-punktide nimekiri on juba valideeritud. Avalik kogum võib alustada tasuta puhverserverite nimekirjaga, kui selle protokollid sobivad lõppkliendiga; see valikureegel juhib endiselt kordusi. Kas oodata, ainsat lõpp-punkti uuesti kasutada või lõpetada, on rakenduse poliitika. Lõputu tsükkel, mis ootab teistsugust juhuslikku väärtust, ei suuda lahendada nimekirja, mis sisaldab ainult üht erinevat valikut.

Samaaegses saatjas nõuab eelmise lõpp-punkti valimine ja registreerimine ka koordineeritud omandiõigust. Vastasel juhul võivad kaks töötajat mõlemad vana väärtuse välistada ja valida sama järgmise väärtuse.

Lõpuks puudutab see reegel lõpp-punkti identiteeti. Kaks erinevat lõpp-punkti võivad viia ühe avaliku väljapääsuni ja üks teenusepakkuja lõpp-punkt võib viia mitme väljapääsuni. Registreerige need eraldi enne, kui otsustate, et rotatsioon on katki.

Seotud artiklid