Publish–subscribe pattern
سافٹ ویئر فن تعمیر میں، پبلش-سبسکرائب ایک پیغام رسانی کا نمونہ ہے جہاں پبلشرز پیغامات کو ان کلاسوں میں درجہ بندی کرتے ہیں جو صارفین کو موصول ہوتے ہیں۔ یہ عام میسجنگ پیٹرن ماڈل کے برعکس ہے جہاں پبلشرز براہ راست صارفین کو پیغامات بھیجتے ہیں۔ اسی طرح، سبسکرائبرز ایک یا زیادہ کلاسوں میں دلچسپی کا اظہار کرتے ہیں اور صرف ایسے پیغامات وصول کرتے ہیں جو دلچسپی کے حامل ہوتے ہیں، بغیر یہ جانے کہ کون سے پبلشرز ہیں، اگر کوئی ہیں۔ پبلش سبسکرائب میسج کیو پیراڈائم کا ایک بہن بھائی ہے، اور عام طور پر بڑے میسج پر مبنی مڈل ویئر سسٹم کا ایک حصہ ہے۔ زیادہ تر پیغام رسانی کے نظام اپنے API میں پب/سب اور میسج کیو ماڈل دونوں کی حمایت کرتے ہیں۔ مثال کے طور پر، جاوا میسج سروس (JMS)۔ یہ نمونہ زیادہ نیٹ ورک اسکیل ایبلٹی اور زیادہ متحرک نیٹ ورک ٹوپولوجی فراہم کرتا ہے، جس کے نتیجے میں پبلشر اور شائع شدہ ڈیٹا کے ڈھانچے میں ترمیم کرنے کی لچک کم ہوتی ہے۔ میسج فلٹرنگ پبلش سبسکرائب ماڈل میں، صارفین عام طور پر شائع شدہ کل پیغامات کا صرف ایک ذیلی سیٹ وصول کرتے ہیں۔ استقبالیہ اور پروسیسنگ کے لیے پیغامات کو منتخب کرنے کے عمل کو فلٹرنگ کہا جاتا ہے۔ فلٹرنگ کی دو عام شکلیں ہیں: موضوع پر مبنی اور مواد پر مبنی۔ موضوع پر مبنی نظام میں، پیغامات کو "موضوعات" یا نامی منطقی چینلز پر شائع کیا جاتا ہے۔ موضوع پر مبنی نظام میں سبسکرائبرز کو ان موضوعات پر شائع ہونے والے تمام پیغامات موصول ہوں گے جن کی وہ سبسکرائب کرتے ہیں۔ ناشر ان موضوعات کی وضاحت کرنے کا ذمہ دار ہے جن کے سبسکرائبر سبسکرائب کر سکتے ہیں۔ مواد پر مبنی نظام میں، پیغامات صرف اس صورت میں سبسکرائبر کو پہنچائے جاتے ہیں جب ان پیغامات کی صفات یا مواد سبسکرائبر کی طرف سے بیان کردہ رکاوٹوں سے میل کھاتا ہو۔ سبسکرائبر پیغامات کی درجہ بندی کے لیے ذمہ دار ہے۔ کچھ نظام دونوں کے ہائبرڈ کی حمایت کرتے ہیں۔ پبلشرز کسی موضوع پر پیغامات پوسٹ کرتے ہیں جبکہ سبسکرائبرز ایک یا زیادہ موضوعات پر مواد پر مبنی سبسکرپشنز رجسٹر کرتے ہیں۔ بہت سے پبلش سبسکرائب سسٹمز میں، پبلشرز انٹرمیڈیٹری میسج بروکر یا ایونٹ بس کو پیغامات پوسٹ کرتے ہیں، اور سبسکرائبرز اس بروکر کے ساتھ سبسکرپشن رجسٹر کرتے ہیں، جس سے بروکر فلٹرنگ انجام دے سکتا ہے۔ بروکر عام طور پر ایک اسٹور انجام دیتا ہے اور ناشرین سے صارفین تک پیغامات بھیجنے کے لیے فارورڈ فنکشن انجام دیتا ہے۔ اس کے علاوہ، بروکر روٹنگ سے پہلے قطار میں پیغامات کو ترجیح دے سکتا ہے۔ سبسکرائبرز تعمیر کے وقت، شروعات کے وقت یا رن ٹائم پر مخصوص پیغامات کے لیے اندراج کر سکتے ہیں۔ جی یو آئی سسٹمز میں، صارفین کو صارف کے کمانڈ کو سنبھالنے کے لیے کوڈ کیا جا سکتا ہے (مثال کے طور پر، بٹن پر کلک کرنا)، جو بلڈ ٹائم رجسٹریشن سے مطابقت رکھتا ہے۔ کچھ فریم ورک اور سافٹ ویئر پروڈکٹ صارفین کو رجسٹر کرنے کے لیے ایکس ایم ایل کنفیگریشن فائلوں کا استعمال کرتے ہیں۔ یہ کنفیگریشن فائلیں ابتدائی وقت پر پڑھی جاتی ہیں۔ سب سے زیادہ نفیس متبادل یہ ہے کہ جب صارفین کو رن ٹائم پر شامل یا ہٹایا جا سکتا ہے۔ یہ مؤخر الذکر نقطہ نظر استعمال کیا جاتا ہے، مثال کے طور پر، ڈیٹا بیس ٹرگرز، میلنگ لسٹس، اور آر ایس ایس میں۔ ڈیٹا ڈسٹری بیوشن سروس (ڈی ڈی ایس) مڈل ویئر بیچ میں بروکر کا استعمال نہیں کرتا ہے۔ اس کے بجائے، پب/ذیلی نظام میں ہر پبلشر اور سبسکرائبر آئی پی ملٹی کاسٹ کے ذریعے ایک دوسرے کے بارے میں میٹا ڈیٹا شیئر کرتے ہیں۔ ناشر اور سبسکرائبر اس معلومات کو مقامی طور پر کیش کرتے ہیں اور مشترکہ ادراک میں ایک دوسرے کی دریافت کی بنیاد پر پیغامات کو روٹ کرتے ہیں۔ درحقیقت، بروکر لیس آرکیٹیکچرز کو ایک اوورلے نیٹ ورک کی تعمیر کے لیے پبلش/سبسکرائب سسٹم کی ضرورت ہوتی ہے جو ناشرین سے صارفین تک موثر وکندریقرت روٹنگ کی اجازت دیتا ہے۔ یہ جان کلین برگ نے دکھایا کہ موثر وکندریقرت روٹنگ کے لیے نیویگیبل سمال ورلڈ ٹوپولوجیز کی ضرورت ہوتی ہے۔ اس طرح کی چھوٹی دنیا کی ٹوپولوجیز کو عام طور پر وکندریقرت یا وفاقی اشاعت/سبسکرائب سسٹم کے ذریعے نافذ کیا جاتا ہے۔ لوکلٹی سے آگاہ پبلش/سبسکرائب سسٹم سمال ورلڈ ٹوپولوجیز کی تعمیر کرتے ہیں جو سبسکرپشنز کو مختصر فاصلے اور کم لاگت والے لنکس کے ذریعے روٹ کرتے ہیں جس سے سبسکرپشن ڈیلیوری کا وقت کم ہوتا ہے۔ سب سے پہلے عوامی طور پر بیان کردہ پب/ذیلی نظاموں میں سے ایک آئیسس ٹول کٹ کا "نیوز" ذیلی نظام تھا، جسے 1987 میں ایسوسی ایشن فار کمپیوٹنگ مشینری (اے سی ایم) سمپوزیم آن آپریٹنگ سسٹمز پرنسپلز کانفرنس (ایس او ایس پی '87) میں بیان کیا گیا تھا۔ 123-138 "۔ فوائد ڈھیلے جوڑے کے پبلشرز صارفین کے ساتھ آسانی سے جڑے ہوتے ہیں، اور انہیں ان کے وجود کے بارے میں جاننے کی بھی ضرورت نہیں ہوتی ہے۔ موضوع پر توجہ مرکوز ہونے کے ساتھ، ناشرین اور صارفین کو سسٹم ٹوپولوجی سے ناواقف رہنے کی اجازت ہے۔ ہر ایک دوسرے سے آزادانہ طور پر معمول کے مطابق کام کرنا جاری رکھ سکتا ہے۔ روایتی مضبوطی سے جڑے ہوئے کلائنٹ-سرور کے نمونے میں، کلائنٹ سرور پر پیغامات پوسٹ نہیں کر سکتا جب تک کہ سرور کا عمل نہیں چل رہا ہو، اور نہ ہی سرور پیغامات وصول کر سکتا ہے جب تک کہ کلائنٹ چل رہا ہو۔ بہت سے پب/ذیلی نظام نہ صرف ناشرین اور صارفین کے مقامات کو ڈیکپل کرتے ہیں بلکہ انہیں عارضی طور پر بھی ڈیکپل کرتے ہیں۔ اس طرح کے پب/ذیلی نظام کے ساتھ مڈل ویئر تجزیہ کاروں کے ذریعہ استعمال کی جانے والی ایک عام حکمت عملی یہ ہے کہ کسی پبلشر کو ہٹایا جائے تاکہ سبسکرائبر کو بیک لاگ (بینڈوڈتھ تھروٹلنگ کی ایک شکل) کے ذریعے کام کرنے کی اجازت دی جا سکے۔ اسکیل ایبلٹی پب/سب متوازی آپریشن، میسج کیشنگ، ٹری پر مبنی یا نیٹ ورک پر مبنی روٹنگ وغیرہ کے ذریعے روایتی کلائنٹ سرور سے بہتر اسکیل ایبلٹی کا موقع فراہم کرتا ہے۔ تاہم، بعض قسم کے مضبوطی سے جڑے ہوئے، اعلی حجم والے انٹرپرائز ماحول میں، جیسے جیسے سسٹم پب/ذیلی انفراسٹرکچر کا اشتراک کرنے والے ہزاروں سرورز کے ساتھ ڈیٹا سینٹر بن جاتے ہیں، موجودہ وینڈر سسٹم اکثر اس فائدہ کو کھو دیتے ہیں۔ ان سیاق و سباق میں زیادہ بوجھ کے تحت پب/ذیلی مصنوعات کے لیے اسکیل ایبلٹی ایک تحقیقی چیلنج ہے۔ انٹرپرائز ماحول سے باہر، دوسری طرف، پب/ذیلی نمونہ نے ایک واحد ڈیٹا سینٹر سے کہیں زیادہ حجم تک اپنی توسیع پذیری کو ثابت کیا ہے، جو آر ایس ایس اور ایٹم جیسے ویب سنڈیکیشن پروٹوکول کے ذریعے انٹرنیٹ بھر میں تقسیم شدہ پیغامات فراہم کرتا ہے۔ یہ سنڈیکیشن پروٹوکول (ممکنہ طور پر) لاکھوں علیحدہ سبسکرائبر نوڈس میں پیغامات کو سنڈیکیٹ کرنے کی صلاحیت کے بدلے میں اعلی تاخیر اور ترسیل کی ضمانتوں کی کمی کو قبول کرتے ہیں۔ نقصانات پب/ذیلی نظام کے ساتھ سب سے سنگین مسائل ان کے بنیادی فائدے کا ایک ضمنی اثر ہیں: ناشر کا سبسکرائبر سے الگ ہونا۔ پیغامات کی ترسیل کے مسائل ایک پب/ذیلی نظام کو احتیاط سے ڈیزائن کیا جانا چاہیے تاکہ نظام کی مضبوط خصوصیات فراہم کی جا سکیں جن کی کسی خاص ایپلی کیشن کو ضرورت ہو سکتی ہے، جیسے کہ یقینی ترسیل۔ پب/ذیلی نظام میں بروکر کو ایک مخصوص وقت کے لیے پیغامات پہنچانے کے لیے ڈیزائن کیا جا سکتا ہے، لیکن پھر ڈیلیوری کی کوشش کرنا بند کر دیتا ہے، چاہے اسے تمام صارفین کی طرف سے پیغام کی کامیاب وصولی کی تصدیق موصول ہوئی ہو یا نہیں۔ اس طرح سے ڈیزائن کیا گیا پب/ذیلی نظام کسی بھی ایپلی کیشن کو پیغامات کی فراہمی کی ضمانت نہیں دے سکتا جس کے لیے اس طرح کی یقینی ترسیل کی ضرورت ہو۔ اس طرح کے پبلشر اور سبسکرائبر جوڑے کے ڈیزائن کی سخت جوڑی کو پب/ذیلی فن تعمیر سے باہر نافذ کیا جانا چاہیے تاکہ اس طرح کی یقینی ترسیل کو پورا کیا جا سکے (جیسے۔ سبسکرائبر سے رسید کے پیغامات شائع کرنے کا مطالبہ کرکے)۔ پب/ذیلی نظام میں ایک پبلشر یہ فرض کر سکتا ہے کہ ایک سبسکرائبر سن رہا ہے، جب حقیقت میں ایسا نہیں ہے۔ ایک فیکٹری ایک پب/ذیلی نظام کا استعمال کر سکتی ہے جہاں آلات کسی سبسکرائبر کو مسائل یا ناکامیوں کو شائع کر سکتے ہیں جو ان مسائل کو ظاہر اور لاگ ان کرتا ہے۔ اگر لاگر ناکام ہو جاتا ہے (کریش ہو جاتا ہے)، تو آلات کے مسئلے کے ناشرین کو ضروری نہیں کہ لاگر کی ناکامی کا نوٹس موصول ہو، اور غلطی کے پیغامات پب/ذیلی نظام پر کسی بھی سامان کے ذریعے ظاہر یا ریکارڈ نہیں کیے جائیں گے۔ یہ کلائنٹ/سرور سسٹم جیسے متبادل میسجنگ آرکیٹیکچرز کے لیے بھی ایک ڈیزائن چیلنج ہے۔ کلائنٹ/سرور سسٹم میں، جب کوئی ایرر لاگر ناکام ہوجاتا ہے، تو سسٹم کو ایرر لاگر (سرور) کی ناکامی کا اشارہ ملے گا۔ تاہم، کلائنٹ/سرور سسٹم کو بے کار لاگنگ سرورز آن لائن رکھ کر، یا فعال طور پر فال بیک لاگنگ سرورز بنا کر اس ناکامی سے نمٹنا پڑے گا۔ یہ کلائنٹ اور سرور کے ڈیزائن کے ساتھ ساتھ کلائنٹ/سرور فن تعمیر میں بھی پیچیدگی کا اضافہ کرتا ہے۔ تاہم، ایک پب/ذیلی نظام میں، بے کار لاگنگ سبسکرائبرز جو موجودہ لاگر کی بالکل نقل ہیں، کو سسٹم میں شامل کیا جا سکتا ہے تاکہ سسٹم پر کسی دوسرے آلات پر کسی اثر کے بغیر لاگنگ کی وشوسنییتا کو بڑھایا جا سکے۔ کسی پب/ذیلی نظام میں، آلات کے مسئلہ پیغام لاگنگ کی بنیادی فعالیت کو نافذ کرنے کے بعد، یقینی غلطی پیغام لاگنگ کی خصوصیت کو اضافی طور پر شامل کیا جا سکتا ہے۔ پبلشر اور سبسکرائبر نوڈس کی ایک چھوٹی سی تعداد اور کم پیغام کے حجم کے ساتھ چھوٹے نیٹ ورکس کے لیے پب/ذیلی نمونہ اچھی طرح سے پیمائش کرتا ہے۔ تاہم، جیسے جیسے نوڈس اور پیغامات کی تعداد بڑھتی ہے، عدم استحکام کا امکان بڑھتا ہے، جس سے پب/ذیلی نیٹ ورک کی زیادہ سے زیادہ وسعت کو محدود کیا جاتا ہے۔ بڑے پیمانے پر تھرو پٹ کی عدم استحکام کی مثالوں میں شامل ہیں: لوڈ سرجز-وہ ادوار جب سبسکرائبر سیچوریٹ نیٹ ورک تھرو پٹ کی درخواست کرتا ہے جس کے بعد کم میسج والیوم (کم استعمال شدہ نیٹ ورک بینڈوتھ) کی مدت ہوتی ہے-جیسے جیسے زیادہ سے زیادہ ایپلی کیشنز سسٹم کا استعمال کرتی ہیں (چاہے وہ علیحدہ پب/ذیلی چینلز پر بات چیت کر رہے ہوں) انفرادی سبسکرائبر کے لیے میسج والیوم کا بہاؤ سست ہو جائے گا۔ بروکرز (سرورز) استعمال کرنے والے پب/ذیلی سسٹمز کے لیے، بروکر کے لیے سبسکرائبر کو پیغامات بھیجنے کی دلیل بینڈ میں ہوتی ہے، اور حفاظتی مسائل سے مشروط ہو سکتی ہے۔ بروکرز کو غلط کلائنٹ کو اطلاعات بھیجنے میں بے وقوف بنایا جا سکتا ہے، جس سے کلائنٹ کے خلاف سروس کی درخواستوں سے انکار بڑھ جاتا ہے۔ بروکرز خود اوورلوڈ ہو سکتے ہیں کیونکہ وہ تخلیق شدہ سبسکرپشنز کو ٹریک کرنے کے لیے وسائل مختص کرتے ہیں۔ یہاں تک کہ ایسے نظاموں کے ساتھ جو بروکرز پر انحصار نہیں کرتے ہیں، ایک سبسکرائبر ڈیٹا وصول کرنے کے قابل ہو سکتا ہے جو اسے وصول کرنے کا اختیار نہیں ہے۔ ایک غیر مجاز پبلشر پب/ذیلی نظام میں غلط یا نقصان دہ پیغامات متعارف کرانے کے قابل ہو سکتا ہے۔ یہ خاص طور پر ان نظاموں کے ساتھ سچ ہے جو اپنے پیغامات کو نشر یا ملٹی کاسٹ کرتے ہیں۔ خفیہ کاری (مثلا۔ ٹرانسپورٹ لیئر سیکیورٹی (ایس ایس ایل/ٹی ایل ایس) غیر مجاز رسائی کو روک سکتی ہے، لیکن مجاز ناشرین کے ذریعے نقصان دہ پیغامات کو متعارف کرانے سے نہیں روک سکتی۔ پب/سب کے علاوہ دیگر آرکیٹیکچرز، جیسے کلائنٹ/سرور سسٹم، بھی مجاز پیغام بھیجنے والوں کے لیے کمزور ہیں جو بدنیتی سے برتاؤ کرتے ہیں۔ ایٹم، ایک اور انتہائی اسکیل ایبل ویب سنڈیکیشن پروٹوکول ڈیٹا ڈسٹری بیوشن سروس (ڈی ڈی ایس) ایونٹ پر مبنی پروگرامنگ ہائی لیول آرکیٹیکچر انٹرنیٹ گروپ مینجمنٹ پروٹوکول (آئی جی ایم پی) میسج بروکرز میسج کیو آبزرور پیٹرن پروڈیوسر-کنزیومر دشواری پش ٹیکنالوجی آر ایس ایس، ایک انتہائی اسکیل ایبل ویب سنڈیکیشن پروٹوکول یوزنیٹ ویب سب، پب/ذیلی حوالہ جات آرکیٹیکچرل پیٹرن (کمپیوٹر سائنس) ڈسٹری بیوٹڈ کمپیوٹنگ آرکیٹیکچر میسج پر مبنی مڈل ویئر سافٹ ویئر ڈیزائن پیٹرن کا نفاذ بھی دیکھیں۔