جدول المحتويات[يخفي][يعرض]
WhatsApp هو برنامج مراسلة اجتماعية يسمح للمستخدمين بتبادل الرسائل مع بعضهم البعض.
هل فكرت يومًا في كيفية عمل WhatsApp؟
ما هي المفاهيم التي يقوم عليها إنشائها وتشغيلها؟
ستتناول هذه المقالة أساسيات WhatsApp تصميم النظام.
سننتقل أيضًا إلى البنية العامة لـ WhatsApp ، والتي يمكن استخدامها لإنشاء أي نوع من برامج الدردشة.
لذلك ، دون مزيد من اللغط ، دعنا نلقي نظرة على تصميم نظام WhatsApp!
1. المتطلبات الرئيسية
WhatsApp هي تقنية قابلة للتطوير بدرجة كبيرة يستخدمها العديد من الأشخاص في جميع أنحاء العالم. نتيجة لذلك ، يجب أن يكون مصمّمًا بشكل جيد ليكون عمليًا ويمكن الاعتماد عليه دائمًا.
نتيجة لذلك ، يعد تحديد الاحتياجات الحرجة للنظام أمرًا بالغ الأهمية.
هذه هي المتطلبات الدنيا لبرنامج WhatsApp messenger:
- قادر على تسهيل التفاعلات الفردية.
- يعتبر كل من إقرار الرسالة وآخر ظهور ممكن (تم الإرسال ، والتسليم ، والقراءة).
- السماح بالتشفير التام ودعم الوسائط (الصور / مقاطع الفيديو).
دعنا نتعرف على مقدار السعة التي تتطلبها خدمتنا الضرورية.
2. تقدير القدرة
هدفنا هو إنشاء منصة قادرة على التعامل مع كمية كبيرة من حركة المرور. افترض أنه يتم إرسال 10 مليارات رسالة قصيرة يوميًا. لدينا:
- كل يوم ، يتم إرسال 10 مليارات رسالة نصية قصيرة من قبل مليار شخص.
- في ذروة حركة المرور (في الثانية) ، كان 700,000 شخص نشيطين (متوسط 6 مرات)
- أثناء ذروة الاستخدام ، يتم إرسال 40 مليون رسالة في الثانية.
- يبلغ متوسط طول الرسالة 160 حرفًا: 10 ب * 160 = 1.6 تيرابايت من البيانات يتم إنشاؤها كل يوم.
- خذ عشر سنوات من الخدمة كمثال: 10 * 1.6B * 365 PB
- سيتكون التطبيق بأكمله من خدمات مصغرة ، كل منها سينفذ مهمة متخصصة. افترض أن إرسال رسالة يستغرق 20 مللي ثانية وأن هناك 100 اتصال متزامن لكل خادم. نتيجة لذلك ، العدد المتوقع لخوادم الدردشة المطلوبة = (رسائل الدردشة في الثانية زمن الانتقال) / الاتصالات المتزامنة لكل خادم = 40M * 20ms / 100 = 8000 خادم.
3. بنية عالية المستوى
هذا النظام مبني على خدمتين أساسيتين. خدمة الدردشة وخدمة مؤقتة ، على سبيل المثال. تتعامل خدمة الدردشة مع كل حركة المرور الناتجة عن رسائل المستخدمين عبر الإنترنت. في الوقت نفسه ، تتعامل الخدمة المؤقتة مع حركة المرور عندما يكون المستخدم غير متصل بالإنترنت.
إذا كان المستخدم متصلاً بالإنترنت ، فإن خدمة الدردشة هي المسؤولة عن توصيل الرسائل.
سيتحقق مما إذا كان مستلم الرسالة متصلًا أم لا ؛ إذا كان المستلم متصلاً بالإنترنت ، فستقوم هذه الخدمة بتسليم الرسالة على الفور ؛ إذا لم يكن المستلم متصلاً بالإنترنت ، فسوف ترسل الخدمة المؤقتة الرسالة إليه عند عودته عبر الإنترنت.
تحتفظ الخدمة المؤقتة بمنطقة تخزين منفصلة للاحتفاظ بالبيانات التي يمكن الوصول إليها مؤقتًا حتى يعيد المستخدم غير المتصل الاتصال.
تصميم واجهات برمجة التطبيقات عالية المستوى
تحتوي هذه الخدمة على اثنين من واجهات برمجة التطبيقات عالية المستوى تعملان لإرسال الرسائل وقراءتها. يمكن تنفيذ النظام باستخدام بنية REST.
معلمات لإرسال الرسائل
سيتم استخدام واجهة برمجة التطبيقات هذه لنقل الرسائل بين مستخدمين.
معلمات المحادثة
يتم استخدام واجهة برمجة التطبيقات هذه لعرض الدردشات المترابطة. ضع في اعتبارك أن هذا هو أول شيء تراه عند فتح WhatsApp. نرغب فقط في تلقي بضع رسائل لمستخدم واحد في استعلام API واحد. لمعالجة هذا الأمر ، هناك حاجة إلى معلمات الإزاحة وعدد الرسائل.
ما هي وظائف الميزات مثل آخر ظهور ، وعلامة واحدة ، وعلامة مزدوجة؟
الدور المهم في نشر هذه الخدمات هو خدمة الإقرار. تم تطوير هذه الميزات منذ أن استمرت هذه الخدمة في إنشاء إجابات الاستلام والتحقق منها.
- علامة واحدة: عندما تصل رسالة من المستخدم "أ" إلى المستخدم "ب" ، يرسل الخادم علامة واحدة للإقرار بأن الرسالة قد تم إرسالها.
- علامة مزدوجة: بعد إرسال رسالة الخادم إلى المستخدم "ب" من خلال الاتصال الصحيح ، سيقوم المستخدم "ب" بإبلاغ استلام الرسالة إلى الخادم. سيقوم الخادم بعد ذلك بتزويد المستخدم أ بإقرار آخر. نتيجة لذلك ، ستظهر علامة مكررة.
- القراد الأزرق: سيرسل المستخدم "ب" إقرارًا آخر إلى الخادم بعد التحقق من الرسالة. سيرسل الخادم بعد ذلك إلى المستخدم "أ" رسالة إقرار إضافية. ستظهر علامة زرقاء على شاشة المستخدم أ بعد ذلك.
- شوهد للمرة الاخيرة: آلية دقات القلب مسؤولة بالكامل عن آخر ميزة شوهدت. كل 5 ثوانٍ ، يتم إرسال نبضة قلب إلى الخادم ، والذي يتتبع آخر حالة تمت رؤيتها لكل مستخدم في جدول يمكن الوصول إليه بسهولة من قبل أي مستخدم آخر.
4. تصميم الملامح الرئيسية
تفاعل شخصي
هذا جزء ضروري من خدمة الدردشة. يمكن للمستخدم ببساطة إرسال رسائل إلى مستخدم آخر باستخدام هذه الخدمة. دعنا نلقي نظرة على كيفية عمل ذلك:
افترض أن جاي يريد التواصل مع عيوش. جاي مرتبط بخادم دردشة يتلقى معه الرسالة. يتلقى جاي تأكيدًا من خادم الدردشة يفيد بإرسال الرسالة. يطلب خادم الدردشة الآن معلومات من مخزن البيانات حول خادم الدردشة الذي يتصل به Aayush. يقوم خادم الدردشة الخاص بـ Jay الآن بنقل الرسالة إلى خادم الدردشة الخاص بـ Aayush ، ويتلقى Aayush الرسالة عبر آلية الدفع. يرسل Aayush الآن إقرارًا إلى خادم دردشة Jay ، والذي يخطر جاي بأنه تم تسليم الرسالة. إذا قرأ Aayush الرسالة مرة أخرى ، فسيتم تسليم إقرار جديد بأن الرسالة قد تمت قراءتها إلى Jay.
حالة نشاط المستخدم
آخر مرة كان فيها الشخص نشطًا هي ميزة عادية في برامج المراسلة الفورية.
يوضح هذا المخطط نظامًا للحفاظ على الاتصال بين العميل والخادم. تم استخدام مآخذ الويب لإنشاء اتصال ثنائي الاتجاه بين الخادم والعميل. ترسل هذه الاتصالات نبضات القلب ، والتي تُستخدم لمراقبة حالة نشاط المستخدم.
الخصوصية الشاملة
يعد التشفير من طرف إلى طرف ميزة أساسية تضمن أن المستخدمين الذين يتحدثون فقط هم من يمكنهم قراءة الاتصالات. يتم مشاركة المفتاح العام بين جميع المستخدمين المشاركين في الاتصال وهو أمر بالغ الأهمية للحفاظ على التشفير من طرف إلى طرف. افترض أن هناك مستخدمين على القناة ، Jay و Aayush ، يتواصلان مع بعضهما البعض.
يمتلك Jay مفتاح Aayush العام ، ولدى Aayush مفتاح Jay العام بالإضافة إلى مفتاحهما الخاص غير المشترك. نتيجة لذلك ، عندما ينقل Jay الرسالة ، يقوم بتشفيرها باستخدام مفتاح Aayush العام ، والذي لا يمكن فك تشفيره إلا باستخدام مفتاح Aayush الخاص.
وبالمثل ، لن يتمكن جاي إلا من فك شفرة اتصال عيوش. نتيجة لذلك ، لن يتمكن سوى Jay و Aaysuh من رؤية اتصالات بعضهما البعض ، وسيعمل الخادم كبوابة في العملية برمتها.
5. الاختناقات
كل نظام عرضة للخلل. لإدارة مثل هذا الحجم الكبير من حركة المرور ، يجب أن تظل الخدمة قيد التشغيل وتتحمل الأخطاء في جميع الأوقات لتجنب الاختناقات. نظرًا لأن خدمتنا تعتمد كليًا على خوادم الدردشة والعابرة ، يجب علينا حل جميع المشكلات التي تنشأ عن تشغيلها.
فشل خادم الدردشة: هذا هو قلب نظامنا. عندما يكون المستخدمون متصلين بالإنترنت ، تكون مسؤولة عن إدارة الرسائل وتسليمها. نتيجة لذلك ، يحافظ هذا النظام على روابط مع مستخدميه.
نتيجة لذلك ، إذا فشلت هذه الخدمة ، فسوف تعاني البنية بأكملها. هناك طريقتان لإدارة فشل خادم الدردشة. تتمثل إحدى الطرق في تحويل اتصالات TCP إلى خادم آخر ، بينما تتمثل إحدى الطرق الأخرى في السماح للمستخدمين ببدء الاتصالات تلقائيًا في حالة فقد الاتصال.
فشل التخزين العابر: عنصر آخر عرضة للفشل الذي قد يؤدي في النهاية إلى إتلاف الخدمة بأكملها وهو التخزين المؤقت. تُفقد الرسائل في طريقها إلى المستخدمين غير المتصلين في حالة فشل هذه الخدمة.
يمكننا منع فقدان الرسائل عن طريق نسخ التخزين المؤقت لكل مستخدم. نتيجة لذلك ، يمكن استخدام النسخة المتماثلة لمعالجة الوظائف كلما عاد المستخدم عبر الإنترنت. إذا أصبح الخادم الأصلي قابلاً للوصول ، فسيتم دمج المثيلات الأصلية والنسخة المتماثلة للتخزين المؤقت للمستخدم في متجر واحد.
6. تقنيات التحسين
كمون: لتقديم تجربة عميل سلسة ومحسنة ، يجب أن تكون خدمة المراسلة في الوقت الفعلي. نتيجة لذلك ، يجب تقليل زمن الوصول عن طريق التخزين المؤقت لجزء من البيانات التي يتم الوصول إليها كثيرًا. يمكننا تخزين حالة نشاط المستخدم والمحادثات الأخيرة في الذاكرة مؤقتًا باستخدام ذاكرة تخزين مؤقت موزعة مثل Redis.
التوفر: نحتاج إلى أن تكون خدمتنا متاحة في معظم الأوقات. يجب أن يكون نظامنا متسامحًا مع الأخطاء ، وبالتالي يمكننا الاحتفاظ بعدة نسخ من الرسائل المؤقتة بحيث يمكن استرداد أي رسالة مفقودة بسرعة من النسخ المكررة. نتيجة لذلك ، لا يمكن المساس بتوافر النظام.
وفي الختام
يدعم نظامنا الآن عددًا قليلاً من الإمكانات ، ولكن يمكننا بسهولة توسيعه لإضافة محادثات جماعية لتوزيع الرسائل على عدة أفراد. يمكنك أيضًا توفير إمكانات مكالمات الفيديو والهاتف. يمكن أيضًا تطوير هذا النظام بحيث يمكن للمستخدمين نشر تحديثات الحالة أو السرد وقراءة بعضهم البعض.
لقد عملت بجد لتزويدك بنظرة عامة عالية المستوى على تصميم نظام WhatsApp. أتمنى أن تكون قد استمتعت به وستستخدمه جيدًا.
اترك تعليق