ایپلیکیشنز کی دستیابی کو کبھی بھی اتنی سنجیدگی سے نہیں لیا گیا جتنا آج ہے جب ہم ایپس کا استعمال محض مواصلت کے لیے کرتے ہیں، چاہے ذاتی ہو یا پیشہ ورانہ اور جب ایپس کاروبار ہوں۔
وہ ایپلیکیشنز جو مسلسل آن لائن نہیں ہوتیں، یا غیر مستحکم ہوتی ہیں، اپنے صارفین اور مطابقت کھو دیتی ہیں، آخر کار متروک ہو جاتی ہیں۔ یہ ایک جھٹکے میں ہوا۔ چونکہ انٹرنیٹ کبھی نہیں سوتا اور دن میں 24 گھنٹے، ہفتے کے 7 دن کام کرتا ہے، اسی خیال کا اطلاق ایپس پر بھی ہونا چاہیے۔
اسکیل ایبلٹی ایسا کرنے اور درخواست کی دستیابی کو یقینی بنانے کے لیے اہم ہے۔ لوڈ بیلنسنگ دستیابی کو یقینی بنانے میں سب سے اہم اجزاء میں سے ایک ہے۔ بہت سے لوگ اب بھی یقین رکھتے ہیں کہ لوڈ بیلنسنگ کو ایک سادہ اسکرپٹ سے پورا کیا جا سکتا ہے۔
تاہم، یہ معاملہ نہیں ہے. یہ تنہا کسی بھی وقت اور کسی بھی ڈیوائس سے پوری دنیا کے پروگراموں تک رسائی فراہم کرتا ہے۔
اس پوسٹ میں، ہم لوڈ بیلنسنگ، اس کے الگورتھم، اور دیگر چیزوں کے علاوہ، مائیکرو سروسز سے اس کا تعلق کیسے ہے اس پر گہری نظر ڈالیں گے۔ چلو شروع کریں!
لوڈ بیلنس کیا ہے؟
جیسے جیسے کسی ویب سائٹ یا کاروباری ایپلیکیشن کی مانگ بڑھتی ہے، ایک ہی سرور جلد ہی پورے بوجھ کو سنبھالنے سے قاصر ہو جائے گا۔ تنظیمیں طلب کو پورا کرنے کے لیے کام کے بوجھ کو متعدد سرورز پر تقسیم کرتی ہیں۔ یہ طریقہ، جسے "لوڈ بیلنسنگ" کے نام سے جانا جاتا ہے، ایک سرور کو اوور لوڈ ہونے سے روکتا ہے، جس کی وجہ سے یہ سست ہو سکتا ہے، درخواستیں کم ہو سکتی ہیں، یا یہاں تک کہ کریش ہو سکتی ہیں۔
وسائل کے زیادہ بوجھ کی وجہ سے ناکامی سے بچنے کے لیے لوڈ بیلنسنگ نیٹ ورک ٹریفک کو یکساں طور پر تقسیم کرتا ہے۔ ایپلیکیشنز، ویب سائٹس، ڈیٹا بیس، اور کمپیوٹر کے دیگر وسائل بہتر کارکردگی کا مظاہرہ کرتے ہیں اور اس طریقہ کو استعمال کرتے ہوئے زیادہ دستیاب ہیں۔ یہ صارف کی درخواستوں کی مناسب اور بروقت کارروائی میں بھی مدد کرتا ہے۔
صارف کے نقطہ نظر سے، لوڈ بیلنسنگ کلائنٹ اور سرورز کے مجموعے کے درمیان ایک نادیدہ ثالث کے طور پر کام کرتا ہے، اس بات کو یقینی بناتا ہے کہ کنکشن کی درخواستوں کو چھوڑا نہ جائے۔ ایپلیکیشنز، ویب سائٹس، ڈیٹا بیسز، اور آن لائن خدمات ممکنہ طور پر گر جائیں گی اگر لوڈ بیلنسنگ کے بغیر مانگ بہت زیادہ ہو جائے۔
ایک ہی وقت میں سیکڑوں ہزاروں صارف کی درخواستیں ایک ہی ہائی ٹریفک ویب سائٹ پر بھیجی جا سکتی ہیں۔ درخواست کردہ مواد، جیسے کہ متن، تصاویر، ویڈیو، اور آڈیو سٹریمنگ کے ساتھ ویب صفحات کو درست طریقے سے آباد کرنے کے لیے متعدد سرورز کی ضرورت ہوتی ہے۔ لوڈ بیلنسنگ عام طور پر ہائی ٹریفک ویب سائٹ سرور فارمز کے ساتھ ساتھ DNS سرورز، ڈیٹا بیسز، اور فائل ٹرانسفر پروٹوکول (FTP) سائٹس میں استعمال کی جاتی ہے۔
اگر ایک سرور پر زیادہ بوجھ ہے، تو یہ خراب کام کر سکتا ہے یا کریش بھی کر سکتا ہے۔ لوڈ بیلنسرز صارف کی درخواستوں کو سرورز کے مجموعے میں یکساں طور پر تقسیم کرکے ڈاؤن ٹائم کے امکانات کو کم کرتے ہیں۔ اگر گروپ میں سرورز میں سے کوئی ایک ناکام ہوجاتا ہے، تو ٹریفک کو گروپ کے دوسرے سرورز پر بھیج دیا جاتا ہے۔ لوڈ بیلنسر خود بخود ٹریفک کی تقسیم کے عمل میں نئے سرورز کو شامل کرتا ہے جب انہیں سرور پول میں شامل کیا جاتا ہے۔
لوڈ بیلنس کیسے کام کرتا ہے؟
یہ مندرجہ ذیل کام کرتا ہے:
- جب ایک کلائنٹ کو کوئی درخواست موصول ہوتی ہے، جیسے کہ کسی براؤزر یا ایپلیکیشن کے ذریعے، وہ سرور سے رابطہ قائم کرنے کی کوشش کرتا ہے۔
- جب ایک لوڈ بیلنسر کو کوئی درخواست موصول ہوتی ہے، تو یہ اسے الگورتھم (یا فارم) کے قائم کردہ نمونوں کی بنیاد پر سرور گروپ کے سرورز میں سے کسی ایک کی طرف لے جاتا ہے۔
- سرور کنکشن کی درخواست وصول کرتا ہے اور لوڈ بیلنسر کے ذریعے کلائنٹ کو جواب دیتا ہے۔
- جب لوڈ بیلنسر کو جواب ملتا ہے، تو یہ کلائنٹ کے آئی پی ایڈریس کو منتخب سرور کے آئی پی ایڈریس کے ساتھ ملاتا ہے۔ اس کے بعد، جواب پیکٹ کے ساتھ منتقل کیا جاتا ہے.
- SSL آف لوڈ سیکیورٹی ساکٹ لیئر انکرپشن پروٹوکول کا استعمال کرتے ہوئے ڈیٹا کو ڈکرپٹ کرنے کا عمل ہے تاکہ سرورز کو اس کی ضرورت نہ پڑے۔
- سیشن ختم ہونے تک عمل کو دہرایا جاتا ہے۔
لوڈ بیلنسنگ کے طریقے
یہ منتخب کرنے کے لیے کہ سرور فارم میں کون سا سرور اگلی درخواست وصول کرتا ہے، ہر بوجھ کو متوازن کرنے کی تکنیک معیار کا ایک سیٹ استعمال کرتی ہے۔ لوڈ بیلنسنگ کے لیے پانچ عام طریقے ہیں:
- راؤنڈ رابن: یہ پہلے سے طے شدہ نقطہ نظر ہے، اور یہ اسی طرح کام کرتا ہے جیسا کہ یہ لگتا ہے۔ لوڈ بیلنس ایک گھومنے والے پیٹرن میں درخواستوں کو تقسیم کرتا ہے، گروپ میں پہلے سرور سے شروع ہوتا ہے اور نیچے کی طرف جاتا ہے، جہاں اسے دوبارہ طلب کیے جانے کا انتظار ہوتا ہے۔ یہ طریقہ اس بات کو یقینی بناتا ہے کہ ہر سرور تقریباً ایک ہی تعداد میں رابطوں کو سنبھال رہا ہے۔
- وزنی گول راؤن: یہ نقطہ نظر ہر سرور کو ایک وزن (یا ترجیح) تفویض کرتا ہے جو عام طور پر اس کی صلاحیت کے متناسب ہوتا ہے۔ سرور کو جتنی زیادہ درخواستیں موصول ہوں گی، وزن اتنا ہی زیادہ ہوگا۔ مثال کے طور پر، دو کے وزن والے سرور کو ایک کے وزن کی قیمت والے سرور سے دوگنا درخواستیں موصول ہوتی ہیں۔
- چسپاں سیشن: یہ نقطہ نظر، جسے سیشن استقامت کے نام سے بھی جانا جاتا ہے، سیشن کی مدت کے لیے مخصوص کلائنٹس اور سرورز کو جوڑتا ہے۔ لنک قائم کرنے کے لیے، لوڈ بیلنسر صارف کی خصوصیت کی شناخت کے لیے کوکی یا صارف کا IP پتہ استعمال کرتا ہے۔ کنکشن قائم ہونے کے بعد، سیشن ختم ہونے تک صارف کی درخواستیں اسی سرور پر بھیجی جاتی ہیں۔ یہ نیٹ ورک کے وسائل کو بہتر بناتا ہے جبکہ صارف کے تجربے کو بھی بہتر بناتا ہے۔
- کم سے کم رابطے۔: یہ حکمت عملی فرض کرتی ہے کہ تمام درخواستوں کے نتیجے میں سرور کا بوجھ برابر ہوتا ہے۔ نتیجے کے طور پر، درخواستوں کی سب سے کم تعداد والا سرور اگلی درخواست وصول کرتا ہے۔
- آئی پی ہیش: یہ الگورتھم کلائنٹ اور سرور کے ماخذ اور منزل کے IP پتوں کی بنیاد پر ایک منفرد ہیش کلید تیار کرتا ہے۔ کلید کا استعمال درخواست کو روٹ کرنے کے لیے کیا جاتا ہے اور اسی سرور کے ساتھ کھوئے ہوئے کنکشن کو دوبارہ شروع کرنے کی اجازت دیتا ہے۔
ہارڈ ویئر بمقابلہ سافٹ ویئر لوڈ بیلنسرز
ہارڈ ویئر لوڈ بیلنسر
جسمانی ہارڈویئر، جیسا کہ ایک آلات، ہارڈویئر لوڈ بیلنسرز بناتا ہے۔ یہ موجودہ کنکشنز کی تعداد، پروسیسر کا استعمال، اور سرور کی کارکردگی جیسے عوامل پر منحصر ٹریفک کو سرورز تک پہنچاتے ہیں۔ ہارڈ ویئر لوڈ بیلنسرز کے پاس ملکیتی فرم ویئر ہوتا ہے جسے نئے ورژن اور حفاظتی اصلاحات دستیاب ہونے پر برقرار رکھنا اور اپ ڈیٹ کرنا ہوتا ہے۔
ہارڈ ویئر لوڈ بیلنسرز اکثر اعلی کارکردگی اور کنٹرول فراہم کرتے ہیں، ساتھ ہی ساتھ کربیروس تصدیق اور SSL ہارڈویئر ایکسلریشن جیسی صلاحیتوں کی ایک وسیع رینج فراہم کرتے ہیں، لیکن انہیں کچھ سطح کے انتظام اور دیکھ بھال کی مہارت کی ضرورت ہوتی ہے۔ چونکہ ہارڈویئر لوڈ بیلنسرز سافٹ ویئر لوڈ بیلنسرز کے مقابلے میں کم لچکدار اور توسیع پذیر ہوتے ہیں، اس لیے ہارڈویئر لوڈ بیلنسرز کو زیادہ پروویژن کرنے کا رجحان ہے۔
سافٹ ویئر لوڈ بیلنسر
سافٹ ویئر لوڈ بیلنسرز عام طور پر اپنے ہارڈویئر ہم منصبوں کے مقابلے میں سیٹ اپ کرنا آسان ہوتے ہیں۔ وہ زیادہ سرمایہ کاری مؤثر اور موافقت پذیر ہیں، اور وہ سافٹ ویئر کی ترقی کے ماحول کے ساتھ اچھی طرح سے کام کرتے ہیں. سافٹ ویئر کا طریقہ آپ کو اپنے ماحول کی درست ضروریات کے مطابق لوڈ بیلنس کو اپنی مرضی کے مطابق کرنے کی اجازت دیتا ہے۔ اضافی لچک لوڈ بیلنس کو ترتیب دینے میں صرف کیے گئے اضافی وقت کی قیمت پر آ سکتی ہے۔
سافٹ ویئر بیلنسرز آپ کو ہارڈ ویئر والوں کے مقابلے میں ترمیم اور اپ ڈیٹ کرنے کے لیے زیادہ لچک فراہم کرتے ہیں، جن میں زیادہ بند باکس کا نقطہ نظر ہوتا ہے۔ پہلے سے پیک شدہ ورچوئل مشینوں کو سافٹ ویئر لوڈ بیلنسرز (VMs) کے طور پر استعمال کیا جا سکتا ہے۔ ورچوئل مشینیں آپ کو ترتیب دینے کا کچھ وقت بچائیں گی، لیکن ہو سکتا ہے کہ ان کے ہارڈویئر ہم منصبوں میں تمام فعالیت دستیاب نہ ہوں۔
سادہ لوڈ بیلنسنگ کا نفاذ
ہم اسپرنگ کلاؤڈ لائبریری کا استعمال کریں گے۔ ایپس بنائیں جو دیگر ایپس سے بوجھ کے توازن کے ساتھ جڑتے ہیں۔ ریموٹ سروس کی درخواستوں پر کارروائی کرتے ہوئے، ہم اپنی پسند کی کسی بھی تکنیک کا استعمال کرتے ہوئے آسانی سے لوڈ بیلنس بنا سکتے ہیں۔ مثال کے طور پر درج ذیل کوڈ پر غور کریں۔ ہم ایک بنیادی سرور ایپلی کیشن کے ساتھ شروع کریں گے۔
سرور کے پاس صرف ایک HTTP اختتامی نقطہ ہوگا اور اسے کئی صورتوں میں چلایا جائے گا۔ پھر ہم ایک کلائنٹ ایپ بنائیں گے جو لوڈ بیلنسر کا استعمال کرے گی تاکہ درخواستوں کو سرور کے متعدد واقعات میں تقسیم کرے۔
سرور
ہم ایک بنیادی کے ساتھ شروع کرتے ہیں بہار بوٹ ہمارے مثال کے سرور کے لئے درخواست:
شروع کرنے کے لیے، ہم ایک حسب ضرورت متغیر داخل کرتے ہیں جسے instance_ID کہتے ہیں۔ اس سے ہمیں کام کرنے والی متعدد مثالوں کے درمیان فرق کرنے میں مدد ملتی ہے۔ اس کے بعد، ہم ایک واحد HTTP GET اینڈ پوائنٹ بناتے ہیں جو ایک پیغام اور مثال کی ID واپس کرتا ہے۔
ID 1 کے ساتھ پہلے سے طے شدہ مثال پورٹ 8080 پر کام کرے گی۔ ہمیں دوسری مثال شروع کرنے کے لیے صرف چند پروگرام پیرامیٹرز شامل کرنے کی ضرورت ہے:
کلائنٹ
آئیے اب کلائنٹ کوڈ پر ایک نظر ڈالتے ہیں۔ یہ وہ جگہ ہے جہاں لوڈ بیلنسر آتا ہے، تو آئیے اسے اپنی درخواست میں شامل کرکے شروع کریں:
اس کے بعد، ہم ServiceInstanceListSupplier کا نفاذ تیار کرتے ہیں۔ یہ لوڈ بیلنسر میں سب سے اہم انٹرفیس میں سے ایک ہے۔ یہ اس بات کی وضاحت کرتا ہے کہ ہم کس طرح قابل رسائی سروس مثالوں کو تلاش کرتے ہیں۔
ہم اپنے نمونے کی درخواست میں اپنے مثال کے سرور کی دو الگ الگ مثالوں کو ہارڈ کوڈ کریں گے۔ وہ ایک ہی سسٹم پر چلتے ہیں لیکن الگ پورٹس استعمال کرتے ہیں۔
ابھی ایک LoadBlancerConfiguration کلاس بنائیں:
اس کلاس کا صرف ایک مقصد ہے: یہ ریموٹ درخواستیں کرنے کے لیے بوجھ سے متوازن WebClient بلڈر بناتا ہے۔ ہماری تشریح سروس کے لیے ایک فرضی نام استعمال کرتی ہے۔
یہ اس حقیقت کی وجہ سے ہے کہ ہم زیادہ تر ممکنہ طور پر وقت سے پہلے مثالوں کو چلانے کے لئے درست میزبان ناموں اور بندرگاہوں کو نہیں جان پائیں گے۔ نتیجے کے طور پر، ہم ایک فرضی نام کو پلیس ہولڈر کے طور پر استعمال کرتے ہیں، اور فریم ورک اصل معلومات کی جگہ لے لے گا جب وہ چلتی ہوئی مثال کا انتخاب کرے گا۔
اگلا، آئیے ایک کنفیگریشن کلاس بناتے ہیں جو ہماری سروس انسٹینس سپلائی کو تیز کرنے کے لیے استعمال ہوگی۔ نوٹ کریں کہ ہم وہی عرف استعمال کرتے ہیں جو پہلے تھا:
اب ہم حقیقی کلائنٹ ایپلی کیشن بنا سکتے ہیں۔ آئیے پہلے سے WebClient بین کا استعمال کرتے ہوئے نمونے کے سرور پر 10 سوالات بھیجیں:
ہم آؤٹ پٹ سے دیکھ سکتے ہیں کہ ہم دو الگ الگ مثالوں کے درمیان لوڈ بیلنس کر رہے ہیں:
مائیکرو سروسز میں لوڈ بیلنسنگ
مائیکرو سروس آرکیٹیکچر کو کئی کمپنیاں، جیسے نیٹ فلکس اور ایمیزون، کاروباری ایپلی کیشنز کو ڈھیلے طریقے سے منسلک خدمات کے سیٹ کے طور پر تیار کرنے کے لیے استعمال کر رہی ہیں۔ پیچیدہ ایپلی کیشنز کے لیے ہائپر اسکیل اور مسلسل ترسیل اس تقسیم شدہ، ڈھیلے طریقے سے جڑے ہوئے فن تعمیر کی طرف جانے کی صرف دو وجوہات ہیں۔
ان انٹرپرائزز کی ٹیموں نے ایپس کو تیز تر اور روایتی طریقوں سے کم ناکامی کی شرح کے ساتھ تیار کرنے کے لیے Agile اور DevOps حکمت عملیوں کو لاگو کیا ہے۔ تاہم، آپ کو تقسیم شدہ فن تعمیر کی پیچیدگی اور ایپلیکیشن کے مطالبات، پیمانے کے تقاضوں اور وقت سے مارکیٹ کی حدود کے درمیان توازن برقرار رکھنا چاہیے۔
کئی سالوں سے، ایپلیکیشن ڈیلیوری کنٹرولرز (ADCs) کارپوریٹ ایپلی کیشنز کے لیے سروس لیول کے تقاضوں کو پورا کرنے کے لیے اہم رہے ہیں۔ مائیکرو سروسز پر مبنی ایپلیکیشن کے ساتھ مشغول ہونے والے کلائنٹ کو ان مثالوں کے بارے میں جاننے کی ضرورت نہیں ہے جو کلائنٹ اور مائیکرو سروسز کو آزادانہ طور پر بڑھانے کے لیے اسے فراہم کر رہے ہیں۔
یہ بالکل وہی ڈیکپلنگ ہے جو ریورس پراکسی یا لوڈ بیلنسر کے ذریعے فراہم کی جاتی ہے۔ ایک بار پھر، لوڈ بیلنسنگ اس بات کو یقینی بنانے کا حل ہے کہ مائیکرو سروسز ڈیمانڈ، سیکورٹی اور دستیابی کو سنبھال سکتی ہیں۔
جب آپ کلائنٹ اور مائیکرو سروسز پر مبنی ایپس کے درمیان روایتی نارتھ-ساؤتھ لوڈ بیلنسنگ کو افقی اسکیل ایبلٹی کے لیے ایسٹ ویسٹ تعیناتی کے ساتھ جوڑتے ہیں، تو آپ کو کافی فروغ ملتا ہے۔ مقصد یہ ہے کہ ترقی کی چستی کی قربانی کے بغیر IT کے لیے درکار محفوظ اور ریگولیٹڈ ماحول کو برقرار رکھا جائے یا DevOps آٹومیشن۔ ضروریات.
فوائد
لوڈ بیلنسنگ وسائل کے استعمال، ڈیٹا کی ترسیل، اور زیادہ ٹریفک والی ویب سائٹس اور ایپس کے ساتھ ساتھ ڈیٹا بیسز کے لیے جوابی وقت کو بہتر بنا کر مختلف فوائد فراہم کرتا ہے جو بڑی تعداد میں سوالات حاصل کرتے ہیں۔ لوڈ بیلنسنگ اس بات کو یقینی بناتا ہے کہ زیادہ ٹریفک والے حالات میں صارف کی درخواستیں تیزی سے اور درست طریقے سے پوری کی جائیں۔
وہ صارفین کو سست پروگراموں اور وسائل سے نمٹنے کے بڑھنے سے بچاتے ہیں۔ لوڈ بیلنسنگ ڈاؤن ٹائم سے بچنے اور سیکیورٹی کو آسان بنانے میں بھی مدد کرتا ہے، جس سے آپ کی کمپنی کی پیداواری صلاحیت اور کمائی کے خطرے کو کم کیا جاتا ہے۔
- لوڈ بیلنسنگ زیادہ سے زیادہ کارکردگی کے لیے ٹریفک کا انتظام کرنے کے علاوہ، ڈیمانڈ کے مطابق سرورز کو شامل کرنے اور ہٹانے کے لیے لچک فراہم کرتا ہے۔ چونکہ دیکھ بھال کے دوران ٹریفک کو دوسرے سرورز کی طرف موڑ دیا جاتا ہے، اس لیے صارفین میں خلل ڈالے بغیر سرور کی دیکھ بھال کرنا بھی ممکن ہے۔
- لوڈ بیلنسنگ سرورز کے ایک سیٹ کے درمیان ٹریفک کو تقسیم کرکے بلٹ ان فالتو پن فراہم کرتا ہے۔ اگر کوئی ناکام ہو جاتا ہے تو آپ فوری طور پر بوجھ کو دوسرے سرورز کی طرف موڑ سکتے ہیں، صارفین پر پڑنے والے اثرات کو کم کر کے۔
- اگر کسی ایپلیکیشن یا ویب سائٹ کا استعمال بڑھتا ہے، اگر مؤثر طریقے سے سنبھالا نہ جائے تو بڑھتی ہوئی ٹریفک اس کی کارکردگی کو کم کر سکتی ہے۔ لوڈ بیلنسنگ کے ساتھ، آپ سروس میں خلل ڈالے بغیر مانگ کو پورا کرنے کے لیے ایک حقیقی یا ورچوئل سرور شامل کر سکتے ہیں۔ لوڈ بیلنسر نئے سرورز کی شناخت کرتا ہے جب وہ آن لائن آتے ہیں اور آسانی سے انہیں آپریشن میں شامل کر لیتے ہیں۔ یہ طریقہ کسی ویب سائٹ کو زیادہ بوجھ والے سرور سے نئی ویب سائٹ پر منتقل کرنے کے لیے بہتر ہے، جس میں اکثر اوقات کچھ ڈاؤن ٹائم ہوتا ہے۔
نتیجہ
لوڈ بیلنسنگ عصری، غلطی برداشت کرنے والے نظاموں کا ایک اہم جزو ہے۔ ہم آسانی سے ایسی ایپس بنا سکتے ہیں جو لوڈ بیلنسنگ کے مختلف طریقوں کا استعمال کرتے ہوئے متعدد سروس مثالوں میں درخواستیں تقسیم کرتی ہیں۔ ایپلیکیشنز کو محفوظ طریقے سے فراہم کرنے کے لیے کاروباری اداروں کو پیچیدہ IT سسٹمز کو سپورٹ کرنا چاہیے۔
کراس ڈومین مائیکرو سروسز کنفیگریشن، تعیناتی، اور دیکھ بھال غلطی کا شکار، مہنگی اور وقت طلب ہو سکتی ہے۔ IT کو ان مائیکرو سروسز کے سیٹ اپ اور دیکھ بھال کو آسان بنانے کے لیے آٹومیشن، مرئیت، تجزیات، اور آرکیسٹریشن کے بہترین طریقوں اور ٹیکنالوجیز کا استعمال کرنا چاہیے جو ان کے چست اور DevOps کے عمل سے ہم آہنگ ہوں۔
جواب دیجئے