ریڈیس شارڈنگ

Ry Ys Shar Ng



جب آپ پہلی بار Redis کا استعمال شروع کرتے ہیں، تو یہ یقین کرنا آسان ہوتا ہے کہ آپ کو اسے پہلے سے طے شدہ ترتیبات سے آگے بڑھانے کی ضرورت نہیں ہوگی۔ مسئلہ یہ ہے کہ جیسے جیسے آپ کی ایپلیکیشن بڑھتی ہے، آپ کو آخرکار اپنی کاروباری ضروریات کو پورا کرنے کے لیے مزید میموری، CPU، اور تھرو پٹ صلاحیت کی ضرورت ہوگی۔ اس آرٹیکل میں، ہم آپ کو دکھائیں گے کہ کس طرح Redis کلسٹر ترازو شارڈنگ کے ساتھ آپ کو وہ اضافی صلاحیت فراہم کرتا ہے جس کی آپ کو اپنے کاروبار کو آسانی سے چلانے اور مستقبل میں ترقی کرنے کی ضرورت ہے۔ ہم خاص طور پر یہ سیکھیں گے کہ کس طرح ریڈیس کلسٹر شارڈنگ کے ساتھ اعلی تھرو پٹ فراہم کرتا ہے۔

توسیع پذیری

سرور کو اسکیل کرنے کے لیے دو عام طریقے ہیں: عمودی اسکیلنگ اور افقی اسکیلنگ۔ عمودی اسکیلنگ یا اسکیلنگ اپ وہ جگہ ہے جہاں آپ اپنے سرور میں مزید طاقت اور وسائل شامل کرتے ہیں، جیسے زیادہ CPUs، میموری، اور اسٹوریج، جو کہ مہنگا ہے۔ دوسری طرف، افقی اسکیلنگ آپ کے موجودہ وسائل کے پول میں متعدد نوڈس کو شامل کر رہی ہے۔ اسے اسکیلنگ آؤٹ کہتے ہیں۔ لہٰذا، آپ کی حدود اور تقاضوں کی بنیاد پر، یہ آپ پر منحصر ہے کہ سرور کا ایک بڑا نمونہ رکھیں یا متعدد سرور نوڈس کو تعینات کریں۔

فرض کریں کہ آپ کے پاس 100 جی بی ریم ہے اور آپ کو 200 جی بی ڈیٹا رکھنے کی ضرورت ہے۔ اس صورت میں، آپ کے پاس دو انتخاب ہیں:







  • سسٹم میں مزید RAM شامل کرکے اسکیل اپ کریں۔
  • 100 GB RAM کے ساتھ ایک اور سرور مثال شامل کرکے اسکیل آؤٹ کریں۔

اگر آپ اپنے انفراسٹرکچر کے اندر زیادہ سے زیادہ RAM کی حد تک پہنچ گئے ہیں، تو اسکیل آؤٹ کرنا ایک بہترین طریقہ ہے۔ اس کے علاوہ، اسکیل آؤٹ کرنے سے ڈیٹا بیس کے تھرو پٹ میں بہت بڑے مارجن سے اضافہ ہوگا۔





ریڈیس شارڈنگ

یہ ایک معروف حقیقت ہے کہ Redis ایک ہی دھاگے پر کام کرتا ہے۔ لہذا، Redis آپ کے سرور کے CPU کے متعدد کور کو کمانڈ پر کارروائی کرنے کے لیے استعمال کرنے کے قابل نہیں ہے۔ لہذا، مزید CPU کور شامل کرنے سے آپ کو Redis کے ساتھ زیادہ تھرو پٹ یا کارکردگی نہیں ملتی ہے۔ یہ آپ کے ڈیٹا کو متعدد سرور مثالوں میں تقسیم کرنے کا معاملہ نہیں ہے۔ متعدد سرورز کو شامل کرنا اور ڈیٹا سیٹ کو ان میں تقسیم کرنا کلائنٹ کی درخواستوں کی پروسیسنگ کو متوازی طور پر قابل بناتا ہے، جس سے تھرو پٹ میں اضافہ ہوتا ہے۔ اس کے علاوہ، مجموعی کارکردگی لکیری کے قریب بڑھ سکتی ہے۔





اسکیلنگ کو ذہن میں رکھتے ہوئے متعدد سرورز کے درمیان ڈیٹا کو تقسیم کرنے یا تقسیم کرنے کے اس طریقہ کار کو کہا جاتا ہے۔ شارڈنگ . تمام سرورز جو ڈیٹا کے کچھ حصوں کو ذخیرہ کرتے ہیں کہلاتے ہیں۔ ٹکڑوں .



شارڈنگ کیسے کی جاتی ہے - الگورتھمک شارڈنگ

شارڈنگ کے ساتھ ایک اہم تشویش یہ تھی کہ متعدد Redis نوڈس کے درمیان دی گئی کلید کو کیسے تلاش کیا جائے۔ چونکہ ایک دی گئی کلید کو کسی بھی دستیاب شارڈز میں ذخیرہ کیا جا سکتا ہے، اس لیے مخصوص کلید تلاش کرنے کے لیے تمام شارڈز سے استفسار کرنا بہترین آپشن نہیں ہے۔ لہذا، ہر کلید کو ایک مخصوص شارڈ پر نقشہ کرنے کا ایک طریقہ ہونا چاہئے، اور Redis الگورتھمک شارڈنگ کی حکمت عملی استعمال کرتا ہے۔

سب سے عام طریقہ Redis کلیدی نام اور ماڈیولو کا استعمال کرتے ہوئے ہیش ویلیو کا حساب لگانا ہے۔ پھر، اسے سسٹم میں دستیاب Redis شارڈز سے تقسیم کریں۔

HASH_SLOT = CRC16 (کلیدی) موڈ 16384

یہ کافی اچھا حل ہے جب تک کہ شارڈز کی کل تعداد مستقل ہو۔ جب بھی آپ ایک نیا Reids سرور مثال شامل کرتے ہیں، ایک دی گئی کلید کے نتیجے میں آنے والی قدر بدل سکتی ہے کیونکہ شارڈز کی کل تعداد بڑھ گئی ہے۔ یہ غلط ریڈیس شارڈ سے استفسار کرے گا۔ لہذا، آپ کو ہر کلید کے لیے نئے شارڈ کا حساب لگا کر اور ڈیٹا کو درست سرور پر منتقل کرکے دوبارہ شارڈ کرنے کے عمل کی پیروی کرنی چاہیے، جو کہ بوجھل ہے اور کوئی معمولی کام نہیں ہے اگر آپ کی کل شارڈ کی تعداد وقتاً فوقتاً بڑھ رہی ہے۔

Redis ایک نئی منطقی ہستی کا استعمال کرتا ہے جسے a کہا جاتا ہے۔ ہیش سلاٹ اس مسئلہ کو روکنے کے لئے. دیے گئے شارڈ کے لیے کئی ہیش سلاٹ دستیاب ہیں، اور ایک ہیش سلاٹ میں متعدد Redis کیز ہو سکتی ہیں۔ ریڈیس ڈیٹا بیس کلسٹر میں 16384 ہیش سلاٹس ہیں جو کہ کوئی تبدیلی نہیں ہے۔ ماڈیولو ڈویژن شارڈ گنتی کے بجائے ہیش سلاٹس کی تعداد کے ساتھ کیا جاتا ہے۔ یہ مخصوص کلید کے لیے ہیش سلاٹ کی صحیح پوزیشن فراہم کرتا ہے یہاں تک کہ جب شارڈز کی تعداد بڑھ گئی ہو۔ یہ ہیش سلاٹس کو ایک شارڈ سے نئے میں منتقل کرکے دوبارہ شارڈ کرنے کے عمل کو آسان بناتا ہے جو ضرورت کے مطابق مختلف Redis مثالوں میں ڈیٹا کو تقسیم کرتا ہے۔

Redis Sharding کے فوائد

ریڈیس شارڈنگ کم سے کم تبدیلیوں کے ساتھ آپ کے ڈیٹا بیس سسٹم کو کئی فوائد فراہم کرتی ہے۔

بھاری پیداوار

چونکہ Redis سنگل تھریڈڈ ہے، اس لیے متعدد کلائنٹ کی درخواستوں پر کارروائی متعدد CPU کور کا استعمال کرتے ہوئے متوازی کارروائی نہیں کر سکتی۔ لہذا، نئے شارڈز یا سرور کی مثالیں شامل کرنا اس بات کی ضمانت دیتا ہے کہ آپ متوازی طور پر Redis آپریشن انجام دے سکتے ہیں۔ یہ آپ کے Redis ڈیٹا بیس میں فی سیکنڈ آپریشنز کو بڑھاتا ہے، جو آخر کار آپ کو اعلی تھرو پٹ دیتا ہے۔

اچھی فراہمی

شارڈنگ اپروچ کے ساتھ، ریڈیس کلسٹر ایک ماسٹر ریپلیکا فن تعمیر قائم کر سکتا ہے جو اعلی دستیابی اور پائیداری کو یقینی بناتا ہے۔

نقلیں پڑھیں

شارڈنگ آپ کو اپنے ڈیٹا کی صحیح کاپی رکھنے اور علیحدہ ریڈیس مثالوں کے ذریعے پڑھنے کے آپریشنز فراہم کرنے کے قابل بناتی ہے، جس سے آپ کے پڑھنے والے استفسار کے عمل کی کارکردگی میں اضافہ ہوتا ہے۔

ان فوائد کے علاوہ، جب آپ کے پاس Redis کلسٹر میں شارڈز کی تعداد یکساں ہوتی ہے تو شارڈنگ دماغ کو تقسیم کرنے کے حالات کا سبب بن سکتی ہے۔ لہذا، اپنے Redis کلسٹر میں شارڈز کی ایک طاق تعداد رکھنے کی سفارش کی جاتی ہے۔

نتیجہ

خلاصہ کرنے کے لیے، Redis sharding ڈیٹا کو متعدد سرورز کے درمیان تقسیم کر رہا ہے، جو آپ کے ڈیٹا بیس کے لیے اسکیلنگ اور ہائی تھرو پٹ کو قابل بناتا ہے۔ جیسا کہ زیر بحث آیا، Redis ایک الگورتھمک شارڈنگ کی حکمت عملی استعمال کرتا ہے تاکہ کلائنٹ کی درخواستوں کو درست شارڈ کی طرف اشارہ کیا جا سکے۔ جب شارڈز کی کل تعداد بڑھ جاتی ہے تو اس میں کچھ خرابیاں ہوتی ہیں۔ لہذا، شارڈز کی کل تعداد کے بجائے، Redis مناسب شارڈ کا حساب لگانے کے لیے ہیش سلاٹ کی تعداد کا استعمال کرتا ہے۔ شارڈنگ متعارف کرائے جانے کے ساتھ، Redis ڈیٹا بیس اعلی دستیابی، اعلی تھرو پٹ، اور اعلی کارکردگی فراہم کرتے ہیں۔