De mannst benotzten Proxy atomar an Redis zoudeelen
Benotzt en sortéierte Set an e kuerzt Lua-Skript, fir d'Zoudeelungszuel vun engem Proxy tëschent Aarbechter auszewielen an ze erhéijen.
Wann e puer Aarbechter e Pool iwwer Redis deelen, kann en sortéierte Set eng einfach Politik ëmsetzen: dee zoulässege Proxy mat de mannsten erfaassten Zoudeelungen auswielen. Späichert eng Proxy-Identifikatioun als Member an hir Zoudeelungszuel als Score.
Fir e Pool, deen erlaabten ëffentlechen Ufroe servéiert, kann d'Lëscht vun de gratis Proxyen Endpunkt-Kandidaten ubidden, déi no de Zoulässegkeetsregelen vun deem Pool bewäert ginn. Initialiséiert zoulässeg Membere mat enger ofgeschwattener Ufankszuel. Maacht duerno d'Auswiel an d'Erhéijung eng eenzeg Server-side Operatioun:
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 chosenGitt de Schlëssel vum sortéierte Set als eenzegt Schlësselargument vum Skript iwwer d'EVAL-Interface vun Ärem Redis-Client weider. En eidele Pool gëtt en null-Resultat, dat d'Applikatioun muss behandelen, ouni eng Ufro ze maachen.
Firwat déi zwou Kommandoen kombinéieren?
Getrennt Liesungen an Erhéijungen erlaben zwee Aarbechter deeselwechte Minimum ze gesinn, ier een et aktualiséiert. Redis féiert e Lua-Skript atomar aus, dofir kann en aneren Aarbechter keng Auswiel tëschent dem Liese an der Erhéijung vun dësem Skript aschreiwen. Halt d'Skript kuerz, well seng Ausféierung aner Redis-Aarbecht blockéiert.
ZRANGE gëtt de niddregste Score fir d'éischt zréck; gläiche Score gëtt duerch d'Member-Reiefolleg entscheet, net zoufälleg. ZINCRBY erhéicht de Score vum gewielte Member ëm een fir déi nächst Zoudeelung.
Definéiert wat de Score bedeit
Dëst zielt Zoudeelungen, och eng Zoudeelung, där hir Netzwierkufro spéider feelt. Et misst keng Latenz, erfollegräich Ufroen oder Aarbecht déi just leeft. Et ass nach ëmmer méiglech, deen eenzegen zoulässege Member ëmmer erëm auszewielen; d'Skript reservéiert en net exklusiv.
Halt d'Zoulässegkeet mat de Gesondheets- a Politikregelen vum Pool oprecht. Wann Dir e Member ewechhuelt an duerno restauréiert, entscheet, ob seng historesch Zuel behale soll ginn. En restauréierte Proxy op null ze starten, kann d'Zoudeelungen op hien konzentréieren, wärend hien opkënnt.
Eng Politik vun der mannster Gläichzäitegkeet brauch en aneren Liewenszyklus, dorënner Ofschloss an d'Behandlung vu verloossenen Aufgaben. Interpretéiert dëse kumulative Compteur net als deen Liewenszyklus.