کی میز کے مندرجات[چھپائیں][دکھائیں]
WhatsApp ایک سماجی پیغام رسانی کا پروگرام ہے جو صارفین کو ایک دوسرے کے ساتھ پیغامات کا تبادلہ کرنے کی اجازت دیتا ہے۔
کیا آپ نے کبھی غور کیا ہے کہ واٹس ایپ کیسے کام کرتا ہے؟
وہ کون سے تصورات ہیں جو اس کی تخلیق اور عمل کی بنیاد رکھتے ہیں؟
یہ مضمون واٹس ایپ کی بنیادی باتوں پر جائے گا۔ نظام ڈیزائن.
ہم WhatsApp کے عمومی فن تعمیر کو بھی دیکھیں گے، جسے کسی بھی قسم کے چیٹ سافٹ ویئر بنانے کے لیے استعمال کیا جا سکتا ہے۔
تو، مزید اڈو کے بغیر، آئیے واٹس ایپ کے سسٹم کے ڈیزائن پر ایک نظر ڈالتے ہیں!
1. کلیدی تقاضے
WhatsApp ایک انتہائی قابل توسیع ٹیکنالوجی ہے جسے پوری دنیا میں بہت سے لوگ استعمال کرتے ہیں۔ نتیجے کے طور پر، اسے اچھی طرح سے ڈیزائن کیا جانا چاہئے تاکہ وہ عملی طور پر ہمیشہ قابل اعتماد اور کام کر سکے۔
نتیجے کے طور پر، نظام کی اہم ضروریات کا تعین اہم ہے.
یہ واٹس ایپ میسنجر کے لیے کم از کم تقاضے ہیں:
- ون آن ون بات چیت کی سہولت فراہم کرنے کے قابل۔
- پیغام کا اعتراف اور آخری بار دیکھا جانا دونوں ممکن ہیں (بھیجا گیا، پہنچایا گیا، اور پڑھا گیا)۔
- اینڈ ٹو اینڈ انکرپشن اور میڈیا سپورٹ (تصاویر/ویڈیوز) کی اجازت دیں۔
آئیے معلوم کریں کہ ہماری ضروری سروس کے لیے کتنی صلاحیت درکار ہے۔
2. صلاحیت کا تخمینہ لگانا
ہمارا مقصد ایک ایسا پلیٹ فارم بنانا ہے جو ٹریفک کی ایک بڑی مقدار کو سنبھالنے کے قابل ہو۔ فرض کریں کہ روزانہ 10 بلین ایس ایم ایس بھیجے جاتے ہیں۔ ہمارے پاس ہے:
- ہر روز 10 ارب ایس ایم ایس ایک ارب لوگ بھیجتے ہیں۔
- چوٹی ٹریفک پر (فی سیکنڈ)، 700,000 لوگ فعال تھے (6X اوسط)
- زیادہ سے زیادہ استعمال کے دوران، 40 ملین پیغامات فی سیکنڈ منتقل ہوتے ہیں۔
- ایک پیغام کی اوسط لمبائی 160 حروف ہے: 10B * 160 = 1.6TB ڈیٹا ہر روز تیار ہوتا ہے۔
- مثال کے طور پر دس سال کی سروس لیں: 10 * 1.6B * 365 PB
- پوری ایپلیکیشن مائیکرو سروسز پر مشتمل ہوگی، جن میں سے ہر ایک خصوصی کام انجام دے گا۔ فرض کریں کہ پیغام بھیجنے میں 20 ملی سیکنڈ لگتے ہیں اور یہ کہ فی سرور 100 کنکرنٹ کنکشنز ہیں۔ نتیجے کے طور پر، چیٹ سرورز کی متوقع تعداد درکار ہے = (چیٹ کے پیغامات فی سیکنڈ لیٹنسی)/ کنکرنٹ کنکشن فی سرور = 40M * 20ms / 100 = 8000 سرورز۔
3. اعلیٰ سطحی فن تعمیر
یہ نظام دو بنیادی خدمات پر بنایا گیا ہے۔ چیٹ سروس اور عارضی سروس، مثال کے طور پر۔ چیٹ سروس صارفین کے آن لائن پیغامات سے پیدا ہونے والی تمام ٹریفک کو سنبھالتی ہے۔ اس کے ساتھ ہی، صارف کے آف لائن ہونے پر عارضی سروس ٹریفک کو سنبھالتی ہے۔
اگر صارف آن لائن ہے، تو چیٹ سروس پیغامات پہنچانے کا ذمہ دار ہے۔
یہ تصدیق کرے گا کہ آیا پیغام کا وصول کنندہ آن لائن ہے یا نہیں؛ اگر وصول کنندہ آن لائن ہے، تو یہ سروس فوری طور پر پیغام پہنچائے گی۔ اگر وصول کنندہ آن لائن نہیں ہے، تو عارضی سروس ان کے آن لائن واپس آنے پر انہیں پیغام بھیجے گی۔
عارضی سروس آف لائن صارف کے دوبارہ منسلک ہونے تک عارضی طور پر قابل رسائی ڈیٹا رکھنے کے لیے ایک علیحدہ اسٹوریج ایریا رکھتی ہے۔
اعلیٰ سطح کے APIs کو ڈیزائن کرنا
اس سروس میں پیغامات بھیجنے اور پڑھنے کے لیے دو اعلیٰ سطحی کام کرنے والے APIs ہیں۔ سسٹم کو REST فن تعمیر کا استعمال کرتے ہوئے لاگو کیا جا سکتا ہے۔
پیغامات بھیجنے کے پیرامیٹرز
یہ API دو صارفین کے درمیان پیغامات کی ترسیل کے لیے استعمال کیا جائے گا۔
گفتگو کے پیرامیٹرز
یہ API تھریڈڈ چیٹس کو دکھانے کے لیے استعمال ہوتا ہے۔ جب آپ WhatsApp کھولتے ہیں تو سب سے پہلے اس چیز پر غور کریں۔ ہم ایک API استفسار میں صرف ایک صارف کے لیے چند پیغامات حاصل کرنا چاہیں گے۔ اس کو سنبھالنے کے لیے، آفسیٹ اور پیغام کی گنتی کے پیرامیٹرز کی ضرورت ہے۔
آخری بار دیکھا، سنگل ٹک، اور ڈبل ٹک جیسی خصوصیات کے کیا کام ہیں؟
ان خدمات کی تعیناتی میں اہم کردار اقرار خدمت کا ہے۔ یہ خصوصیات اس لیے تیار کی گئی ہیں کیونکہ یہ سروس اعترافی جوابات تیار اور تصدیق کرتی رہتی ہے۔
- ایک ٹک: جب صارف A سے کوئی پیغام صارف B تک پہنچتا ہے، تو سرور ایک ہی ٹک بھیجتا ہے جس میں یہ تسلیم کیا جاتا ہے کہ پیغام منتقل ہو چکا ہے۔
- ڈبل ٹک: سرور کا پیغام صارف B کو مناسب کنکشن کے ذریعے بھیجے جانے کے بعد، صارف B سرور کو پیغام کی وصولی کو تسلیم کرے گا۔ اس کے بعد سرور صارف A کو ایک اور اعتراف فراہم کرے گا۔ نتیجے کے طور پر، ایک ڈپلیکیٹ ٹک ظاہر ہو جائے گا.
- نیلی ٹک: صارف B پیغام کو چیک کرنے کے بعد سرور کو ایک اور اعتراف بھیجے گا۔ اس کے بعد سرور صارف A کو ایک اضافی اعترافی پیغام بھیجے گا۔ اس کے بعد یوزر اے کی سکرین پر بلیو ٹک نمودار ہوگا۔
- آخری دیکھا: دل کی دھڑکن کا طریقہ کار مکمل طور پر آخری نظر آنے والی خصوصیت کے لیے ذمہ دار ہے۔ ہر 5 سیکنڈ میں، ایک دل کی دھڑکن سرور پر منتقل ہوتی ہے، جو ہر صارف کی آخری بار دیکھی جانے والی صورتحال کا ایک ٹیبل میں نظر رکھتی ہے جس تک کسی دوسرے صارف کے ذریعے آسانی سے رسائی حاصل کی جا سکتی ہے۔
4. کلیدی خصوصیات کو ڈیزائن کرنا
ذاتی تعامل
یہ چیٹ سروس کا ایک ضروری حصہ ہے۔ صارف اس سروس کا استعمال کرتے ہوئے دوسرے صارف کو آسانی سے پیغامات بھیج سکتا ہے۔ آئیے ایک نظر ڈالتے ہیں کہ یہ کیسے کام کرتا ہے:
فرض کریں جے آیوش کے ساتھ بات چیت کرنا چاہتا ہے۔ جے ایک چیٹ سرور سے منسلک ہے جس کے ساتھ وہ پیغام وصول کرتا ہے۔ جے کو چیٹ سرور سے تصدیق ملتی ہے کہ پیغام بھیجا گیا تھا۔ چیٹ سرور اب ڈیٹا اسٹور سے چیٹ سرور کے بارے میں معلومات کی درخواست کر رہا ہے جس سے آیوش جڑا ہوا ہے۔ جے کا چیٹ سرور اب پیغام کو آیوش کے چیٹ سرور پر منتقل کرتا ہے، اور آیوش ایک پش میکانزم کے ذریعے پیغام وصول کرتا ہے۔ آیوش اب جے کے چیٹ سرور پر ایک اعتراف بھیجتا ہے، جو جے کو مطلع کرتا ہے کہ پیغام پہنچا دیا گیا ہے۔ اگر آیوش نے پیغام کو دوبارہ پڑھا، تو ایک تازہ اعتراف کہ پیغام پڑھا گیا تھا جے کو پہنچایا گیا۔
صارف کی سرگرمی کی حیثیت
آخری بار جب کوئی شخص متحرک تھا تو فوری میسنجر کی ایک باقاعدہ خصوصیت ہے۔
کلائنٹ اور سرور کے درمیان تعلق برقرار رکھنے کے لیے ایک نظام کو اس خاکہ میں دکھایا گیا ہے۔ ویب ساکٹ سرور اور کلائنٹ کے درمیان دو طرفہ کنکشن قائم کرنے کے لیے استعمال کیے گئے تھے۔ یہ کنکشن دل کی دھڑکنیں بھیجتے ہیں، جو صارف کی سرگرمی کی کیفیت کو مانیٹر کرنے کے لیے استعمال ہوتے ہیں۔
اینڈ ٹو اینڈ پرائیویسی
اینڈ ٹو اینڈ انکرپشن ایک اہم خصوصیت ہے جو اس بات کو یقینی بناتی ہے کہ صرف بات کرنے والے صارفین ہی مواصلات کو پڑھ سکتے ہیں۔ مواصلات میں شامل تمام صارفین کے درمیان عوامی کلید کا اشتراک کیا جاتا ہے اور یہ اینڈ ٹو اینڈ انکرپشن کو برقرار رکھنے کے لیے اہم ہے۔ فرض کریں کہ چینل پر دو صارف ہیں، جے اور آیوش، جو ایک دوسرے کے ساتھ بات چیت کرتے ہیں۔
جے کے پاس آیوش کی عوامی کلید ہے، اور آیوش کے پاس جے کی عوامی کلید کے ساتھ ساتھ ان کی غیر مشترکہ نجی کلید ہے۔ نتیجے کے طور پر، جب جے پیغام کو منتقل کرتا ہے، تو وہ اسے آیوش کی عوامی کلید سے انکرپٹ کرتا ہے، جسے صرف آیوش کی نجی کلید سے ڈی کوڈ کیا جا سکتا ہے۔
اسی طرح جے، صرف آیوش کی بات چیت کو ڈی کوڈ کر سکے گا۔ نتیجے کے طور پر، صرف جے اور آیسو ایک دوسرے کے مواصلات کو دیکھ سکیں گے، اور سرور پورے عمل میں صرف ایک گیٹ وے کے طور پر کام کرے گا۔
5. رکاوٹیں
ہر نظام خرابی کا شکار ہے۔ ٹریفک کی اتنی بڑی مقدار کو منظم کرنے کے لیے، سروس کو ہر وقت آپریشنل رہنا چاہیے اور رکاوٹوں سے بچنے کے لیے غلطی کو برداشت کرنا چاہیے۔ چونکہ ہماری سروس مکمل طور پر چیٹ اور عارضی سرورز پر منحصر ہے، ہمیں ان کے آپریشن سے پیدا ہونے والے تمام مسائل کو حل کرنا چاہیے۔
چیٹ سرور کی ناکامی۔: یہ ہمارے نظام کا دل ہے۔ جب صارفین آن لائن ہوتے ہیں، تو یہ پیغامات کے انتظام اور ترسیل کے لیے ذمہ دار ہوتا ہے۔ نتیجے کے طور پر، یہ نظام اپنے صارفین کے ساتھ روابط برقرار رکھتا ہے۔
نتیجے کے طور پر، اگر یہ سروس ناکام ہوجاتی ہے، تو پورے فن تعمیر کو نقصان پہنچے گا. چیٹ سرور کی ناکامی کا انتظام کرنے کے دو طریقے ہیں۔ ایک طریقہ یہ ہے کہ TCP کنکشنز کو دوسرے سرور پر شفٹ کیا جائے، جبکہ دوسرا طریقہ یہ ہے کہ کنکشن ختم ہونے کی صورت میں صارفین کو خود بخود کنکشن شروع کرنے کی اجازت دی جائے۔
عارضی اسٹوریج کی ناکامی۔: ناکامی کا شکار ایک اور جزو جو بالآخر پوری سروس کو نقصان پہنچا سکتا ہے وہ ہے عارضی اسٹوریج۔ اگر یہ سروس ناکام ہو جاتی ہے تو آف لائن صارفین کے راستے میں پیغامات ضائع ہو جاتے ہیں۔
ہم ہر صارف کے عارضی اسٹوریج کو نقل کرکے پیغام کے نقصان کو روک سکتے ہیں۔ نتیجے کے طور پر، جب بھی صارف آن لائن واپس آتا ہے تو نقل کو افعال پر کارروائی کرنے کے لیے استعمال کیا جا سکتا ہے۔ اگر اصل سرور قابل رسائی ہو جاتا ہے، تو صارف کے عارضی اسٹوریج کی اصل اور نقل دونوں صورتیں ایک ہی اسٹور میں یکجا ہو جاتی ہیں۔
6. اصلاح کی تکنیک
تاخیر: ایک ہموار اور بہتر کلائنٹ کا تجربہ فراہم کرنے کے لیے، میسنجر سروس کو ریئل ٹائم ہونا چاہیے۔ نتیجے کے طور پر، اکثر رسائی شدہ ڈیٹا کے کچھ حصے کو کیش کرکے تاخیر کو کم کیا جانا چاہیے۔ ہم Redis جیسے تقسیم شدہ کیش کا استعمال کرتے ہوئے صارف کی سرگرمی کی حیثیت اور حالیہ گفتگو کو میموری میں کیش کر سکتے ہیں۔
دستیابی: ہمیں اپنی سروس زیادہ تر وقت دستیاب رہنے کی ضرورت ہے۔ ہمارا نظام غلطی سے برداشت کرنے والا ہونا چاہیے، اس طرح ہم عارضی پیغامات کی کئی کاپیاں رکھ سکتے ہیں تاکہ کوئی بھی پیغام جو گم ہو جائے اسے اس کی نقلوں سے جلد بازیافت کیا جا سکے۔ نتیجے کے طور پر، سسٹم کی دستیابی کو خطرے میں نہیں ڈالا جا سکتا۔
نتیجہ
ہمارا سسٹم اب صرف چند صلاحیتوں کو سپورٹ کرتا ہے، لیکن ہم اسے آسانی سے بڑھا سکتے ہیں تاکہ کئی افراد کو پیغامات تقسیم کرنے کے لیے گروپ چیٹس شامل کر سکیں۔ آپ ویڈیو اور فون کال کی صلاحیتیں بھی فراہم کر سکتے ہیں۔ اس سسٹم کو اس طرح بھی تیار کیا جا سکتا ہے کہ صارفین سٹیٹس اپ ڈیٹس یا بیانیہ شائع کر سکیں اور ایک دوسرے کو پڑھ سکیں۔
میں نے آپ کو WhatsApp سسٹم کے ڈیزائن کا اعلیٰ سطحی جائزہ فراہم کرنے کے لیے سخت محنت کی۔ مجھے امید ہے کہ آپ اس سے لطف اندوز ہوں گے اور اسے اچھے استعمال میں ڈالیں گے۔
جواب دیجئے