Proksi B, yana proksi B, keyin proksi A. Jurnalingiz shubhali ko'rinadi, ammo tasodifiy tanlagich aynan shunday qilishga haqli.

Har bir so'rovda bir xil ro'yxatdan tanlash takrorlanishga yo'l qo'yadi. Ikki teng ehtimolli so'nggi nuqta bo'lsa, keyingi mustaqil tanlovning oldingisiga mos kelish ehtimoli ikkidan bir. Takrorlanishli qisqa ketma-ketlik tanlagich ro'yxatni e'tiborsiz qoldirganiga dalil emas.

Haqiqatan kerak bo'lgan xatti-harakatni tanlang

TalabTanlash qoidasi
Har bir tanlov mustaqilHar safar mos ro'yxatdan tanlang
Qayta boshlashdan oldin har bir so'nggi nuqtadan bir marta foydalaningNusxani aralashtiring, uni sarflang, so'ng yangi aylanishni boshlang
Darhol oldingi so'nggi nuqtadan qochingTanlashdan oldin o'sha nuqtani chiqarib tashlang

Oxirgi siyosat uchun bitta so'nggi nuqta holatini aniq ko'rib chiqing:

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

Bu parcha random import qilingan va so'nggi nuqtalar ro'yxati allaqachon tekshirilgan deb hisoblaydi. Ommaviy hovuz protokollari yakuniy mijozga mos kelganda bepul proksi ro'yxatidan boshlashi mumkin; bu tanlash qoidasi hali ham takrorlanishni boshqaradi. Kutish, yagona so'nggi nuqtani qayta ishlatish yoki to'xtash ilova siyosatidir. Boshqa tasodifiy qiymatni kutayotgan cheksiz sikl faqat bitta farqli tanlovdan iborat ro'yxatni hal qila olmaydi.

Bir vaqtda ishlaydigan dispetcherda oldingi so'nggi nuqtani tanlash va qayd etish ham muvofiqlashtirilgan egalikni talab qiladi. Aks holda ikki ishchi ikkalasi ham eski qiymatni chiqarib tashlab, bir xil keyingi qiymatni tanlashi mumkin.

Nihoyat, bu qoida so'nggi nuqta identifikatsiyasiga tegishli. Ikki xil so'nggi nuqta bitta ommaviy chiqishga olib kelishi mumkin, bitta provayder nuqtasi esa bir nechta chiqishga olib kelishi mumkin. Aylanish buzilgan deb qaror qilishdan oldin ularni alohida qayd eting.

O'xshash maqolalar