Välityspalvelin B, jälleen välityspalvelin B ja sitten välityspalvelin A. Lokisi näyttää epäilyttävältä, mutta satunnaisvalitsin saa tehdä juuri niin.

Samasta luettelosta valitseminen jokaisessa pyynnössä sallii toistot. Kun kaksi päätepistettä on yhtä todennäköisiä, seuraavalla riippumattomalla valinnalla on yksi kahdesta mahdollisuus osua edelliseen. Lyhyt toistoja sisältävä sarja ei todista, että valitsin jätti luettelon huomiotta.

Valitse käyttäytyminen, jota todella tarvitset

VaatimusValintasääntö
Jokainen valinta on riippumatonValitse kelvollisesta luettelosta joka kerta
Käytä jokaista päätepistettä kerran ennen uudelleen aloittamistaSekoita kopio, kuluta se ja aloita sitten uusi kierros
Vältä välittömästi edellistä päätepistettäSulje se päätepiste pois ennen valintaa

Viimeisen käytännön osalta käsittele yhden päätepisteen tapaus nimenomaisesti:

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

Tämä katkelma olettaa, että random on tuotu ja päätepisteiden luettelo on jo validoitu. Julkinen pooli voi aloittaa ilmaisesta välityspalvelinluettelosta, kun sen protokollat sopivat loppuasiakkaalle; tämä valintasääntö ohjaa edelleen toistoja. Odottaminen, ainoan päätepisteen uudelleenkäyttö tai lopettaminen on sovelluksen käytäntö. Loputon silmukka, joka odottaa erilaista satunnaisarvoa, ei voi ratkaista luetteloa, jossa on vain yksi erilainen vaihtoehto.

Samanaikaisessa lähettimessä edellisen päätepisteen valinta ja tallentaminen vaativat myös koordinoidun omistajuuden. Muuten kaksi työntekijää voivat molemmat sulkea vanhan arvon pois ja valita saman seuraavan arvon.

Lopuksi tämä sääntö koskee päätepisteen identiteettiä. Kaksi eri päätepistettä voi johtaa yhteen julkiseen ulostuloon, ja yksi palveluntarjoajan päätepiste voi johtaa useisiin ulostuloihin. Kirjaa ne erikseen ennen kuin päätät, että rotaatio on rikki.

Aiheeseen liittyvät artikkelit