CAP اصول

Cap Principle



جائزہ

CAP اصولوں کو CAP بھی کہا جاتا ہے نظریہ ایک تقسیم شدہ نظام میں مراد ہے ، Consistency (مستقل مزاجی) ، Availability (دستیابی) ، Partition tolerance (پارٹیشن غلطی رواداری) ، تینوں مطابقت نہیں رکھتے ، زیادہ تر وہ صرف مطمئن کرسکتے ہیں۔ ان میں سے ایک ہی وقت میں | _ _ _ _ | ایک

20191212103254



  • مستقل مزاجی (2



    کیا ایک تقسیم وقت کے نظام میں تمام ڈیٹا بیک اپ ایک ہی وقت میں ایک ہی قیمت کے ہیں؟ (سخت مستقل مزاجی ، تمام نوڈس تازہ ترین اعداد و شمار کی اسی کاپی تک رسائی حاصل کرتے ہیں)



  • دستیابی (Consistency

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

  • تقسیم غلطی رواداری (Availability



    جب تقسیم شدہ نظام کو کسی بھی نیٹ ورک کی تقسیم میں ناکامی کا سامنا کرنا پڑتا ہے ، تو یہ اب بھی بیرونی خدمات فراہم کرسکتا ہے جو مستقل مزاجی اور دستیابی کو پورا کرتی ہے ، جب تک کہ پورے نیٹ ورک کا ماحول ناکام نہ ہو۔ اگر نظام وقت کی حد میں ڈیٹا مستقل مزاجی حاصل نہیں کرسکتا ہے تو ، اس کا مطلب یہ ہے کہ ایک تقسیم واقع ہوچکی ہے ، اور موجودہ کارروائی لازمی طور پر | _ _ + _ | Partition tolerance کے ساتھ کے درمیان انتخاب کریں۔

سی اے پی اصول استدلال

بنیادی منظر

سی اے پی کے بنیادی منظر نامے میں ، نیٹ ورک میں دو نوڈس N1 اور N2 موجود ہیں۔ یہ آسانی سے سمجھا جاسکتا ہے کہ N1 اور N2 بالترتیب دو کمپیوٹر ہیں ، اور ان کے مابین نیٹ ورک سے رابطہ قائم کیا جاسکتا ہے۔ N1 میں ایک ایپلی کیشن A ہے اور ڈیٹا بیس V. ، N2 میں ایک B2 اور ایک ڈیٹا بیس V بھی ہے۔ اب ، A اور B تقسیم شدہ نظام کے دو حصے ہیں ، اور V ڈیٹا اسٹوریج کے دو ذیلی ڈیٹا بیس ہیں تقسیم شدہ نظام کی

20191212110038

  • جب مستقل مزاجی کو پورا کیا جاتا ہے ، تو N1 اور N2 میں ڈیٹا ایک ہی ہوتا ہے ، V0 = V0۔
  • جب دستیابی پوری ہوجائے تو ، صارف کو فوری جواب ملے گا چاہے وہ N1 یا N2 کی درخواست کرے۔
  • تقسیم کی غلطی رواداری کو مطمئن کرنے کی صورت میں ، جب N1 اور N2 میں سے کوئی ایک کام بند ہے ، یا نیٹ ورک دستیاب نہیں ہے تو ، یہ N1 اور N2 کے معمول کے عمل کو متاثر نہیں کرے گا۔

نیٹ ورک عام طور پر کام کر رہا ہے اور در حقیقت بیک وقت ایک ہی وقت میں ملتا ہے

20191212111643

صارف N1 مشین سے ڈیٹا اپ ڈیٹ کی درخواست کرتا ہے ، اور پروگرام A ڈیٹا بیس V0 کو V1 میں اپ ڈیٹ کرتا ہے۔ تقسیم شدہ نظام ڈیٹا ایم کو ہم وقت سازی کرتا ہے ، V2 کو N2 میں ہم آہنگ کرتا ہے ، تاکہ N2 میں ڈیٹا V0 بھی V1 میں اپ ڈیٹ ہوجائے ، اور N2 میں موجود ڈیٹا N2 کی درخواست کا جواب دے۔

  • مستقل مزاجی: چاہے N1 اور N2 کے ڈیٹا بیس کے درمیان ڈیٹا بالکل یکساں ہو۔
  • دستیابی: چاہے N1 اور N2 بیرونی درخواستوں کا عام طور پر جواب دے سکے۔
  • تقسیم غلطی رواداری: چاہے N1 اور N2 کے مابین نیٹ ورک باہمی تعاون کے قابل ہے۔

نیٹ ورک غیر معمولی ہے ، کیپ صرف ایک ہی وقت میں ان میں سے دو کو پورا کرسکتا ہے

]

یہ فرض کرتے ہوئے کہ جب N1 اور N2 کے درمیان نیٹ ورک منقطع ہوجاتا ہے تو ، صارف N1 کو ڈیٹا اپ ڈیٹ کی درخواست بھیجتا ہے ، پھر N1 میں ڈیٹا V0 V1 میں اپ ڈیٹ ہوجائے گا۔ چونکہ نیٹ ورک منقطع ہے ، تقسیم شدہ نظام ایم کو بیک وقت چلاتا ہے ، لہذا N2 میں موجود ڈیٹا اب بھی V0 ہے۔ اس وقت ، صارف N2 کو ڈیٹا پڑھنے کی درخواست بھیجتا ہے۔ چونکہ اعداد و شمار کی ہم آہنگی نہیں کی گئی ہے ، لہذا ایپلی کیشن فوری طور پر تازہ ترین ڈیٹا V1 صارف کو واپس نہیں کرسکتا ہے۔ میں کیا کروں؟
یہاں دو اختیارات ہیں:

  • پہلے: اعداد و شمار کی مستقل مزاجی کو قربان کریں اور دستیابی کو یقینی بنائیں۔ پرانے ڈیٹا V0 کا صارف کو جواب دیں۔
  • دوسرا: قربانی کی دستیابی اور ڈیٹا کی مستقل مزاجی کو یقینی بنانا۔ نیٹ ورک کنکشن کی بحالی اور ڈیٹا اپ ڈیٹ آپریشن ایم مکمل ہونے تک بلاک اور انتظار کریں ، اور پھر صارف کو تازہ ترین ڈیٹا V1 کا جواب دیا جائے گا۔

خلاصہ

دراصل ، تقسیم شدہ نظاموں کے ل it ، وہ | _ _ + _ | نہیں ہے صرف ان میں سے کسی کو مطمئن کرسکتا ہے C لیکن جب نیٹ ورک میں کوئی مسئلہ ہو: کیونکہ A ضرور ملنا چاہئے ، لہذا صرف CAP 2 کے ساتھ دو میں سے ایک کا انتخاب کریں۔

تجارت سے دور کی حکمت عملی

P کی وجہ سے زیادہ سے زیادہ مطمئن کر سکتے ہیں A ایک ، تو مجھے تجارت بند کرنی ہوگی۔

  • سی کے بغیر پی

    اگر پی کی ضرورت نہیں ہے (تقسیم کی اجازت نہیں ہے) ، تو C (مضبوط مستقل مزاجی) اور A (دستیابی) کی ضمانت دی جاسکتی ہے۔ لیکن پی ترک کرنے کا مطلب یہ بھی ہے کہ سسٹم کی وسعت کو ترک کریں ، یعنی تقسیم شدہ نوڈس محدود ہیں ، اور بچوں کے نوڈس کو تعی .ن کرنے کا کوئی راستہ نہیں ہے۔ یہ تقسیم شدہ نظام ڈیزائن کے اصل ارادے کے خلاف ہے۔ روایتی رشتہ دار ڈیٹا بیس RDBMS: اوریکل اور ایس کیو ایل CA ہیں۔

  • اے پی کے بغیر سی پی

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

  • اے پی wihtout سی

    انتہائی دستیاب ہونے اور تقسیم کی اجازت دینے کے ل you ، آپ کو مستقل مزاجی ترک کرنے کی ضرورت ہے۔ ایک بار تقسیم ہونے کے بعد ، نوڈس کا رابطہ ختم ہوسکتا ہے۔ اعلی دستیابی کے ل each ، ہر نوڈ خدمات فراہم کرنے کے ل only صرف مقامی ڈیٹا کا استعمال کرسکتا ہے ، اور اس سے عالمی اعداد و شمار میں تضادات پیدا ہوجائیں گے۔ ایک عام ایپلی کیشن کسی مخصوص میٹر میں موبائل فون کے رش کے منظر کی طرح ہوتی ہے۔ صفحہ کا اشارہ ہے کہ جب آپ مصنوعات کو پہلے چند سیکنڈ میں براؤز کرتے ہیں تو انوینٹری موجود ہوتی ہے۔ جب آپ پروڈکٹ کو منتخب کرتے ہیں اور آرڈر دینے کی تیاری کرتے ہیں تو ، سسٹم آپ کو اشارہ کرتا ہے کہ آرڈر ناکام ہوگیا ہے اور پروڈکٹ فروخت ہوچکا ہے۔ . اصل میں یہ ہے کہ A (دستیابی) کے لحاظ سے پہلے نظام کی معمول کی خدمت کو یقینی بنائیں ، اور پھر ڈیٹا مستقل مزاجی کے لحاظ سے کچھ قربانیاں دیں۔ اگرچہ یہ کسی حد تک صارف کے تجربے کو متاثر کرے گا ، لیکن اس سے صارف کی خریداری کے عمل میں شدید رکاوٹ پیدا نہیں ہوگی۔

مرکزی دھارے میں تقسیم شدہ نظام کا انتخاب کیسے کریں

یوریکا قونصل زو کیپر نکوس وغیرہ
کیپ اے پی سی پی سی پی اے پی / سی پی سی پی
اتفاق رائے الگورتھم نہ کرو بیڑا زیب (PAXOS جیسے پروٹوکول) بیڑا بیڑا

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

اور پسند | _ _ + _ | اس طرح کے تقسیم کار کوارڈیننس اجزاء کے لئے ، ڈیٹا مستقل مزاجی ان کی سب سے بنیادی ضرورت ہے۔ لہذا انتہائی ماحول میں ، CAP کچھ درخواستیں ضائع ہوسکتی ہیں ، اور صارف پروگرام کو نتائج حاصل کرنے کے ل re دوبارہ درخواست کرنے کی ضرورت ہے ، اور ڈیٹا مستقل مزاجی کو بھی یقینی بنانا ہوگا۔

کے لئے | _ _ _ _ | کہنا ، سمجھنا 2 ایک ہی وقت میں ، متفقہ الگورتھم بھی استعمال ہوتا ہے AP ، نیکوس کو بیک وقت اے پی اور سی پی کا احساس کیسے ہوتا ہے .

مزید پڑھنے

تقسیم شدہ نظام کے ل.۔ Eureka ایک بنیادی ضرورت ہے ، Server تین میں سے ، صرف | _ _ _ _ | دونوں کے مابین تجارتی معاہدہ کریں اور Zookeeper کو بہتر بنانے کے لئے ہر ذریعہ آزمائیں .
کچھ معاملات میں ، ZooKeeper بمقابلہ Nacos آپ دیکھ سکتے ہیں کہ یہ کمپنیاں کس طرح منتخب کرتی ہیں:

حوالہ