Þegar nokkrar vinnslur deila laug í gegnum Redis getur raðað mengi innleitt einfalda stefnu: velja gjaldgæfu proxy-tölvuna með fæstu skráðu úthlutningarnar. Geymdu auðkenni proxy-tölvunnar sem stak og úthlutningartölu hennar sem stig.

Fyrir laug sem þjónar leyfðum opinberum beiðnum getur listinn yfir ókeypis proxy-tölvur veitt endapunktsefni til að meta samkvæmt gjaldgengisreglum þeirrar laugar. Frumstilltu gjaldgæf stök með samþykktri byrjunartölu. Gerðu síðan valið og hækkunina að einni aðgerð á þjóninum:

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 chosen

Sendu lykil raðaða mengisins sem eina lykilargument skriftunnar í gegnum EVAL-viðmót Redis-biðlarans þíns. Tóm laug gefur null-niðurstöðu sem forritið verður að meðhöndla án þess að senda beiðni.

Hvers vegna að sameina báðar skipanirnar?

Aðskilin lestur og hækkanir leyfa tveimur vinnslum að sjá sama lágmark áður en hvorug þeirra uppfærir það. Redis keyrir Lua-skriftu á atómískan hátt, svo önnur vinnsla getur ekki sett val á milli lesturs og hækkunar þessarar skriftu. Haltu skriftunni stuttri því keyrsla hennar blokkerar annað Redis-vinnu.

ZRANGE skilar lægsta stiginu fyrst; jöfn stig eru leyst eftir röð staka, ekki af handahófi. ZINCRBY hækkar stig valda staksins um eitt fyrir næstu úthlutun.

Skilgreindu hvað stigið þýðir

Þetta telur úthlutningar, þar á meðal úthlutun sem netbeiðni hennar mistekst síðar. Það mælir ekki seinkun, árangursríkar beiðnir eða vinnu sem er í gangi. Enn er hægt að velja eina gjaldgæfa stakið aftur og aftur; skriftan áskilur það ekki eingöngu.

Viðhaltu gjaldgengi með heilsu- og stefnureglum laugarinnar. Ef þú fjarlægir stak og endurheimtir síðar skaltu ákveða hvort halda eigi sögulegri tölu þess. Að byrja endurheimta proxy-tölvu á núlli getur einbeitt úthlutningum á hana meðan hún nær sér.

Stefna um minnstu samtímis þarf annan lífsferil, þar á meðal lok og meðhöndlun yfirgefinna verka. Túlkaðu ekki þennan uppsafnaða teljara sem þann lífsferil.

Tengdir greinar