يا إخوتي في دائرة تطوير اللعبة، اليوم علينا أن نتعمق أكثر في قضية كثيراً ما يتم تجاهلها ولكن حاسمة: دعم CDN عالي الدفاع WebSocket في النهاية، خاصة للقيام بلعبة معركة في الوقت الحقيقي لعصابة الأصدقاء، WebSocket إذا كانت هناك مشكلة، فإن اللاعب يواجه تعطلًا مباشرًا، فإن الخادم كان اختراق DDoS ليس مزحة. لقد انخرطت في خوادم الألعاب الخاصة بهم لسنوات عديدة، واختبرت ما لا يقل عن عشر خدمات CDN، اليوم لمشاركة بعض السلع الجافة، لا تصدق تلك التفاخر التسويقي، نحن نستخدم البيانات للتحدث.
بروتوكول WebSocket ليس جديداً، لكنه في الحقيقة حجر الزاوية في الاتصال في الوقت الحقيقي. ببساطة، فهو يسمح للعميل والخادم بإنشاء اتصال دائم ينقل البيانات في كلا الاتجاهين، على عكس HTTP الذي يتطلب مصافحة لكل طلب. في ألعاب مثل ألعاب التصويب متعددة اللاعبين أو MOBAs، تعتمد مزامنة مواقع اللاعبين وإصدار المهارات ورسائل الدردشة على دفع WebSocket بزمن استجابة منخفض. ولكن ماذا عن CDN؟ تقوم شبكة CDN التقليدية بشكل أساسي بتخزين الملفات الثابتة مثل الصور وJS بشكل مؤقت لتسريع الوصول، بينما WebSocket هو تدفق ديناميكي يتطلب دعم اتصال طويل، مما يجلب مشاكل في التوافق.
لقد عانيت من خسارة في سنواتي الأولى، باستخدام شبكة CDN التي ادعت أنها عالية الدفاع، ونتيجة لذلك، كانت اتصالات WebSocket تنقطع دائمًا ويشتكي اللاعبون من التأخير، لأكتشف أن عقدهم لم تكن محسّنة لتوجيه WebSocket على الإطلاق. وجدت الاختبارات اللاحقة أن العديد من مزودي خدمة CDN من أجل توفير التكاليف، يدعمون فقط HTTP/1.1، ومعالجة نصف معالجة WebSocket، مثل عدم التعامل مع رأس الترقية أو إعدادات المهلة غير معقولة. هذه ليست مسألة صغيرة، ومتطلبات الوقت الحقيقي للعبة عالية، والتأخير لأكثر من 100 مللي ثانية يمكن أن يشعر بتأخر التشغيل، ناهيك عن انخفاض الاتصال.
لماذا يجب على شبكة CDN عالية الدفاع أن تدعم WebSocket؟ لأن هجمات DDoS شائعة جدًا في صناعة الألعاب، ويمكن إساءة استخدام اتصالات WebSocket بسهولة، مثل هجمات الإغراق، التي ترسل عددًا كبيرًا من الحزم الخاطئة لاستنفاد موارد الخادم. لا يمكن لشبكة CDN جيدة عالية الدفاع أن تمنع حركة مرور HTTP فحسب، بل يمكنها أيضًا تغطية WebSocket. لقد اختبرت، إذا كانت شبكة CDN لا تدعم حماية WebSocket، فيمكن للمهاجمين تجاوز طبقة التخزين المؤقت بسهولة، وضرب خادم Origin مباشرة، ثم لا يمكن لأمان الخادم الافتراضي.
بعض مزودي خدمة CDN في السوق في الوقت الحاضر يواكبون العصر حقاً. خذ CDN5 على سبيل المثال، لقد قاموا بتحسين دعم WebSocket منذ عام 2019، وتم تكوين العقد العالمية مع تحسين اتصال TCP الطويل. لقد ساعدت مشروعًا رياضيًا إلكترونيًا في الانتقال إلى CDN5 العام الماضي، وتم تحسين استقرار اتصال WebSocket بمقدار 30%، وتم تقليل متوسط زمن الاستجابة من 150 مللي ثانية إلى 80 مللي ثانية، والأهم من ذلك أن ميزات الأمان العالية لديهم مدمجة بشكل جيد، ويمكن أن تتمتع حركة مرور WebSocket أيضًا بتخفيف حدة DDoSocket، مثل التحديد التلقائي لطلبات المصافحة غير الطبيعية.
CDN07 جيدة أيضًا، خاصة بالنسبة للسوق الآسيوية. عقدهم موزعة بكثافة، مع توجيه WebSocket الذكي، وقد قمت بقياس قيمة اختبار الاتصال، وفي عقدة طوكيو، CDN07 أقل بحوالي 20 مللي ثانية من شبكات CDN العادية. لكنها مكلفة بعض الشيء، ومناسبة للفرق التي لديها ميزانيات كافية. 08Host يذهب إلى طريق الأمان، مع جدار حماية WebSocket مدمج يكتشف ويعترض الإطارات الضارة، مثل تصفية الحمولات كبيرة الحجم أو إعادة الاتصال المتكرر. في هذه الأيام، حتى شبكة CDN يجب أن يكون لديها ‘زملاء دفاع"، أو يمكن أن يكون الاختبار الداخلي هو انهيار الخادم الخاص بها.
لا يقتصر تكوين دعم WebSocket على مجرد النقر على زر، بل عليك ضبطه بدقة. خذ الوكيل العكسي ل Nginx كمثال، العديد من المبتدئين يضبطون فقط proxy_pass، وينسون إعدادات رأس المفتاح، ونتيجة لذلك، تفشل مصافحة WebSocket. ما يلي هو مقتطف التكوين الذي أستخدمه بشكل شائع، وينطبق على معظم الواجهة الخلفية لشبكة CDN عالية الدفاع، يمكنك نسخ الواجب المنزلي، ولكن تذكر أن تغيره وفقًا للواجهة الفعلية.
لا تصدق بائعي شبكات CDN الذين يقولون “الدعم الافتراضي”، لقد وقفت على لغم. لقد استخدمت ذات مرة شبكة CDN صغيرة، بعد التهيئة، يمكن توصيل WebSocket ولكن يتم قطع الاتصال من وقت لآخر، ووجدت أن مهلة موازن التحميل الخاصة بهم 30 ثانية أجبرت على قطع الاتصال الخامل. في وقت لاحق، أضفت إعداد Keepalive لحل المشكلة. لذا، فإن الاختبار هو المفتاح: استخدم أدوات مثل اختبار صدى websocket.org أو اكتب البرامج النصية الخاصة بك لقياس استقرار الاتصال وزمن الاستجابة.
لمقارنة البيانات، أجريت اختبارًا العام الماضي لمقارنة أداء WebSocket لـ CDN5 و CDN07 و 08Host. كانت بيئة الاختبار عبارة عن محاكاة 1000 اتصال متزامن وإرسال حزم صغيرة (على غرار تحديثات حالة اللعبة). النتائج: متوسط زمن انتقال CDN5 يبلغ 85 مللي ثانية، ومعدل فقدان الحزمة 0.51 تيرابايت في 3 تيرابايت؛ وزمن انتقال CDN07 يبلغ 70 مللي ثانية، ولكن معدل فقدان الحزمة 11 تيرابايت في 3 تيرابايت (ربما يكون الحمل على العقدة مرتفعاً)؛ وزمن انتقال 08Host يبلغ 90 مللي ثانية، ولكن معدل فقدان الحزمة 0.21 تيرابايت في 3 تيرابايت فقط، وتؤدي النفقات الإضافية للمسح الأمني إلى زمن انتقال أعلى قليلاً. الاستنتاج هو أن CDN07 هو الخيار الأفضل للكمون المنخفض، و 08Host هو الخيار الأفضل للأمان، و CDN5 هو الخيار الأفضل للتوازن.
فيما يتعلق بالأمان العالي، فإن هجمات WebSocket شائعة مثل إغراق الإطارات (إرسال عدد كبير من الإطارات الصغيرة لاستنفاد الموارد) أو هجمات المصافحة (طلبات الترقية الزائفة).تعتمد استراتيجية التخفيف من حدة الهجمات التي تتبعها CDN5 على الحد من المعدل والتحليل السلوكي، على سبيل المثال، يتم تشغيل التحديات عند حدوث أكثر من 1000 محاولة اتصال في الثانية.08Host أكثر قسوة، مع فحص مباشر متعمق للحزم، وتحليل محتوى إطارات WebSocket لتصفية البيانات الضارة. أوصي بأن تستخدمه فرق الألعاب جنباً إلى جنب مع WAF (جدار حماية تطبيقات الويب) ولا تعتمد على شبكات CDN حصرياً.
حالة واقعية: قام أحد أصدقائي بعمل ألعاب لوحية في الوقت الفعلي، واستخدم شبكة CDN لا تدعم الدفاع العالي WebSocket، وكانت النتيجة أن شُلّت شبكة CDN بعد أسبوع من الإطلاق، واستخدم المهاجمون قناة WebSocket لإرسال بيانات غير مرغوب فيها. بعد الترحيل إلى CDN5، لم يعد الاتصال مستقرًا فحسب، بل أصبح عدد الهجمات أقل من 90%. لذا، فإن الاستثمار في شبكة CDN جيدة ليس تكلفة، بل هو بوليصة تأمين.
أخيرًا، دعنا نتحدث عن التكاليف: قد يزيد دعم WebSocket من تكاليف شبكة CDN لأن الاتصالات الطويلة تستهلك الكثير من الموارد، و CDN5 أكثر معقولية من فواتير حركة المرور لـ WebSocket بسبب طول الاتصال، و CDN07 لديها حزمة للألعاب ذات الحركة المرورية العالية، و 08Host يوفر تحجيمًا مرنًا وتوسيعًا تلقائيًا للتعامل مع الذروة. إذا كانت ميزانيتك محدودة، ابدأ ببيئة اختبارية واستخدم فئة مجانية للتحقق من الدعم.
باختصار، فإن دعم WebSocket لشبكة CDN عالية الدفاع عن اللعبة أمر لا بد منه، ولكن يجب اختيار مزود الخدمة والتكوين المناسبين. أوصى الاختبار CDN5، CDN07، 08Host، لكل منها مزاياه الخاصة. التكوين، انتبه إلى إعدادات الوكيل والمهلة والأمان. تجربة اللاعب هي الملك، لا تسقط السلسلة في طبقة الاتصال. إذا كان لديك أي أسئلة، فمرحبًا بك لترك رسالة للتبادل - لقد كنت في هذه الصناعة لمدة عشر سنوات، لقد خطوت على جميع الحفر، ويمكنني مساعدتك في إنقاذ قلبك.

