రెడిస్ షార్డింగ్

Redis Sarding



మీరు మొదట Redisని ఉపయోగించడం ప్రారంభించినప్పుడు, మీరు దానిని డిఫాల్ట్ సెట్టింగ్‌లకు మించి స్కేల్ చేయాల్సిన అవసరం లేదని నమ్మడం సులభం. సమస్య ఏమిటంటే, మీ అప్లికేషన్ పెరుగుతున్న కొద్దీ, మీ వ్యాపార అవసరాలకు మద్దతు ఇవ్వడానికి మీకు మరింత మెమరీ, CPU మరియు నిర్గమాంశ సామర్థ్యం అవసరం అవుతుంది. ఈ ఆర్టికల్‌లో, మీ వ్యాపారాన్ని సజావుగా నడపడానికి మరియు భవిష్యత్తులో ఎదగడానికి మీకు అవసరమైన అదనపు సామర్థ్యాన్ని అందించడానికి రెడిస్ క్లస్టర్ స్కేల్‌లను షార్డింగ్‌తో ఎలా పెంచుతుందో మేము మీకు చూపుతాము. రెడిస్ క్లస్టర్ షార్డింగ్‌తో అధిక నిర్గమాంశను ఎలా అందిస్తుందో మేము ప్రత్యేకంగా నేర్చుకుంటాము.

స్కేలబిలిటీ

సర్వర్‌ను స్కేలింగ్ చేయడానికి రెండు సాధారణ విధానాలు ఉన్నాయి: నిలువు స్కేలింగ్ మరియు క్షితిజ సమాంతర స్కేలింగ్. వర్టికల్ స్కేలింగ్ లేదా స్కేలింగ్ అప్ అంటే మీరు మీ సర్వర్‌కు ఎక్కువ శక్తిని మరియు వనరులను జోడిస్తారు, అంటే ఎక్కువ CPUలు, మెమరీ మరియు స్టోరేజ్ వంటివి ఖరీదైనవి. మరోవైపు, క్షితిజసమాంతర స్కేలింగ్ మీ ప్రస్తుత వనరుల పూల్‌కు బహుళ నోడ్‌లను జోడిస్తోంది. దీనిని స్కేలింగ్ అవుట్ అంటారు. కాబట్టి, మీ పరిమితులు మరియు అవసరాల ఆధారంగా, ఒకే పెద్ద సర్వర్ ఉదాహరణను కలిగి ఉండటం లేదా బహుళ సర్వర్ నోడ్‌లను అమలు చేయడం మీ ఇష్టం.

మీరు 100 GB RAMని కలిగి ఉన్నారని మరియు 200 GB డేటాను కలిగి ఉండాలని భావించండి. ఈ సందర్భంలో, మీకు రెండు ఎంపికలు ఉన్నాయి:







  • సిస్టమ్‌కు మరింత RAMని జోడించడం ద్వారా స్కేల్ అప్ చేయండి
  • 100 GB RAMతో మరొక సర్వర్ ఉదాహరణను జోడించడం ద్వారా స్కేల్ అవుట్ చేయండి

మీరు మీ ఇన్‌ఫ్రాస్ట్రక్చర్‌లో గరిష్ట RAM పరిమితిని చేరుకున్నట్లయితే, స్కేలింగ్ అవుట్ చేయడం సరైన విధానం. అదనంగా, స్కేలింగ్ అవుట్ డేటాబేస్ నిర్గమాంశను భారీ మార్జిన్‌తో పెంచుతుంది.





రెడిస్ షార్డింగ్

రెడిస్ ఒకే థ్రెడ్‌పై పనిచేస్తుందనేది తెలిసిన విషయమే. కాబట్టి, రెడిస్ ఆదేశాలను ప్రాసెస్ చేయడానికి మీ సర్వర్ యొక్క CPU యొక్క బహుళ కోర్లను ఉపయోగించుకోలేకపోతుంది. అందువల్ల, మరిన్ని CPU కోర్లను జోడించడం వలన మీకు Redisతో ఎక్కువ నిర్గమాంశ లేదా పనితీరును అందించదు. బహుళ సర్వర్ ఉదంతాల మధ్య మీ డేటాను విభజించడం విషయంలో ఇది కాదు. అనేక సర్వర్‌లను జోడించడం మరియు వాటి మధ్య డేటా సెట్‌ను పంపిణీ చేయడం ద్వారా క్లయింట్ అభ్యర్థనలను సమాంతరంగా ప్రాసెస్ చేయడం సాధ్యపడుతుంది, ఇది నిర్గమాంశను పెంచుతుంది. అదనంగా, మొత్తం పనితీరు సరళంగా పెరగవచ్చు.





స్కేలింగ్‌ను దృష్టిలో ఉంచుకుని బహుళ సర్వర్‌ల మధ్య డేటాను విభజించడం లేదా పంపిణీ చేసే ఈ విధానాన్ని అంటారు ముక్కలు చేయడం . డేటా యొక్క భాగాలను నిల్వ చేసే అన్ని సర్వర్‌లను అంటారు ముక్కలు .



షార్డింగ్ ఎలా జరుగుతుంది — అల్గారిథమిక్ షార్డింగ్

అనేక రెడిస్ నోడ్‌లలో ఇచ్చిన కీని ఎలా గుర్తించాలి అనేది షార్డింగ్‌లో ఉన్న ప్రధాన ఆందోళనలలో ఒకటి. ఇచ్చిన కీని అందుబాటులో ఉన్న ఏవైనా షార్డ్‌లలో నిల్వ చేయవచ్చు కాబట్టి, నిర్దిష్ట కీని కనుగొనడానికి అన్ని ముక్కలను ప్రశ్నించడం ఉత్తమ ఎంపిక కాదు. కాబట్టి, ప్రతి కీని నిర్దిష్ట షార్డ్‌కు మ్యాప్ చేయడానికి ఒక మార్గం ఉండాలి మరియు రెడిస్ అల్గారిథమిక్ షార్డింగ్ వ్యూహాన్ని ఉపయోగిస్తుంది.

Redis కీ పేరు మరియు మాడ్యులో ఉపయోగించి హాష్ విలువను లెక్కించడం అత్యంత సాధారణ విధానం. ఆపై, సిస్టమ్‌లో అందుబాటులో ఉన్న రెడిస్ షార్డ్‌ల ద్వారా దానిని విభజించండి.

HASH_SLOT = CRC16(కీ) మోడ్ 16384

మొత్తం ముక్కల సంఖ్య స్థిరంగా ఉన్నంత వరకు ఇది చాలా మంచి పరిష్కారం. మీరు కొత్త Reids సర్వర్ ఉదాహరణను జోడించినప్పుడల్లా, మొత్తం షార్డ్‌ల సంఖ్య పెరిగినందున ఇచ్చిన కీ కోసం ఫలిత విలువ మారవచ్చు. ఇది తప్పు రెడిస్ షార్డ్‌ను ప్రశ్నించడం ముగుస్తుంది. అందువల్ల, మీరు ప్రతి కీకి కొత్త షార్డ్‌ను లెక్కించడం ద్వారా మరియు డేటాను సరైన సర్వర్‌కి బదిలీ చేయడం ద్వారా రీహార్డింగ్ ప్రక్రియను అనుసరించాలి, ఇది గజిబిజిగా ఉంటుంది మరియు మీ మొత్తం షార్డ్ కౌంట్ ఎప్పటికప్పుడు పెరుగుతూ ఉంటే అది చిన్న పని కాదు.

Redis a అనే కొత్త లాజికల్ ఎంటిటీని ఉపయోగిస్తుంది హాష్ స్లాట్ ఈ సమస్యను నివారించడానికి. ఇచ్చిన షార్డ్ కోసం అనేక హాష్ స్లాట్‌లు అందుబాటులో ఉన్నాయి మరియు ఒకే హాష్ స్లాట్ బహుళ Redis కీలను కలిగి ఉంటుంది. Redis డేటాబేస్ క్లస్టర్‌లో 16384 హాష్ స్లాట్‌లు ఉన్నాయి, అవి మారవు. మాడ్యులో విభజన షార్డ్ కౌంట్‌కు బదులుగా హాష్ స్లాట్‌ల సంఖ్యతో చేయబడుతుంది. షార్డ్‌ల సంఖ్య పెరిగినప్పటికీ, ఇది పేర్కొన్న కీ కోసం హాష్ స్లాట్ యొక్క సరైన స్థానాన్ని అందిస్తుంది. ఇది హాష్ స్లాట్‌లను ఒక షార్డ్ నుండి కొత్తదానికి తరలించడం ద్వారా రీహార్డింగ్ ప్రక్రియను సులభతరం చేస్తుంది, ఇది అవసరానికి అనుగుణంగా వివిధ రెడిస్ ఇన్‌స్టాన్స్‌లలో డేటాను విభజిస్తుంది.

రెడిస్ షార్డింగ్ యొక్క ప్రయోజనాలు

రెడిస్ షార్డింగ్ మీ డేటాబేస్ సిస్టమ్‌కు కనీస మార్పులతో అనేక ప్రయోజనాలను అందిస్తుంది.

అధిక నిర్గమాంశ

Redis ఒకే-థ్రెడ్ అయినందున, బహుళ క్లయింట్ అభ్యర్థనలను ప్రాసెస్ చేయడం బహుళ CPU కోర్లను ఉపయోగించి సమాంతరంగా ప్రాసెస్ చేయబడదు. కాబట్టి, కొత్త షార్డ్‌లు లేదా సర్వర్ ఇన్‌స్టాన్స్‌లను జోడించడం వలన మీరు రెడిస్ కార్యకలాపాలను సమాంతరంగా నిర్వహించగలరని హామీ ఇస్తుంది. ఇది మీ Redis డేటాబేస్‌లో సెకనుకు కార్యకలాపాలను పెంచుతుంది, ఇది చివరికి మీకు అధిక నిర్గమాంశను అందిస్తుంది.

అధిక లభ్యత

షార్డింగ్ విధానంతో, రెడిస్ క్లస్టర్ అధిక లభ్యత మరియు మన్నికను నిర్ధారించే మాస్టర్-రెప్లికా ఆర్కిటెక్చర్‌ను సెటప్ చేయగలదు.

ప్రతిరూపాలను చదవండి

షార్డింగ్ మీ డేటా యొక్క ఖచ్చితమైన కాపీని ఉంచడానికి మరియు ప్రత్యేక Redis ఉదంతాల ద్వారా రీడ్ ఆపరేషన్‌లను అందించడానికి మిమ్మల్ని అనుమతిస్తుంది, ఇది మీ రీడ్ క్వెరీ ఎగ్జిక్యూషన్ పనితీరును పెంచుతుంది.

ఈ ప్రయోజనాలే కాకుండా, మీరు రెడిస్ క్లస్టర్‌లో సమాన సంఖ్యలో షార్డ్‌లను కలిగి ఉన్నప్పుడు షార్డింగ్ స్ప్లిట్-మెదడు పరిస్థితులకు కారణం కావచ్చు. కాబట్టి, మీ రెడిస్ క్లస్టర్‌లో బేసి సంఖ్యలో ముక్కలు ఉంచడం సిఫార్సు చేయబడింది.

ముగింపు

సంగ్రహంగా చెప్పాలంటే, Redis sharding అనేది బహుళ సర్వర్‌ల మధ్య డేటాను విభజించడం, ఇది మీ డేటాబేస్ కోసం స్కేలింగ్ మరియు అధిక నిర్గమాంశను అనుమతిస్తుంది. చర్చించినట్లుగా, రెడిస్ క్లయింట్ అభ్యర్థనలను సరైన షార్డ్‌కు సూచించడానికి అల్గారిథమిక్ షార్డింగ్ వ్యూహాన్ని ఉపయోగిస్తుంది. మొత్తం ముక్కల సంఖ్య పెరిగినప్పుడు దీనికి కొన్ని లోపాలు ఉన్నాయి. కాబట్టి, మొత్తం ముక్కల సంఖ్యకు బదులుగా, తగిన షార్డ్‌ను లెక్కించడానికి Redis హాష్ స్లాట్‌ల సంఖ్యను ఉపయోగిస్తుంది. షార్డింగ్ ప్రవేశపెట్టడంతో, Redis డేటాబేస్‌లు అధిక లభ్యత, అధిక నిర్గమాంశ మరియు అధిక పనితీరును అందిస్తాయి.