Peruntukkan proksi paling jarang digunakan secara atomik dalam Redis
Gunakan set tersusun dan skrip Lua pendek untuk memilih dan menambah kiraan peruntukan proksi merentas pekerja.
Apabila beberapa pekerja berkongsi kolam melalui Redis, set tersusun boleh melaksanakan dasar mudah: pilih proksi layak yang mempunyai peruntukan tercatat paling sedikit. Simpan pengecam proksi sebagai ahli dan kiraan peruntukannya sebagai skor.
Untuk kolam yang melayani permintaan awam yang dibenarkan, senarai proksi percuma boleh membekalkan calon titik hujung untuk dinilai mengikut peraturan kelayakan kolam itu. Mulakan ahli layak dengan kiraan permulaan yang dipersetujui. Kemudian jadikan pemilihan dan penambahan satu operasi sebelah pelayan:
local chosen = redis.call('ZRANGE', KEYS[1], 0, 0)[1]
if not chosen then
return nil
end
redis.call('ZINCRBY', KEYS[1], 1, chosen)
return chosenHantar kunci set tersusun sebagai satu-satunya argumen kunci skrip melalui antara muka EVAL klien Redis anda. Kolam kosong menghasilkan keputusan null yang mesti dikendalikan aplikasi tanpa membuat permintaan.
Mengapa gabungkan kedua-dua arahan?
Bacaan dan penambahan berasingan membolehkan dua pekerja melihat minimum yang sama sebelum mana-mana mengemas kininya. Redis melaksanakan skrip Lua secara atomik, jadi pekerja lain tidak boleh menyelitkan pemilihan antara bacaan dan penambahan skrip ini. Pastikan skrip pendek kerana pelaksanaannya menyekat kerja Redis lain.
ZRANGE mengembalikan skor terendah dahulu; skor sama diselesaikan mengikut susunan ahli, bukan secara rawak. ZINCRBY menaikkan skor ahli yang dipilih sebanyak satu untuk peruntukan seterusnya.
Takrifkan maksud skor
Ini mengira peruntukan, termasuk peruntukan yang permintaan rangkaiannya gagal kemudian. Ia tidak mengukur kependaman, permintaan berjaya atau kerja yang sedang berjalan. Memilih satu-satunya ahli layak berulang kali masih mungkin; skrip tidak menempahnya secara eksklusif.
Kekalkan kelayakan dengan peraturan kesihatan dan dasar kolam. Jika anda mengeluarkan ahli dan memulihkannya kemudian, tentukan sama ada kiraan sejarahnya perlu dikekalkan. Memulakan proksi yang dipulihkan pada sifar boleh menumpukan peruntukan padanya semasa ia mengejar.
Dasar keserentakan terendah memerlukan kitaran hayat berbeza, termasuk penyiapan dan pengendalian kerja yang ditinggalkan. Jangan tafsirkan pembilang kumulatif ini sebagai kitaran hayat itu.