Redis లో అత్యంత తక్కువగా ఉపయోగించిన ప్రాక్సీని అణు పద్ధతిలో కేటాయించండి
క్రమబద్ధీకరించిన సెట్ మరియు చిన్న Lua స్క్రిప్ట్ను ఉపయోగించి కార్మికుల మధ్య ప్రాక్సీ కేటాయింపు గణనను ఎంచుకోండి మరియు పెంచండి.
అనేక కార్మికులు Redis ద్వారా ఒక పూల్ను పంచుకున్నప్పుడు, క్రమబద్ధీకరించిన సెట్ సరళమైన విధానాన్ని అమలు చేయగలదు: నమోదైన కేటాయింపులు అత్యంత తక్కువగా ఉన్న అర్హత కలిగిన ప్రాక్సీని ఎంచుకోవడం. ప్రాక్సీ గుర్తింపును సభ్యునిగా మరియు దాని కేటాయింపు గణనను స్కోరుగా నిల్వ చేయండి.
అనుమతించిన పబ్లిక్ అభ్యర్థనలకు సేవ చేసే పూల్ కోసం, ఉచిత ప్రాక్సీ జాబితా ఆ పూల్ అర్హత నియమాల ప్రకారం మూల్యాంకనం చేయడానికి ఎండ్పాయింట్ అభ్యర్థులను అందించగలదు. అర్హత కలిగిన సభ్యులను అంగీకరించిన ప్రారంభ గణనతో ప్రారంభించండి. తర్వాత ఎంపిక మరియు పెంపును ఒకే సర్వర్-వైపు చర్యగా చేయండి:
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క్రమబద్ధీకరించిన సెట్ కీని స్క్రిప్ట్ యొక్క ఏకైక కీ ఆర్గ్యుమెంట్గా మీ Redis క్లయింట్ యొక్క EVAL ఇంటర్ఫేస్ ద్వారా పంపండి. ఖాళీ పూల్ null ఫలితాన్ని ఇస్తుంది; అప్లికేషన్ అభ్యర్థన చేయకుండా దాన్ని నిర్వహించాలి.
రెండు ఆదేశాలను ఎందుకు కలపాలి?
వేర్వేరు పఠనాలు మరియు పెంపులు ఇద్దరు కార్మికులు ఎవరూ నవీకరించకముందే అదే కనిష్ఠాన్ని చూడటానికి అనుమతిస్తాయి. Redis Lua స్క్రిప్ట్ను అణు పద్ధతిలో అమలు చేస్తుంది, కాబట్టి మరొక కార్మికుడు ఈ స్క్రిప్ట్ పఠనం మరియు పెంపు మధ్య ఎంపికను చొప్పించలేడు. స్క్రిప్ట్ను చిన్నదిగా ఉంచండి, ఎందుకంటే దాని అమలు ఇతర Redis పనిని నిరోధిస్తుంది.
ZRANGE అత్యంత తక్కువ స్కోరును మొదట ఇస్తుంది; సమాన స్కోర్లు సభ్యుల క్రమం ద్వారా పరిష్కరించబడతాయి, యాదృచ్ఛికంగా కాదు. ZINCRBY తదుపరి కేటాయింపు కోసం ఎంచుకున్న సభ్యుని స్కోరును ఒకటి పెంచుతుంది.
స్కోరు అర్థాన్ని నిర్వచించండి
ఇది కేటాయింపులను లెక్కిస్తుంది, తర్వాత దాని నెట్వర్క్ అభ్యర్థన విఫలమయ్యే కేటాయింపు కూడా ఇందులో ఉంటుంది. ఇది ఆలస్యం, విజయవంతమైన అభ్యర్థనలు లేదా ప్రస్తుతం జరుగుతున్న పనిని కొలవదు. ఏకైక అర్హత కలిగిన సభ్యుడిని పదేపదే ఎంచుకోవడం ఇప్పటికీ సాధ్యమే; స్క్రిప్ట్ దాన్ని ప్రత్యేకంగా రిజర్వ్ చేయదు.
పూల్ ఆరోగ్యం మరియు విధాన నియమాలతో అర్హతను నిర్వహించండి. ఒక సభ్యుడిని తొలగించి తర్వాత పునరుద్ధరిస్తే, దాని చారిత్రక గణనను ఉంచాలా అని నిర్ణయించండి. పునరుద్ధరించిన ప్రాక్సీని సున్నా నుండి ప్రారంభించడం అది పుంజుకుంటున్నప్పుడు కేటాయింపులను దానిపై కేంద్రీకరించగలదు.
అత్యల్ప-సమకాలిక విధానానికి వేరే జీవితచక్రం అవసరం, అందులో పూర్తి చేయడం మరియు విడిచిపెట్టిన పనుల నిర్వహణ ఉంటాయి. ఈ సంచిత కౌంటర్ను ఆ జీవితచక్రంగా అన్వయించవద్దు.