iQIYI تطلق بوابة API مبتكرة باستخدام Apache APISIX
September 7, 2021
نظرة عامة
التحديات
- يؤدي حجم المرور الكبير إلى ظهور عدد كبير من تنبيهات انخفاض وقت التوقف لوحدة المعالجة المركزية (CPU IDLE) يوميًا.
- هناك العديد من المكونات التي تعتمد على بنية النظام.
- تكلفة التشغيل والصيانة (O&M) مرتفعة.
الأهداف
- اختيار بوابة API عالية الأداء لتلبية متطلبات iQIYI.
- تقليل تكلفة الهجرة.
- العثور على بوابة API ذات مجتمع نشط ونظام بيئي صحي.
- بناء بوابة API جديدة لتتناسب مع اتجاه الحوسبة السحابية الأصلية (cloud-native).
النتائج
- تحسن الأداء 10 أضعاف مقارنة بالسابق، مع تحمل ملايين الاستعلامات في الثانية (QPS) يوميًا.
- دعم بسهولة أكثر من 9,000 مشروع تجاري عبر الإنترنت يعتمد على API.
- تحقيق استعادة البيانات بعد الكوارث بنجاح عبر مواقع ومستويات متعددة في جميع أنحاء الصين.
ما الذي حدث خلف كواليس iQIYI؟
شارك كونغ هي، كبير مهندسي البحث والتطوير في iQIYI، في حديث خلال لقاء Apache APISIX Meetup في شنغهاي مؤخرًا. يعمل في قسم البنية التحتية للحوسبة السحابية في IIG وهو مسؤول عن تطوير بوابة API وأعمال التشغيل في iQIYI. دعونا نتعمق في حديثه وقصة بوابة API الخاصة بـ iQIYI لفهم أفضل لـ Apache APISIX.
تأسست iQIYI في 22 أبريل 2010 بواسطة Baidu، الشركة التي تقف وراء أكبر محرك بحث على الإنترنت في الصين، وهي حاليًا واحدة من أكبر مواقع الفيديو عبر الإنترنت في العالم، حيث يقضي المستخدمون ما يقرب من 6 مليارات ساعة على خدمتها شهريًا، مع أكثر من 500 مليون مستخدم نشط شهريًا.
كانت iQIYI تعتمد سابقًا على بوابة API خاصة بها تسمى Skywalker، وهي تطوير مخصص يعتمد على Kong. يحتاج Skywalker الآن إلى التعامل مع حجم مرور هائل، حيث يمكن أن يصل الذروة اليومية لخدمة البوابة إلى مليون استعلام في الثانية (QPS) وآلاف مسارات API. ومع ذلك، بدأت عيوب هذا المنتج تظهر تدريجيًا.
- لم يعد أداء البوابة يلبي متطلبات iQIYI، حيث تتلقى عددًا كبيرًا من تنبيهات انخفاض وقت التوقف لوحدة المعالجة المركزية (CPU IDLE) يوميًا بسبب حجم المرور الكبير.
- هناك العديد من المكونات التي تعتمد على بنية النظام.
- تكلفة التشغيل والصيانة (O&M) مرتفعة للغاية.
بعد توليه هذا المشروع هذا العام، بدأ كونغ في التحقيق في منتجات البوابة المماثلة لحل المشكلات والصعوبات المذكورة أعلاه، ووجد أخيرًا Apache APISIX.
كيف تفوق Apache APISIX على Kong
قبل اختيار Apache APISIX، كانت iQIYI قد بدأت بالفعل في استخدام Kong، لكنها تخلت عنه لاحقًا.
لماذا التخلي عن Kong؟
بعد الممارسة الفعلية مع Kong، يوضح كونغ سبب تخلي فريقه عن Kong. فيما يلي بعض العيوب الأساسية لـ Kong.
- تستخدم مسارات Kong استعلامات التمرير، وهي ليست سريعة.
- قاعدة بيانات Postgres الخاصة بـ Kong تؤدي إلى نشر متضخم، ومزامنة غير فعالة، وتوفر منخفض.
- الكود يحتوي على اقتران عالي.
لماذا اختيار APISIX؟
قال كونغ: "قارنا الأداء بين Apache APISIX وKong خلال التحقيق، ووجدنا بشكل مفاجئ أن Apache APISIX كان أفضل بعشر مرات من Kong من حيث تحسين الأداء. كما قارنا Apache APISIX مع بعض منتجات البوابة الرئيسية الأخرى، ووجدنا أن زمن استجابة Apache APISIX دائمًا أقل بنسبة 50% من المنتجات الأخرى. علاوة على ذلك، يمكن لـ Apache APISIX أن يعمل بشكل مستقر حتى إذا وصل استخدام وحدة المعالجة المركزية إلى أكثر من 70%. APISIX رائع حقًا!"
تم تطوير كل من Apache APISIX وKong على أساس OpenResty على المستوى التقني، مما يجعل تكلفة الهجرة منخفضة نسبيًا. بالإضافة إلى ذلك، يتمتع Apache APISIX بقدرة ممتازة على التكيف ويمكن نشره بسهولة في العديد من البيئات المختلفة، بما في ذلك منصات الحوسبة السحابية.
قال كونغ: "في الوقت نفسه، وجدنا أيضًا أن Apache APISIX هو مشروع مفتوح المصدر نشط للغاية ويحل المشكلات بسرعة كبيرة. كما أن إطاره السحابي الأصلي يتوافق مع خطط الشركة المستقبلية. لذلك، اخترنا Apache APISIX كبوابة API لدينا."
ابتكار بنية بوابة API في iQIYI بعد استخدام APISIX
بعد اختيار بوابة API الرائعة، بدأت iQIYI في إنشاء بنية بوابة API الجديدة الخاصة بها، والتي تظهر أدناه، بما في ذلك اسم النطاق، البوابة، مثيلات الخدمة، ومراقبة الإنذارات.
DPVS هو مشروع مفتوح المصدر تم تطويره بناءً على LVS بواسطة iQIYI. نظام مراقبة الإنذارات Hubble هو أيضًا تطوير مخصص يعتمد على مشروع مفتوح المصدر، مع بعض التحسينات على أداء وتوفر Consul.
الإنجاز 1: تحسين مستويات البيانات والتحكم لإدارة المجموعات والخدمات
مستوى البيانات موجه بشكل رئيسي للمستخدمين الأماميين، وتتمتع البنية بأكملها من LB إلى البوابة بنشر متعدد المواقع والروابط لاستعادة البيانات بعد الكوارث، مما يسمح للمستخدمين بالوصول إلى أقرب مركز بيانات لهم.
بالنسبة لمستوى التحكم، هناك منصة خدمات صغيرة لإدارة مجموعات وخدمات متعددة. تسمح منصة الخدمات الصغيرة للمستخدمين بتجربة خدمة شاملة دون الحاجة إلى تقديم تذاكر، مما يوفر وقتًا كبيرًا. في الخلفية، يتحكم متحكم البوابة بشكل رئيسي في تكوين جميع واجهات برمجة التطبيقات (APIs)، مثل إنشاء واجهات برمجة التطبيقات والإضافات، بينما يتعامل متحكم الخدمة مع التسجيل، الإلغاء، والتحقق من الصحة.
الإنجاز 2: إضافة المزيد من الميزات: التحكم في الأمان، تحديد المعدل، والمراقبة
قامت iQIYI بتنفيذ بعض الوظائف الأساسية في بنية API مثل تحديد المعدل، المصادقة، الإنذارات، المراقبة، إلخ، بعد التكيف مع Apache APISIX.
الجزء الأول يتعلق بـ HTTPS. بالنسبة للتحكم في الأمان، لا تقوم iQIYI بتخزين أي شهادات أو مفاتيح على خوادم البوابة، ولكن على خادم بعيد مخصص. ومع ذلك، كان من الصعب تحقيق ذلك أثناء استخدام Kong؛ بدلاً من ذلك، استخدمت iQIYI NGINX كبادئة لإجراء تفريغ HTTPS. بعد الهجرة إلى Apache APISIX، نجحت iQIYI في تنفيذ هذه الميزة على Apache APISIX، مما يوفر طبقة نقل إضافية عبر الرابط.
فيما يتعلق بتحديد المعدل، بالإضافة إلى وظائف تحديد المعدل الأساسية، تم تنفيذ تحديد المعدل الدقيق وتحديد المعدل ضد دقة المستخدم. بالنسبة للمصادقة، تم توفير خدمات متخصصة لمصادقة جواز السفر. علاوة على ذلك، يمكن لـ iQIYI الوصول إلى سحابة أمان WAF الخاصة بالشركة لتصفية الصناعات غير القانونية.
تم تحقيق وظيفة مراقبة الإنذارات باستخدام الإضافة المدمجة في Apache APISIX - Prometheus, وسيتم إرسال بيانات المؤشرات مباشرة إلى نظام مراقبة الشركة. كما يدعم Apache APISIX iQIYI بخدمات تسجيل وتحليل التتبع.
الإنجاز 3: إنشاء عملية تحديث ديناميكية لاكتشاف الخدمة
بالنسبة لاكتشاف الخدمة المذكور أعلاه، يتم تسجيل الخدمات بشكل رئيسي في مجموعات Consul عبر مركز الخدمة، ثم يتم استخدام اكتشاف خدمة DNS لتحديثها ديناميكيًا. QAE في الرسم هو منصة خدمات صغيرة تُستخدم داخليًا في شركتنا. دعونا نستخدم مثالًا لتوضيح عملية تحديث المثيلات باختصار.
عند تحديث المثيلات، سنقوم أولاً بتسجيل الخروج من العقد المقابلة من Consul وإرسال طلبات تحديث ذاكرة التخزين المؤقت DNS إلى البوابة عبر متحكم بوابة API. عند تحديث الذاكرة المؤقتة بنجاح، سيرسل المتحكم طلبات إلى منصة QAE لإيقاف جميع عقد التطبيقات الخلفية المرتبطة لتجنب إعادة توجيه المرور إلى أي عقدة غير متصلة.
الإنجاز 4: تحسين قدرة التوجيه الاتجاهي
تمتلك البوابة نشرًا متعدد المواقع، وتم بناء مجموعة كاملة من روابط النسخ الاحتياطي متعددة المواقع مسبقًا. بالإضافة إلى ذلك، يقترح كونغ أيضًا أن يكون للمستخدمين نشر متعدد المواقع للوصول الأقرب لخدماتهم الخلفية. وبالتالي، يمكن للمستخدمين إنشاء خدمة API في منصة بوابة Skywalker، وسيقوم المتحكم بنشر مسارات API إلى جميع مجموعات بوابة DC. في الوقت نفسه، سيتم توجيه اسم النطاق الافتراضي للخدمة إلى اسم نطاق بوابة موحد.
يمكن لـ Apache APISIX تقديم خدمة مباشرة مع نشر متعدد المواقع للوصول الأقرب وقدرة الانتقال السريع لاستعادة البيانات بعد الكوارث، كما يدعم تحليل المسارات المخصصة التي يحددها المستخدمون. علاوة على ذلك، يمكن للمستخدمين تخصيص تكوين تحليل المسارات من خلال اسم النطاق UUID إذا كانوا بحاجة إلى الانتقال السريع، النشر الأزرق-الأخضر، والإصدار التدريجي. بالإضافة إلى ذلك، يدعم Apache APISIX أيضًا الجدولة المخصصة لاستعادة الخدمات الخلفية.
الإنجاز 5: تحسين تحمل الكوارث متعدد المواقع والمستويات
للتعامل مع حالات مثل حجم المرور الكبير، عدد كبير من المجموعات، وعدد كبير من العملاء، تحتاج iQIYI إلى الوصول إلى أقرب خدمة واستعادة البيانات بعد الكوارث على المستوى التشغيلي.
بالإضافة إلى النسخ الاحتياطي متعدد المواقع والروابط لاستعادة البيانات بعد الكوارث، لا تزال iQIYI بحاجة إلى النظر في قضايا المستويات والعقد المتعددة. APISIX يساعد في ذلك. كلما كان العملاء أقرب إلى العقد الميتة، زادت التأثيرات على الأعمال والمرور.
- إذا تعطلت عقدة الخدمة الخلفية الأبعد، يمكن لـ iQIYI تحقيق قطع العقدة الفردية أو الانتقال السريع لـ DC الميتة من خلال مركز الخدمة وآلية التحقق من صحة البوابة. وبالتالي، سيقتصر التأثير على خدمات محددة، دون التأثير على المستخدمين.
- إذا تعطلت البوابة، يمكن لـ iQIYI استخدام آلية التحقق من صحة L4 DPVS لقطع عقد البوابة الفاشلة، ويكون التأثير صغيرًا نسبيًا، دون التأثير على المستخدمين.
- إذا لم تتمكن إجراءات القطع المذكورة أعلاه من إصلاح العقدة الميتة، يمكن لـ iQIYI تحقيق الانتقال السريع التلقائي في DNS من خلال اختبار التوفر متعدد العقد على مستوى اسم النطاق في الشبكة الخارجية. ومع ذلك، هذه الطريقة بطيئة نسبيًا ويمكن أن تؤثر على العديد من الخدمات الأخرى، ويمكن أن يلاحظ المستخدمون ذلك.
خطة iQIYI المستقبلية
في التكامل مع APISIX، تحاول iQIYI تحسين بعض القضايا لتناسب أعمالها بشكل أفضل.
-
بالنظر إلى الاختناقات المحتملة لبعض المكونات المعتمدة، مثل etcd، مراقبة Prometheus، وخدمة التسجيل، تخطط iQIYI لاستخدام طريقة نشر هجينة. أي: مشاركة المعلومات داخل المجموعات الكبيرة والحفاظ على المجموعات الصغيرة مستقلة. على سبيل المثال، سيتم نشر الخدمات الحيوية مع المجموعات الصغيرة.
-
سيتم إجراء المزيد من التخفيضات والتحسينات لمقاييس مراقبة Prometheus، خاصة لاكتشاف خدمة DNS.
قال كونغ: "نأمل أن يدعم Apache APISIX المزيد من الميزات ويحافظ على كفاءة أداء ممتازة واستقرار في التطورات والتحديثات المستقبلية."
هل تبحث عن دعم APISIX؟
هل ترغب في تسريع تطويرك بثقة مثل iQIYI؟ لتحقيق أقصى استفادة من دعم APISIX، تحتاج إلى API7. نحن نقدم دعمًا متعمقًا لـ APISIX وحلول إدارة API بناءً على احتياجاتك!
اتصل بنا متى شئت: https://api7.ai/contact.