CDN الديناميكي للتدفق WebRTC الكمون المنخفض


في وقت سابق ، عند تحليل إمكانيات التكوينات القياسية للخوادم في المحيط الرقمي من وجهة نظر تدفق WebRTC ، لاحظنا أن خادمًا واحدًا يمكن أن يخدم ما يصل إلى 2000 متفرج. في الحياة الواقعية ، غالبًا ما تكون هناك حالات لا يكفي فيها خادم واحد.


لنفترض أن عشاق الإثارة في ألمانيا يشاهدون سباق الخيل في الوقت الفعلي في أستراليا. نظرًا لأن سباق الخيل ليس فقط رياضة الفروسية ، بل هو أيضًا فوز كبير ، حيث يتم المراهنة في الوقت المحدد ، يجب تسليم الفيديو بأقل تأخير ممكن.


مثال آخر تنظم شركة عالمية ، إحدى الشركات الرائدة في سوق FCMG ولديها فروع في أوروبا وروسيا وجنوب شرق آسيا ، ندوات عبر الإنترنت لتدريب مديري المبيعات على الترجمة من المقر الرئيسي في البحر المتوسط. يجب على المشاهدين رؤية مقدم العرض وسماعه في الوقت الفعلي.


تجمع هذه الأمثلة بين المتطلبات: تقديم تدفقات الوسائط إلى عدد كبير من المشاهدين بوقت استجابة منخفض. للقيام بذلك ، تحتاج إلى نشر شبكة تسليم المحتوى - CDN.


لاحظ أن التكنولوجيا التقليدية لتسليم الدفق باستخدام HLS ليست مناسبة ، حيث يمكن أن تعطي تأخيرات تصل إلى 30 ثانية ، وهذا أمر بالغ الأهمية لعروض الوقت الفعلي. تخيل أن الخيول قد وصلت بالفعل إلى خط النهاية ، ويتم نشر النتائج على الموقع ، ولا يزال المشجعون يتفقدون السباق. هذا العيب محروم من تقنية WebRTC ، التي يمكن أن توفر تأخيرات في غضون ثانية واحدة ، مع قنوات الاتصال الحديثة وهذا ممكن حتى بين القارات.


أولاً ، دعونا نرى كيفية نشر أبسط CDN لتقديم تدفقات WebRTC ، ثم توسيع نطاقها.


هيكل CDN


يمكن أن يؤدي خادم في CDN أحد الأدوار التالية:


  • الأصل هو خادم لنشر تدفقات الوسائط. يوزع التدفقات على خوادم أخرى ، كما يمكن توزيعه على المشتركين.
  • Transcoder - خادم مخصص لتدفقات الترميز. تلتقط التدفقات من خوادم Origin وتوزع التدفقات المحولة إلى Edge. سنتعامل مع هذا الدور في الجزء التالي.
  • Edge - خادم مصمم لتوزيع التدفقات على المشتركين. يستغرق التدفقات من خوادم Origin أو Transcoder ، ولا يقوم بتوزيع التدفقات على خوادم CDN الأخرى.

يمكنك نشر تدفقات WebRTC و RTMP على خادم Origin ، أو التقاط التدفقات من مصادر أخرى عبر RTMP و RTSP وغيرها من الطرق الممكنة.


يمكن للمشتركين تشغيل التدفقات من خوادم Edge عبر WebRTC و RTMP و RTSP و HLS


بين خوادم CDN ، من المستحسن التدفق عبر WebRTC لتقليل زمن الوصول.


يتم وصف CDN ثابت بالكامل في مرحلة التكوين. في الواقع ، يشبه إعداد CDN ثابت إعداد موازن التحميل: يتم سرد جميع أجهزة الاستقبال في إعدادات خادم مصدر الدفق.


على سبيل المثال ، لدينا خادم Origin في فرانكفورت وواحد في نيويورك وواحد في سنغافورة



في هذه الحالة ، يتم تكوين الأصل مثل هذا:


<loadbalancer mode="roundrobin" stream_distribution="webrtc"> <node id="1"> <ip>edge1.thestaticcdn.com</ip> <wss>443</wss> </node> <node id="2"> <ip>edge2.thestaticcdn.com</ip> <wss>443</wss> </node> </loadbalancer> 

إليكم المشكلة الأولى في CDN الثابت: من أجل إضافة خادم Edge جديد لمثل CDN ، أو لإزالة الخادم من CDN ، تحتاج إلى تغيير الإعدادات وإعادة تشغيل جميع خوادم Origin.


يتم بث التدفقات المنشورة على Origin إلى جميع الخوادم المدرجة في إعدادات Edge. يتم أيضًا اتخاذ قرار بشأن أي من خوادم Edge التي سيتصل بها المشترك على خادم Origin. وهنا تكمن المشكلة الثانية: إذا لم يكن هناك متفرج أو عدد قليل جدًا ، على سبيل المثال ، في سنغافورة في وقت مبكر من المساء ، وفي نيويورك في الليلة العميقة ، لا تزال البث مباشرًا إلى Edge 1. تمضي حركة المرور في وضع الخمول وليست مجانية على الإطلاق.


يمكن أن يحل CDN الديناميكي هاتين المشكلتين.


لذلك ، نريد تهيئة CDN دون إعادة تشغيل جميع خوادم Origin ، ولا نريد نقل التدفقات إلى خوادم Edge حيث لا يوجد مشتركون. في هذه الحالة ، لا تحتاج إلى الاحتفاظ بالقائمة الكاملة لخوادم CDN في مكان ما من الإعدادات. يجب أن ينشئ كل خادم نفسه مثل هذه القائمة ، ولهذا يجب أن يعرف الحالة الحالية للخوادم الأخرى في أي وقت محدد.


من الناحية المثالية ، في الإعدادات يجب أن يكون كافياً لتحديد نقطة الدخول ، الخادم الذي يبدأ منه CDN. عند نقطة الدخول هذه ، يجب على كل خادم عند بدء التشغيل إرسال طلب وتلقي قائمة بعقد CDN وقائمة بالتيارات المنشورة استجابة. في حالة عدم توفر نقطة الإدخال ، يجب أن يتوقع الخادم رسائل من خوادم أخرى.


يجب أن يرسل الخادم أي تغييرات على حالته إلى خوادم أخرى في CDN.


أبسط CDN: في وسط أوروبا


لذلك ، دعونا نحاول تكوين وتشغيل CDN ديناميكي. لنفترض ، بالنسبة للمبتدئين ، أننا بحاجة إلى توزيع مقاطع الفيديو على المشاهدين الأوروبيين ، في حين يجب دعم ما يصل إلى 5000 مستخدم. لنفترض أن مصدر التدفقات موجود أيضًا في أوروبا.



ننشر ثلاثة خوادم في مركز البيانات الأوروبي. سوف نستخدم Flashphoner WebCallServer (خادم بث فيديو WebRTC) كعناصر لبناء CDN.



الإعداد:


  • أصل الاتحاد الأوروبي

 cdn_enabled=true cdn_ip=o-eu1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • الحافة 1 الاتحاد الأوروبي

 cdn_enabled=true cdn_ip=e-eu1.flashphoner.com cdn_point_of_entry=o-eu1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

  • الحافة 2 الاتحاد الأوروبي

 cdn_enabled=true cdn_ip=e-eu2.flashphoner.com cdn_point_of_entry=o-eu1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

تحدث المراسلة بين عقد CDN الديناميكي عبر Websocket ، وبالطبع ، يتم دعم Websocket الآمن أيضًا.


داخل CDN ، يتم بث التدفقات عبر WebRTC. كقاعدة عامة ، يتم استخدام UDP كوسيلة نقل ، ولكن يمكنك التبديل إلى TCP إذا كنت بحاجة إلى ضمان جودة البث مع قناة ليست جيدة للغاية بين الخوادم. للأسف ، في هذه الحالة زيادة التأخير.


نقوم بإعادة تشغيل الخوادم ، ونفتح مثال Two Way Streaming على o-eu1 ، ننشر مقطع فيديو دوري مع مؤقت للعد التنازلي من 10 دقائق إلى 0



افتح مثال "المشغل" على e-eu1 ، قم بتشغيل الدفق



وتفعل الشيء نفسه على e-eu2



يعمل CDN! كما ترون في لقطات الشاشة ، يتزامن الوقت في الفيديو على جانب النشر وفي المشاهدين حتى الثانية ، بفضل WebRTC والقنوات الجيدة.


أبعد من ذلك في كل مكان: ربط أمريكا


الآن سوف نقدم تيارات للمشاهدين في القارة الأمريكية ، ولن ننسى المنشور.



دون تعطيل الجزء الأوروبي من CDN ، نقوم بنشر ثلاثة خوادم في مركز البيانات الأمريكي



الإعداد:


  • أصل الولايات المتحدة

 cdn_enabled=true cdn_ip=o-us1.flashponer.com cdn_point_of_entry=o-eu1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • حافة 1 الولايات المتحدة

 cdn_enabled=true cdn_ip=e-us1.flashphoner.com cdn_point_of_entry=o-eu1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

  • حافة 2 الولايات المتحدة

 cdn_enabled=true cdn_ip=e-us2.flashphoner.com cdn_point_of_entry=o-eu1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

نعيد تشغيل الخوادم الأمريكية ، ونتحقق من المنشور



والتكاثر



في الوقت نفسه ، يواصل الجزء الأوروبي العمل. تحقق لمعرفة ما إذا كان المشتركون الأمريكيون سيرون البث المنشور من أوروبا. ننشر قطار test_eu على o-eu1



وتشغيله على e-us1



وانها تعمل ايضا! بالنسبة للتأخير ، نلاحظ مرة أخرى في لقطات الشاشة تزامن الموقت في الفيديو على جانب النشر وفي المشاهدين حتى الثانية.


يرجى ملاحظة أن التدفقات المنشورة على خادم Origin آخر لا يمكن تشغيلها مباشرة من خادم Origin افتراضيًا ، ولكن إذا كنت في حاجة إليها ، فيمكنك تكوينها مثل هذا


 cdn_origin_to_origin_route_propagation=true 

أن تستمر


لذا ، قمنا بنشر CDN بسيط ثم نجحنا في توسيع نطاقه إلى قارتين ، ونشرنا وتشغيل تدفقات WebRTC منخفضة زمن الوصول. في الوقت نفسه ، لم نغير معلمات التدفقات أثناء التشغيل ، وهو أمر مطلوب في الواقع كثيرًا: كل المشاهدين لديهم قنوات مختلفة ، ومن أجل الحفاظ على جودة البث ، من الضروري ، على سبيل المثال ، خفض الدقة أو معدل البت. هذا سنفعله في الجزء التالي ...


مراجع


دفق WebRTC ذو زمن انتقال منخفض هو شبكة توصيل محتوى تستند إلى Web Call Server.

Source: https://habr.com/ru/post/ar477310/


All Articles