Circuit breaker design pattern
سرکٹ بریکر ایک ڈیزائن پیٹرن ہے جو سافٹ ویئر کی ترقی میں استعمال ہوتا ہے۔ یہ ناکامیوں کا پتہ لگانے کے لیے استعمال ہوتا ہے اور دیکھ بھال، عارضی بیرونی نظام کی ناکامی یا غیر متوقع نظام کی مشکلات کے دوران ناکامی کو مسلسل بار بار ہونے سے روکنے کی منطق کو سمیٹتا ہے۔ عام استعمال فرض کریں کہ ایک ایپلیکیشن ڈیٹا بیس سے فی سیکنڈ 100 بار جڑتی ہے اور ڈیٹا بیس ناکام ہو جاتا ہے۔ ایپلیکیشن ڈیزائنر نہیں چاہتا کہ ایک ہی غلطی مسلسل دوبارہ پیش آئے۔ وہ ٹی سی پی کنکشن ٹائم آؤٹ کا انتظار کیے بغیر غلطی کو جلدی اور شائستگی سے سنبھالنا چاہتے ہیں۔ عام طور پر سرکٹ بریکر کا استعمال بیرونی سروس کی دستیابی کو چیک کرنے کے لیے کیا جا سکتا ہے۔ ایک بیرونی خدمت ڈیٹا بیس سرور یا ایپلی کیشن کے ذریعہ استعمال ہونے والی ویب سروس ہو سکتی ہے۔ سرکٹ بریکر ناکامیوں کا پتہ لگاتا ہے اور ایپلی کیشن کو اس عمل کو انجام دینے کی کوشش کرنے سے روکتا ہے جو ناکام ہونے کے لیے برباد ہے (جب تک کہ اسے دوبارہ آزمانا محفوظ نہ ہو)۔ سرکٹ بریکر ڈیزائن پیٹرن کے نفاذ کو درخواستوں کی ایک سیریز پر کنکشن کی حالت کو برقرار رکھنے کی ضرورت ہے۔ اصل درخواستوں سے ناکامیوں کا پتہ لگانے کے لیے اسے منطق کو آف لوڈ کرنا چاہیے۔ لہذا، سرکٹ بریکر کے اندر ریاستی مشین کو اس سے گزرنے والی درخواستوں کے ساتھ ساتھ کسی نہ کسی لحاظ سے کام کرنے کی ضرورت ہوتی ہے۔ اس کو حاصل کرنے کا ایک طریقہ غیر متزلزل ہے۔ ملٹی نوڈ (کلسٹرڈ) سرور میں، اپ اسٹریم سروس کی حالت کلسٹر کے تمام نوڈس میں ظاہر ہونے کی ضرورت ہوگی۔ لہذا، نفاذ کو مستقل اسٹوریج پرت استعمال کرنے کی ضرورت پڑ سکتی ہے، مثال کے طور پر۔ نیٹ ورک کیش جیسے میمکیچڈ یا ریڈیس، یا مقامی کیش (ڈسک یا میموری پر مبنی) جو ایپلی کیشن کے لیے بیرونی سروس کی دستیابی کو ریکارڈ کرتا ہے۔ سرکٹ بریکر ایک مقررہ وقفے پر بیرونی سروس کی حالت کو ریکارڈ کرتا ہے۔ ایپلیکیشن سے بیرونی سروس استعمال کرنے سے پہلے، موجودہ حالت کو دوبارہ حاصل کرنے کے لیے اسٹوریج پرت سے پوچھ گچھ کی جاتی ہے۔ کارکردگی کے مضمرات اگرچہ یہ کہنا محفوظ ہے کہ فوائد نتائج سے کہیں زیادہ ہیں، سرکٹ بریکر کو نافذ کرنے سے اسٹوریج کی جگہ، ایپلی کیشن کی پیچیدگی، اور عمل درآمد کرنے والی ایپلی کیشن کی کمپیوٹیشنل لاگت پر منفی اثر پڑے گا۔ اس کی وجہ یہ ہے کہ یہ سرکٹ کی حالت کی جانچ کرنے کے لیے عمل کے راستے میں اضافی کوڈ شامل کرتا ہے۔ یہ ذیل میں پی ایچ پی کی مثال میں دیکھا جا سکتا ہے، جہاں ڈیٹا بیس کی حیثیت کے لیے اے پی سی کو چیک کرنے میں چند اضافی چکروں کی لاگت آتی ہے۔ نیز، سرکٹ بریکر کوڈ کو چلانا خود اس سسٹم پر وسائل کا استعمال کرتا ہے جہاں یہ چل رہا ہے، اس طرح "حقیقی" ایپلی کیشنز کے لیے عمل درآمد کی طاقت کم رہ جاتی ہے۔ استعمال شدہ اسٹوریج پرت اور عام طور پر دستیاب وسائل پر کتنا انحصار کرتا ہے۔ اس سلسلے میں سب سے بڑے عوامل کیش کی قسم ہیں، مثال کے طور پر، ڈسک پر مبنی بمقابلہ میموری پر مبنی اور مقامی بمقابلہ نیٹ ورک۔ سرکٹ بریکر کی مختلف ریاستیں بند کھلی آدھی کھلی بند حالت جب سب کچھ معمول پر ہوتا ہے، تو سرکٹ بریکر بند رہتے ہیں، اور تمام درخواستیں خدمات تک پہنچ جاتی ہیں جیسا کہ نیچے دکھایا گیا ہے۔ اگر ناکامیوں کی تعداد حد سے آگے بڑھ جاتی ہے، تو سرکٹ بریکر سفر کرتا ہے اور کھلی حالت میں چلا جاتا ہے۔ کھلی حالت اس حالت میں سرکٹ بریکر خدمات کو مدعو کیے بغیر بھی فوری طور پر ایک غلطی واپس کرتا ہے۔ سرکٹ بریکر ٹائم آؤٹ پیریڈ گزرنے کے بعد نصف کھلی حالت میں چلے جاتے ہیں۔ عام طور پر، اس میں ایک نگرانی کا نظام ہوگا جہاں ٹائم آؤٹ کی وضاحت کی جائے گی۔ نصف کھلی حالت اس حالت میں، سرکٹ بریکر مائیکرو سروس کی طرف سے محدود تعداد میں درخواستوں کو پاس تھرو کرنے اور آپریشن کی درخواست کرنے کی اجازت دیتا ہے۔ اگر درخواستیں کامیاب ہوتی ہیں، تو سرکٹ بریکر بند حالت میں چلا جائے گا۔ تاہم، اگر درخواستیں ناکام ہوتی رہیں، تو یہ واپس اوپن اسٹیٹ میں چلا جاتا ہے۔ مثال کے نفاذ پی ایچ پی مندرجہ ذیل پی ایچ پی میں ایک نمونہ عمل درآمد ہے۔ تصور کا ثبوت مائی ایس کیو ایل سرور کی حیثیت کو مشترکہ میموری کیش (اے پی سی) میں محفوظ کرتا ہے۔ چیک کریں مندرجہ ذیل اسکرپٹ کو ایک مقررہ وقفے پر کرونٹیب کے ذریعے چلایا جا سکتا ہے۔ اگر ("مقامی میزبان"، "صارف نام"، "پاس ورڈ") ؛ اگر ("مائی ایس کیو ایل آئی-> کنیکٹ _ ایرر") {اے پی سی _ اسٹور ("ڈی بی اسٹیٹس"، "ڈاؤن") ؛} اور {اے پی سی _ اسٹور ("ڈی بی اسٹیٹس"، "اپ") ؛ $مائی ایس کیو ایل آئی-> کلوز () ؛} کسی ایپلیکیشن میں استعمال اگر (اے پی سی _ فیچ ("ڈی بی اسٹیٹس") = = = "ڈاؤن") {ایکو "ڈیٹا بیس سرور فی الحال دستیاب نہیں ہے۔ براہ کرم ایک منٹ میں دوبارہ کوشش کریں۔ "؛ باہر نکلیں ؛} $میسکلی = نیا میسکلی (" "لوکل ہوسٹ" "،" "صارف نام" "،" "ڈیٹا بیس" ") ؛ $نتیجہ = $میسکلی-> استفسار (" "ٹیبل سے منتخب کریں" ") ؛ بیرونی لنکس خاکے کے ساتھ پی ایچ پی کے نفاذ کی مثال پولی کے ساتھ سی #کا استعمال کرتے ہوئے سی #کے نفاذ کی مثال اینڈرس لائبیکرز سے پولی پولی نیو جیٹ پیکیج کا استعمال کرتے ہوئے الیگزینڈر نکیتن سے سی #کے نفاذ کی مثال پائیتھن اسٹیبلٹی پیٹرن میں الیگزینڈر نکیتن کے نفاذ میں لاگو پائیتھن اسٹیبلٹی پیٹرن میں لاگو ہوتے ہیں مثال کے طور پر پی ایچ پی کوڈ والے مضامین"