جلبت كأس العالم 2018 FIFA السابقة في روسيا أحمالًا ثقيلة ليس فقط إلى مراكز النقل في البلاد ، ولكن أيضًا إلى البنية التحتية لتكنولوجيا المعلومات في أكبر محطة بث روسية ، والتي جعلت المباريات متاحة بتنسيق البث عبر الإنترنت. تناولنا باهتمام تحديًا جديدًا تم تقديمه إلى الخوادم التي يتم خدمتها جنبًا إلى جنب مع حمى كرة القدم.
مقدمة: أحمال عالية؟
غالبًا ما تبدأ المحادثات حول الحمل المرتفع بتأملات حول الموضوع ، ما الأحمال التي يمكن اعتبارها "عالية" بحق: آلاف الطلبات في الثانية للديناميكيات؟ أو حتى عدد قليل من الطلبات فيما يتعلق بالموارد المتاحة؟ ملايين الزوار يوميا؟ المئات من عقد عبء العمل في كتلة؟ ..
للحصول على فكرة عن "حجم الكارثة" ، فإن حقيقة أننا نتحدث عن المستخدمين الذين يشاهدون البث في
وقت واحد ، والذي وصل عدده إلى
2 مليون ، يجب أن يكون كافياً. ماذا حدث إذا نظرت إلى بث المباريات "من الداخل" ، وكيف تمكنت من التعامل مع حركة مرور غير مسبوقة؟
ثلاثة حيتان
1. هندسة الموقع ونظم الترجمة
يتم تخفيض مخطط التفاعل العام بين المستخدم النهائي ونظام الترجمة إلى المخطط التالي:
- يأتي المستخدم إلى الموقع حيث يتم تشغيل المشغل لمشاهدة الفيديو. اللاعب نفسه مكتوب بلغة جافا سكريبت وتحميله يؤدي إلى العديد من الطلبات للإحصاءات ، بالإضافة إلى العديد من واجهات برمجة التطبيقات المتعلقة بالترجمات.
- من بين أمور أخرى ، هناك نداء إلى الموازن للحصول على قائمة تشغيل للتشغيل.
- قائمة التشغيل هي مجموعة محدثة باستمرار من أجزاء الفيديو القصيرة المخزنة مؤقتًا على خوادم CDN.
- أثناء مشاهدة فيديو المستخدم في الوقت الفعلي ، يتم جمع مجموعة متنوعة من الإحصاءات ، والتي يتم أخذها بعين الاعتبار ، على وجه الخصوص ، لموازنة الحمل بواسطة CDN (جنبًا إلى جنب مع النطاق الترددي الفعلي المتاح).
تم تصميم وتنفيذ بنية التوزيع المباشر للفيديو من قبل القوى الداخلية لمهندسي العميل حتى قبل بدء تعاوننا. في وقت لاحق ، بالإضافة إلى الخدمة نفسها ، شاركنا في تصميم وتشغيل البنية التحتية لبعض مكوناتها ، بالإضافة إلى الموقع نفسه ، والذي يلعب دورًا مهمًا في المخطط العام.
الموقع ، الذي تم إطلاقه في الإنتاج منذ عدة سنوات ، يركز على قابلية التوسع الأفقية - بما في ذلك العديد من مراكز البيانات:

المخطط المقدم هنا مبسط ويهدف إلى توضيح طبيعة قابلية التوسع للموقع ، الذي يتم توزيع مكوناته عبر مراكز البيانات المختلفة.
2. CDN
بالعودة إلى مشاهدة الفيديو ، من الواضح أن الحمل الرئيسي يقع على خوادم CDN. في أرقام كأس العالم الماضية ، نتحدث عن حركة المرور المستمرة ، والتي تقاس
بالتيرابت في الثانية . وفي كثير من النواحي ، يرجع نجاح عمل الترجمات بأحمال الذروة إلى التخزين المؤقت على CDN لكل ما يمكن نقله إليها ، وتقليل تكاليف الموارد (الشبكة ، وحدة المعالجة المركزية ، ذاكرة الوصول العشوائي ، ...) للعمليات الأخرى.
بالإضافة إلى ذلك ، هناك نقطة مهمة في العمل مع CDN وهي التفاعل مع واجهة برمجة التطبيقات الخاصة بهم للحصول على المعلومات ذات الصلة حول النطاق الترددي الكلي والمتوفر. في نظام البث ، يتم استخدام هذه البيانات لتوزيع مشاهدين جدد وإعادة توزيع المشاهدين الحاليين.
لذا ، إذا كانت خوادم CDN قادرة على توفير عرض نطاق ترددي كافٍ لملايين مشاهدي الإنترنت ، فمتى يمكن أن تحدث المشكلات؟ خلال البطولة ، لاحظنا سيناريوهين رئيسيين:
- لسبب ما ، هناك تأخر في البث.
على سبيل المثال ، إعدادات النظام "تم تشغيلها" في إحدى مباريات البطولة لدرجة أن خدمة حماية DDoS ، التي لم تكن تتوقع تحميلًا مفاجئًا ، بدأت في اعتبار ما حدث كهجوم ، مما أدى إلى منع توفر خوادم CDN واحدة تلو الأخرى ... حتى تم إعلامها بأن الوضع كان بمعنى متطرف ، ولكن لا يزال بدوام كامل (تم التوصل إلى الاستنتاجات الضرورية - في عمليات البث التالية لم يتكرر الوضع).
في مثل هذه اللحظات ، يبدأ جميع المستخدمين الذين تجاوزتهم مشكلة كبيرة في تحديث الصفحة مع المشغل. - هدف سجل (خاصة الأول) ، كقاعدة عامة ، يثير تدفقًا كبيرًا من المتفرجين في فترة زمنية محدودة.
إذا تحدثنا عن أرقام أكثر تحديدًا ، فإن مثل هذا التدفق بلغ مئات الآلاف من المستخدمين في 1-1.5 دقيقة.
أنتجت كلتا الحالتين طفرات حادة في طلبات المحتوى الديناميكي للمواقع التي يجب معالجتها من خلال الموارد المتاحة. كيف تم تتبع هذه المشاكل وحلها؟
3. الرصد والإحصاءات في الوقت الحقيقي
من الممكن المزاح بدرجة عالية من الحقيقة أنه طوال فترة البطولة كان لدينا وظيفة خاصة ، والتي تضمنت واجباتها مشاهدة كرة القدم باهتمام في مكان العمل. بالطبع ، لم يكن الأمر يتعلق كثيرًا بكرة القدم في حد ذاتها ، ولكن كان رد الفعل الفوري على أي حوادث تثيرها المباريات أو ظروف أخرى ...
ما هي "الظروف الأخرى"؟ في مثل هذه الأحداث العامة ، حتى تأثير الطقس ملحوظ. فيما يلي مثالان من البطولة التي واجهناها:
- عندما بدأت عاصفة رعدية خلال إحدى المباريات ، كان لدى موفري القنوات الفضائية مشاكل في المعدات (لم يتمكنوا من إرسال إشارة). أدى ذلك إلى زيادة ملحوظة في حركة المرور (حوالي 10 ٪) في وقت قصير ، لأنه بحثًا عن حل بديل عاجل ، بدأ المشاهدون في الاتصال بالإنترنت بشكل كبير ومواصلة التصفح هناك.
- عندما بدأت تمطر خلال المباراة النهائية ، كانت قفزة صغيرة (حوالي 3 ٪) في انقطاع الاتصال وإعادة اتصال المستخدمين (بعد حوالي 5 دقائق) ملحوظة. في هذه الحالة ، لم يلاحظ أي مشاكل في البث نفسه ، أي أن أسباب القفزة لم يكن لها أساس تقني. الافتراض هو أن المتفرجين الذين شاهدوا كرة القدم في الشارع (كما فعلت أنا) انتقلوا إلى الغرفة بسبب المطر ، وفي هذا الوقت القصير تم فصلهم عن البث.
بالعودة إلى موضوع المراقبة نفسها - طوال مدة البطولة بأكملها ، تم أخذ
ممارسة الاجتماعات المنتظمة (بعد كل ذروة بث) كالمعتاد مع المطورين ، الذين حللوا جميع المواقف الحرجة (أو قريبة منها) وعواقبها - من أجل تقليل المشاكل المحتملة في المرة القادمة. ما الخوادم / الخدمات التي كانت في الحد الأقصى؟ ما الاستفسارات التي كانت تتطلب بشكل خاص؟ ما هي الطلبات التي يمكن إزالتها (نقلها إلى CDN للتخزين المؤقت لبضع ثوان)؟ ما هي الطلبات التي يمكن تخزينها مؤقتًا لفترة أطول (كل 3 دقائق ، وليس لكل دقيقة)؟ ماذا سيحدث مع الزيادة المتوقعة في عدد المشاهدين ، لأن روسيا ستلعب؟ ..
بالحديث عن روسيا. كما قد تخمن ، في المتوسط ، وصل عدد الأشخاص الذين شاركوا في المباريات مع المنتخب الوطني الروسي عدة مرات أكثر من الآخرين. وكلما تقدم فريقنا إلى أعلى في قوس البطولة ، كان من الصعب الجمع بين فرحتنا في هذه المسألة مع أداء الواجبات الفورية - لأن كل شيء كان معقدًا بسبب النمو الدؤوب للجمهور. على الرغم من حقيقة أن النظام تم تصميمه لتحمل الأحمال الضخمة ، إلا أنه في جدول العمل العادي لا يحدث كثيرًا (أقل من 10 مرات في السنة) ... وفي حالة كأس العالم ، لاحظنا ذروة الحمل اليومي تقريبًا لمدة شهر. ومع ذلك ، كانت ميزة هذا الوضع هي الاحتمالات الواسعة لاكتشاف الاختناقات الفعلية التي يتم اكتشافها فقط في لحظات هذه الأحمال.لذلك ، إذا تمت إزالة جزء من المشكلات الفنية البحتة من خلال الرسوم البيانية القياسية من أنظمة المراقبة ، فعندئذ في حل المشكلات الأكثر تعقيدًا و / أو الموجهة نحو منطق الأعمال ، لعبت إنجازات المشروع تحت الاسم الداخلي الناطق "إحصائيات الوقت الحقيقي" دورًا كبيرًا.
إحصائيات في الوقت الحقيقي
تم تصميم وتنفيذ هذا المكون الهام للبنية التحتية للبث عبر الإنترنت من خلال جهودنا لتوفير أداة ذكاء الأعمال للبيانات الفنية التي تم جمعها من اللاعبين حيث يشاهد المستخدمون مقاطع الفيديو. في جوهره ، هو نظام تسجيل:
- يجمع جميع أنواع البيانات المتاحة حول المستخدمين (المتصفح ، IP ، إلخ. - من أجل البساطة ، يمكننا القول أن هذه هي الخصائص التي استخدمناها للنظر في الإحصائيات حول جمهور الموقع) ؛
- يكملها بالبيانات الفنية المتعلقة بالبث (معدل البت ، إلخ) والأحداث / المشاكل التي حدثت (تبديل CDN ، عرض الفشل ...) ؛
- تزويد الموازن ببيانات لتحقيق التوازن الأمثل للحمل على خوادم CDN (وفقًا لخصائص كل مستخدم) ؛
- يرسل التنبيهات اللازمة للمهندسين المناوبين ويضع مخططات عمل مفيدة.
النقطة الأخيرة هي الأكثر إثارة للاهتمام ، لأن:
- تعد تنبيهات نظام الإحصائيات هذا مكونًا رئيسيًا للمراقبة يسمح لك "بمواكبة" المؤشرات العملية أثناء البث. من خلال تحليلها (في مكان لا تكون فيه الأتمتة كافية) ، يقوم المصاحب باتخاذ القرارات المناسبة لتحسين جودة الخدمة في الوقت الفعلي. على سبيل المثال:
- هل قام العديد من المستخدمين بالتبديل من نفس خادم CDN؟ يجب تعطيله مؤقتًا من الدوران (أو اتصل بمزود الخدمة للحصول على استجابة سريعة).
- هل بدأ المستخدمون يواجهون مشاكل كبيرة في مشاهدة مقاطع الفيديو؟ حان الوقت لتحليل عاجل للأسباب.
- الرسوم البيانية هي إحصائيات أعمال في الوقت الفعلي تمكنك من الإجابة على الأسئلة الرئيسية ، مثل:
- كم عدد المستخدمين الذين شاهدوا البث في اللحظة الأخيرة؟
- ما النسبة المئوية للمستخدمين الذين واجهوا مشاكل في اللحظة الأخيرة ، وما هي طبيعتهم؟
نظرًا لأن الأحداث المماثلة لها نفس ملف الرسم البياني ، فإن الرسم البياني نفسه يسمح لك بالتنبؤ بالنمو في عدد المستخدمين خلال الدقائق القليلة القادمة واتخاذ إجراءات استباقية إذا لزم الأمر.
نظرًا لأن هذه الإحصائيات تعمل في الوقت الفعلي وتعتبر حاسمة بالنسبة لجودة الخدمة بالكامل ، فإن مشاهدة الفيديو بطبيعتها البسيطة من قبل ملايين المستخدمين لا تتلخص في توزيع المحتوى عبر CDN لهم. يساعد ClickHouse DBMS في تحقيق تسجيل سريع للبيانات الجديدة من العديد من اللاعبين (نحن نتحدث عن عشرات الآلاف من الطلبات في الثانية للتسجيل في كل خادم) ، ويتم استخدام Grafana المعتاد للرسوم البيانية.
توضيح لنسبة مشاهدي الفيديو على الإنترنت قبل المباراة وأثناءها وبعدهابالمناسبة : كان أحد الحلول المثيرة للاهتمام أثناء ذروة الأحمال هو تعطيل HTTPS (لصالح HTTP) للطلبات من نظام الإحصائيات ، مما أدى إلى انخفاض مزدوج في حمل وحدة المعالجة المركزية على بعض الخوادم.الملخص
نجاح البث عبر الإنترنت لمثل هذا الحدث الواسع النطاق
(حتى YouTube TV لم يكن دائمًا يتعامل مع الأحمال!) تم توفيره من خلال ثلاثة عوامل رئيسية:
- بنية مختصة (لنظام البث والموقع) ، والتي حتى بدون استخدام الأنظمة الحديثة مثل Kubernetes كانت موجهة في البداية إلى الأحمال العالية وقابلية التوسع والاستعداد للانفجارات الكبيرة ؛
- خوادم CDN بنطاق ترددي كافٍ ؛
- المراقبة المتخصصة التي سمحت بما يلي: أ) تتبع المشكلات في الوقت الفعلي ، ب) توفير المعلومات اللازمة لتجنبها في المستقبل.
على الرغم من وجود المزيد من العوامل في الواقع ... وربما يكون أحدها قادرًا على تجاوز جميع العوامل الفنية - البشرية. تم لعب الدور الأكثر أهمية من قبل المتخصصين الذين لم يكونوا قادرين فقط على القيام وربط كل ما هو ضروري من الناحية الفنية ، ولكن أيضًا تحقيق النتائج بلا كلل ، والتي أرغب بشكل خاص في ملاحظة مزايا إدارة العميل.
ملاحظة حول Kubernetes المذكورة ... قصة قد يتوقع العديد من قراء مدونتنا رؤيتها. لقد بدأت بالفعل عملية انتقال نظام البث إليها ، ولكن خلال كأس العالم ، لم تكن هذه التطورات متورطة بعد.PPS
اقرأ أيضا في مدونتنا: