Proxy B, proxy B lagi, lalu proxy A. Log Anda tampak mencurigakan, tetapi pemilih acak boleh melakukan tepat hal itu.

Memilih dari daftar yang sama pada setiap permintaan memungkinkan pengulangan. Dengan dua endpoint yang sama-sama mungkin, pemilihan independen berikutnya memiliki peluang satu banding dua untuk cocok dengan yang sebelumnya. Rangkaian pendek yang berisi pengulangan bukan bukti bahwa pemilih mengabaikan daftar.

Pilih perilaku yang benar-benar Anda butuhkan

PersyaratanAturan pemilihan
Setiap pilihan independenPilih dari daftar yang memenuhi syarat setiap kali
Gunakan setiap endpoint sekali sebelum memulai ulangAcak salinan, habiskan, lalu mulai putaran lain
Hindari endpoint tepat sebelumnyaKecualikan endpoint itu sebelum memilih

Untuk kebijakan terakhir, tangani kasus satu endpoint secara eksplisit:

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

Fragmen ini mengasumsikan random sudah diimpor dan daftar endpoint sudah divalidasi. Kumpulan publik dapat dimulai dengan daftar proxy gratis ketika protokolnya cocok dengan klien akhir; aturan pemilihan ini tetap mengendalikan pengulangan. Apakah menunggu, menggunakan kembali satu-satunya endpoint, atau berhenti adalah kebijakan aplikasi. Perulangan tanpa akhir yang menunggu nilai acak berbeda tidak dapat menyelesaikan daftar yang hanya berisi satu pilihan berbeda.

Dalam pengirim bersamaan, memilih dan mencatat endpoint sebelumnya juga membutuhkan kepemilikan terkoordinasi. Jika tidak, dua pekerja dapat sama-sama mengecualikan nilai lama dan memilih nilai berikut yang sama.

Akhirnya, aturan ini menyangkut identitas endpoint. Dua endpoint berbeda dapat mengarah ke satu exit publik, dan satu endpoint penyedia dapat mengarah ke beberapa exit. Catat keduanya secara terpisah sebelum memutuskan rotasi rusak.

Artikel terkait