As ferskate wurkers in pool diele fia Redis, kin in sortearre set in ienfâldich belied útfierde: kies de tastiene proxy mei de minste registrearre tawizings. Bewarje in proxy-identifikaasje as lid en syn tal tawizings as score.

Foar in pool dy't tastiene iepenbiere oanfragen betsjinne, kin de list fan fergees proxy's einpuntkandidaten leverje om te beoardieljen neffens de tastienensregels fan dy pool. Initialisearje tastiene leden mei in ôfsprutsen begjintal. Meitsje dan de seleksje en ferheging ien server-side operaasje:

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

Jou de kaai fan 'e sortearre set as it ienige kaai-argumint fan it skript troch de EVAL-interface fan jo Redis-klant. In lege pool jout in null-resultaat dat de applikaasje ôfhannele moat sûnder in oanfraach te dwaan.

Wêrom de beide opdrachten kombinearje?

Skieden lêzingen en ferhegingen litte twa wurkers itselde minimum sjen foardat ien fan beiden it bywurket. Redis fiert in Lua-skript atomysk út, dus in oare wurker kin gjin seleksje tusken de lêzing en ferheging fan dit skript ynfoegje. Hâld it skript koart, want de útfiering blokkearret oar Redis-wurk.

ZRANGE jout de leechste score earst werom; lykweardige scores wurde besljochte troch lidfolchoarder, net tafallich. ZINCRBY ferheget de score fan it keazen lid mei ien foar de folgjende tawizing.

Bepaal wat de score betsjut

Dit telt tawizings, ek in tawizing waans netwurkoanfraach letter mislearret. It mjit net fertraging, slagge oanfragen of wurk dat no dwaande is. It selektearjen fan it ienige tastiene lid wer en wer is noch mooglik; it skript reservearret it net eksklusyf.

Hâld tastienens by mei de sûnens- en beliedsregels fan 'e pool. As jo in lid fuorthelje en it letter weromsette, beslute dan oft syn histoaryske tal bewarre wurde moat. It starten fan in werombrochte proxy op nul kin tawizings op him konsintrearje wylst er bykomt.

In belied fan minste gelykheid hat in oare libbenssyklus nedich, ynklusyf foltôging en ôfhannele fan ferlitten taken. Ynterpretearje dizze kumulative teller net as dy libbenssyklus.

Relatearre artikelen