پیغام بروکرز کو سمجھنا۔ ActiveMQ اور Kafka کے ساتھ پیغام رسانی کی میکانکس سیکھنا۔ باب 1

ہر کسی کو خوش!

میں نے ایک چھوٹی سی کتاب کا ترجمہ شروع کیا:
«پیغام بروکرز کو سمجھنا
مصنف: Jakub Korab، پبلشر: O'Reilly Media, Inc.، اشاعت کی تاریخ: جون 2017، ISBN: 9781492049296۔

کتاب کے تعارف سے:
"... یہ کتاب آپ کو بروکر کے پیغام رسانی کے نظام کے بارے میں سوچنے کا طریقہ سکھائے گی، دو مقبول بروکر ٹیکنالوجیز کا موازنہ اور ان میں تضاد: Apache ActiveMQ اور Apache Kafka۔ یہ استعمال کے معاملات اور ترقی کی ترغیبات کا خاکہ پیش کرے گا جس کی وجہ سے ان کے ڈویلپرز کو ایک ہی علاقے میں بہت مختلف نقطہ نظر اختیار کرنے پر مجبور کیا گیا — ایک انٹرمیڈیٹ بروکر کے ساتھ سسٹمز کے درمیان پیغام رسانی۔ ہم ان ٹیکنالوجیز کو زمین سے دیکھیں گے اور راستے میں مختلف ڈیزائن کے انتخاب کے اثرات کو اجاگر کریں گے۔ آپ دونوں پروڈکٹس کے بارے میں گہری سمجھ حاصل کریں گے، اس بات کی سمجھ حاصل کریں گے کہ انہیں کس طرح استعمال کیا جانا چاہئے اور کس طرح نہیں ہونا چاہئے، اور یہ سمجھنا چاہئے کہ مستقبل میں دیگر پیغام رسانی کی ٹیکنالوجیز پر غور کرتے وقت کن چیزوں کو تلاش کرنا چاہئے۔ ... "

اب تک ترجمہ شدہ حصے:
باب 1 تعارف
باب 3۔ کافکا

میں مکمل ابواب پوسٹ کروں گا جیسا کہ ان کا ترجمہ کیا جائے گا۔

سبق نمبر 1

تعارف

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

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

ہاں کچھ سنا سنا لگتا ہے؟

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

بروکرز کیسے کام کرتے ہیں اس کی گہری سمجھ کے بغیر، لوگ اپنے پیغام رسانی کے نظام کے بارے میں بظاہر معقول بیانات دیتے ہیں، جیسے:

  • سسٹم کبھی بھی پیغامات سے محروم نہیں ہوگا۔
  • پیغامات پر ترتیب وار کارروائی کی جائے گی۔
  • صارفین کو شامل کرنے سے سسٹم تیز تر ہو جائے گا۔
  • پیغامات صرف ایک بار ڈیلیور کیے جائیں گے۔

بدقسمتی سے، ان میں سے کچھ بیانات مفروضوں پر مبنی ہیں جو صرف مخصوص حالات میں لاگو ہوتے ہیں، جبکہ دیگر محض غلط ہیں۔

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

اس سے پہلے کہ ہم شروع کریں، آئیے بنیادی باتوں پر جائیں۔

پیغام رسانی کا نظام کیا ہے اور اس کی ضرورت کیوں ہے؟

دو ایپلی کیشنز کو ایک دوسرے کے ساتھ بات چیت کرنے کے لیے، انہیں پہلے ایک انٹرفیس کی وضاحت کرنی ہوگی۔ اس انٹرفیس کی تعریف میں ایک ٹرانسپورٹ یا پروٹوکول کا انتخاب کرنا شامل ہے، جیسے کہ HTTP، MQTT، یا SMTP، اور پیغامات کے فارمیٹس پر گفت و شنید کرنا جن کا نظام کے درمیان تبادلہ کیا جائے گا۔ یہ ایک سخت عمل ہو سکتا ہے، جیسے کہ پیغام پے لوڈ لاگت کے تقاضوں کے ساتھ XML سکیما کی وضاحت کرنا، یا یہ بہت کم رسمی ہو سکتا ہے، جیسے کہ دو ڈویلپرز کے درمیان معاہدہ کہ HTTP درخواست کے کچھ حصے میں کلائنٹ کا شناخت کنندہ شامل ہو گا۔

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

پیغام رسانی کے نظام میں عام طور پر دو نظاموں کے درمیان ایک ثالث شامل ہوتا ہے جو وصول کنندہ یا وصول کنندگان سے بھیجنے والے کو مزید دوگنا (علیحدہ) کرنے کے لیے تعامل کرتا ہے۔ اس صورت میں، پیغام رسانی کا نظام بھیجنے والے کو یہ جانے بغیر پیغام بھیجنے کی اجازت دیتا ہے کہ وصول کنندہ کہاں ہے، آیا وہ فعال ہے، یا اس کی کتنی مثالیں ہیں۔

آئیے اس قسم کے مسائل کے لیے چند مشابہتیں دیکھتے ہیں جنہیں پیغام رسانی کا نظام حل کرتا ہے اور کچھ بنیادی اصطلاحات متعارف کراتے ہیں۔

ایک جگہ سے دوسری جگہ

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

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

"پائیدار" کی اصطلاح قطاروں پر لاگو ہوتی ہے۔ وشوسنییتا ایک سروس پراپرٹی ہے جو اس بات کو یقینی بناتی ہے کہ پیغام رسانی کا نظام فعال سبسکرائبرز کی غیر موجودگی میں پیغامات کو برقرار رکھے گا جب تک کہ صارف پیغام کی ترسیل کے لیے قطار میں سبسکرائب نہیں کرتا۔

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

پبلشر-سبسکرائبر

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

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

موضوعات عام طور پر ہوتے ہیں۔ ناقابل اعتماد (ناقابل اعتماد). بالکل ایسے ہی جیسے ایک سامع جو کانفرس کال پر کہی گئی بات نہیں سن سکتا جب سامع کا رابطہ منقطع ہو جاتا ہے، موضوع کے سبسکرائبرز آف لائن ہونے کے دوران بھیجے گئے پیغامات سے محروم رہتے ہیں۔ اس وجہ سے، ہم کہہ سکتے ہیں کہ موضوعات ترسیل کی ضمانت فراہم کرتے ہیں۔ ایک بار سے زیادہ نہیں۔ ہر صارف کے لیے۔

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

ہائبرڈ ماڈلز

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

استعمال کے معاملات میں اکثر پبلش-سبسکرائب اور پوائنٹ ٹو پوائنٹ میسجنگ ماڈلز کے امتزاج کی ضرورت ہوتی ہے، جیسے کہ جب متعدد سسٹمز کو ایک پیغام کی کاپی درکار ہوتی ہے اور پیغام کے نقصان کو روکنے کے لیے قابل اعتمادی اور مستقل مزاجی دونوں کی ضرورت ہوتی ہے۔

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

ہائبرڈ ماڈل نئے نہیں ہیں اور زیادہ تر پیغام رسانی کے نظاموں میں استعمال کیے جا سکتے ہیں، بشمول ActiveMQ (مجازی یا جامع منزلوں کے ذریعے جو عنوانات اور قطاروں کو یکجا کرتے ہیں) اور کافکا (ماضی طور پر، اس کی منزل کے ڈیزائن کی بنیادی ملکیت کے طور پر)۔

اب جب کہ ہمارے پاس کچھ بنیادی اصطلاحات اور اس بات کی سمجھ ہے کہ ہم پیغام رسانی کا نظام کس چیز کے لیے استعمال کر سکتے ہیں، آئیے تفصیلات پر اترتے ہیں۔

ترجمہ ہو گیا: tele.gg/middle_java

درج ذیل ترجمہ شدہ حصہ: باب 3۔ کافکا

جاری رکھنا ...

ماخذ: www.habr.com

نیا تبصرہ شامل کریں