Slučajni odabiri, promiješani prolazi i ponovljene proxy krajnje točke
Odaberite između nezavisnih slučajnih odabira, promiješanog prolaza i politike bez neposrednog ponavljanja, umjesto da ponovljenu krajnju točku smatrate pokvarenim rotatorom.
Proxy B, ponovo proxy B, a zatim proxy A. Vaš dnevnik izgleda sumnjivo, ali slučajni birač smije raditi upravo to.
Biranje s istog popisa pri svakom zahtjevu dopušta ponavljanja. S dvije jednako vjerojatne krajnje točke, sljedeći nezavisni odabir ima šansu jedan prema dva da se podudara s prethodnim. Kratak niz s ponavljanjima nije dokaz da je birač zanemario popis.
Odaberite ponašanje koje vam je doista potrebno
| Zahtjev | Pravilo odabira |
|---|---|
| Svaki je odabir neovisan | Svaki put birajte s popisa podobnih |
| Iskoristite svaku krajnju točku jednom prije ponovnog početka | Promiješajte kopiju, potrošite je, zatim započnite novi prolaz |
| Izbjegavajte neposredno prethodnu krajnju točku | Isključite tu krajnju točku prije odabira |
Za posljednju politiku izričito obradite slučaj s jednom krajnjom točkom:
candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)
Ovaj isječak pretpostavlja da je random uvezen i da je popis krajnjih točaka već provjeren. Javni skup može započeti s besplatnim popisom proxyja kada se njegovi protokoli uklapaju u konačnog klijenta; ovo pravilo odabira i dalje kontrolira ponavljanja. Hoćete li čekati, ponovno upotrijebiti jedinu krajnju točku ili stati, stvar je politike aplikacije. Beskonačna petlja koja čeka drugu slučajnu vrijednost ne može riješiti popis koji sadrži samo jedan različit izbor.
U paralelnom dispečeru, odabir i bilježenje prethodne krajnje točke također zahtijeva usklađeno vlasništvo. Inače dva radnika mogu oba isključiti staru vrijednost i odabrati istu sljedeću vrijednost.
Naposljetku, ovo se pravilo tiče identiteta krajnje točke. Dvije različite krajnje točke mogu voditi do jednog javnog izlaza, a jedna krajnja točka davatelja može voditi do nekoliko izlaza. Zabilježite to odvojeno prije nego zaključite da je rotacija pokvarena.