Proxy B, proxy B igen och sedan proxy A. Din logg ser misstänkt ut, men en slumpmässig väljare får göra precis det.

Att välja från samma lista vid varje begäran tillåter upprepningar. Med två lika sannolika slutpunkter har nästa oberoende val en chans på en av två att matcha den föregående. En kort sekvens med upprepningar är inte bevis för att väljaren ignorerade listan.

Välj det beteende du faktiskt behöver

KravValregel
Varje val är oberoendeVälj från den kvalificerade listan varje gång
Använd varje slutpunkt en gång innan du börjar omBlanda en kopia, förbruka den och börja sedan en ny genomgång
Undvik den omedelbart föregående slutpunktenUteslut den slutpunkten innan du väljer

För den sista policyn, hantera fallet med en enda slutpunkt uttryckligen:

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

Detta fragment förutsätter att random är importerat och att listan över slutpunkter redan är validerad. En offentlig pool kan börja med den kostnadsfria proxylistan när dess protokoll passar den slutliga klienten; denna valregel styr fortfarande upprepningar. Om man ska vänta, återanvända den enda slutpunkten eller sluta är en policy för programmet. En oändlig slinga som väntar på ett annat slumpvärde kan inte lösa en lista som bara innehåller ett enda distinkt val.

I en samtidig dispatcher kräver val och registrering av föregående slutpunkt också koordinerat ägande. Annars kan två arbetare båda utesluta det gamla värdet och välja samma nästa värde.

Slutligen handlar denna regel om slutpunktens identitet. Två olika slutpunkter kan leda till en och samma offentliga utgång, och en leverantörs slutpunkt kan leda till flera utgångar. Registrera dem separat innan du avgör att rotationen är trasig.

Relaterade artiklar