كيف تندمج vivo مع APISIX

November 25, 2022

Case Study

نظرة عامة

منذ مايو 2021، قامت vivo بإدخال Apache APISIX كبوابة API لها. بعد أكثر من عام من الممارسة في vivo، قام APISIX بحل العديد من النقاط المؤلمة التقنية والتجارية وتم استخدامه على نطاق واسع.

النقاط المؤلمة قبل استخدام APISIX

  • إدارة معقدة لسيناريوهات الأعمال وصيانة النظام

    بسبب النمو السريع للأعمال، هناك سيناريوهات وأنظمة متنوعة تخدمها، والتي تحتاج vivo إلى طريقة موحدة لإدارتها.

  • التفاعل بين مستوى البيانات ومستوى التحكم

    بالنسبة للشركات المتوسطة والكبيرة مثل vivo، من غير المتوقع أن تؤثر المشاكل الصغيرة التي تحدث في مستوى البيانات على مستوى التحكم.

  • عدم دعم موارد متعددة الأبعاد

    تؤدي المشاريع المتنوعة إلى أسماء نطاقات وعناوين URL متنوعة. يحتاج قسم الأعمال إلى البحث وفقًا لأبعاد الموارد المختلفة.

  • تأثير غير قابل للتحكم للمشاكل

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

باستبدال APISIX بـ NGINX، نجحت vivo أخيرًا في تحقيق سلسلة من الإنجازات كما يلي.

الإنجازات بعد استخدام APISIX

  • توافر عالي

    لم تحدث أي فشل كبير منذ إطلاق APISIX في vivo، وتجاوزت توافر النظام 99.99%.

  • أداء عالي

    تحمل حركة مرور كبيرة عبر الإنترنت وخدمة عدد كبير من الخدمات، وصلت حركة المرور الحالية عبر الإنترنت إلى ما يقرب من مليون استعلام في الثانية (QPS).

  • ميزات غنية

    بفضل الميزات الغنية لـ APISIX، يمكن لـ APISIX تغطية تقريبًا جميع سيناريوهات الوكيل الشائعة لـ NGINX. تم نقل حوالي 50% من مشاريع vivo من NGINX إلى مجموعات APISIX.

  • دعم بناء وتطوير السحابة الأصلية

    وصلت المعدات الأساسية لـ K8s التي تدعم الحاوية إلى حجم 10,000. تم نقل حوالي 40% من المشاريع من المعدات الأساسية والأجهزة الافتراضية إلى منصة حاويات K8s، مما يدعم ويعزز تقدم الحاوية في vivo.

تصميم نظام vivo بناءً على APISIX

بعد ذلك، دعونا نلقي نظرة على تصميم نظام vivo بعد اعتماد APISIX.

عرض العمارة المخصصة على APISIX

عمارة بوابة API لـ vivo مع APISIX

من الرسم أعلاه، يمكننا تحليل أن vivo قد:

  • أكملت بناء بوابات حركة المرور من الطبقة 4 والطبقة 7، والتي يتم دعمها بواسطة APISIX
  • حققت وصول حركة المرور والنشر المختلط للمعدات الأساسية والأجهزة الافتراضية والحاويات
  • نفذت إدارة مجموعات APISIX
  • ربطت منصة DevOps الداخلية وخدمات نشر الأعمال للوصول السريع والتلقائي لحركة المرور
  • حسنت بناء المراقبة

تحسينات إدارة التكوين والإطلاق

لتلبية الاحتياجات الفعلية لقسم الأعمال بشكل أفضل، قامت vivo بإجراء سلسلة من التعديلات على APISIX. فيما يلي بعض هذه التعديلات، بما في ذلك تعديل مستوى التحكم، وإدارة فصل المجموعات، وإعادة توجيه البيانات.

تعديل مستوى التحكم

يمكن أن تكون العملية بأكملها كما يلي:

بعد تكوين البيانات في منصة تغييرات A6، سيتم تسليم المعلومات عبر إشعار RPC إلى ManagerAPI، الذي تم بناؤه بواسطة vivo بناءً على لوحة تحكم APISIX مفتوحة المصدر.

ثم يتم إرسال حركة المرور إلى apisix-agent. يقوم APISIX بالاستطلاع بانتظام لـ apisix-agent من خلال العملية المميزة للحصول على مهام التغيير بشكل مجمع. بعد ذلك، تقوم العملية المميزة بإعلام worker من خلال قوائم الانتظار المشتركة لتحقيق التغيير في الذاكرة.

في الوقت نفسه، يقوم APISIX بإعلام apisix-agent بنتيجة المهام ثم تسليمها إلى ManagerAPI. بالإضافة إلى ذلك، يمكن لمنصة تغييرات A6 الاستطلاع للحصول على نتائج المهام من ManagerAPI.

طريقة الإدارة والنشر لـ vivo

etcd هي نقطة بارزة في APISIX، مما يسمح بتشغيل مستويات التحكم والبيانات بشكل مستقل. مع الأخذ في الاعتبار تفرد عمارتها، تخلت vivo عن etcd في العملية أعلاه. فيما يلي بعض الأسباب.

بسبب تنوع مشاريع vivo، هناك أسماء نطاقات وعناوين URL متنوعة. بالإضافة إلى ذلك، يحتاج أقسام الأعمال إلى الاستعلام عن أبعاد مختلفة. بفضل قابلية APISIX للتكيف ليس فقط مع etcd ولكن أيضًا مع أنواع مختلفة من قواعد البيانات، يمكن لـ vivo بسهولة استخدام قواعد بيانات مثل MongoDB، للعمل معًا مع APISIX.

بالإضافة إلى ذلك، قامت vivo بالمساهمات التالية لتكون متوافقة مع Apache APISIX.

  • تطوير مكون Agent

    منذ مايو 2021، قامت vivo بإدخال Apache APISIX. مع الأخذ في الاعتبار الخلفية التقنية والسياق، كانت vivo غير واثقة من قدرتها على تبني APISIX لأن vivo ليس لديها خبرة مع OpenResty وLua. بالإضافة إلى ذلك، هناك العديد من المهام غير المتعلقة بإعادة التوجيه، مثل جمع السجلات والتعامل مع المراقبة، مما قد يزيد من تعقيد إدارة مستوى البيانات. وبالتالي، قامت vivo بتطوير مكون agent لتقليل تعقيد التطوير.

  • كتابة البيانات على القرص

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

  • رد نتيجة مهمة التغيير

    كشركة كبيرة الحجم، تحتاج vivo إلى التأكد من أن التغييرات في الموارد مثل الموجهات والمنبع يمكن أن تكون فعالة وناجحة، وأن النظام يمكنه الإبلاغ عن الخطأ حتى إذا فشلت هذه التغييرات. مثل هذا المنطق من ACK (رمز الإقرار) يضمن أن عمال NGINX على الجهاز يمكنهم الرد. عندما تكون مهام الرد ناجحة، سيتم تحديث جميع العمال على APISIX لتغييرات الموارد إلى الذاكرة ذات الصلة.

إدارة فصل المجموعات

إدارة فصل المجموعات

توفر النسخة المفتوحة المصدر من APISIX etcd للجميع للمشاركة. ومع ذلك، فإن مشاريع الشركة معقدة، والمشاكل التي يتم مواجهتها غير قابلة للتحكم. بالإضافة إلى ذلك، من المحتم استخدام إضافات معقدة، مما يؤثر على أداء النظام.

لذلك، يتم إدارتها عن طريق فصل المجموعات لتحقيق عزل تكوين المجموعات على APISIX، مما يمكنه:

  • التحكم في مجال الأعطال ودعم تعقيد المشاريع بشكل فعال دون التأثير على المشاريع الأخرى
  • تقليل الحمل الناتج عن طبقة APISIX غير المتعلقة بإعادة التوجيه عندما تتغير عقد الحاويات بشكل متكرر
  • تقليل تأثير الحمل الناتج عن فحص الصحة

زيادة QPS التي يحملها HTTPS

وفقًا للمتطلبات ذات الصلة من وزارة الصناعة وتكنولوجيا المعلومات في الصين، يجب أن تمر حركة المرور الخارجية عبر بروتوكول HTTPS. كبروتوكول تشفير HTTP يعتمد على TLS، يفرض HTTPS عبئًا ثقيلًا على وحدة المعالجة المركزية في عملية التشفير وفك التشفير.

عندما تكون تكوينات التوجيه وغيرها هي نفسها، فإن حركة المرور التي يمكن أن يحملها HTTPS هي حوالي 1/8 - 1/10 من تلك التي يحملها HTTP.

بعد تثبيت بطاقة تسريع Intel® QAT (QuickAssist Technology)، تقوم vivo بتسليم معالجة فك التشفير إلى بطاقة تسريع QAT، مما يحرر وحدة المعالجة المركزية، وبالتالي زيادة QPS التي يحملها HTTPS على جهاز واحد. كما يمكن أن نرى من الشكل أدناه، تم مضاعفة قدرة حمل HTTPS لجهاز واحد تقريبًا.

بيانات تظهر تحسين vivo في حمل حركة المرور

كيف تجمع vivo الأعمال مع APISIX

دعم تطوير الحاويات

لدعم تطوير الحاويات، قامت vivo بتطوير وحدة تحكم K8s ingress ذاتيًا. فيما يلي بعض وظائفها.

  1. التكيف مع آلية تغيير تكوين الدفع غير المتزامن المعدلة من قبل vivo

  2. إجراء إشعارات معالجة أحداث مجموعات K8s المتعددة إلى APISIX

  3. التعامل مع سيناريوهات المشاريع المعقدة مثل:

  • خادم واحد مع منافذ متعددة

  • عندما يتم توصيل خوادم إطار عمل RPC الأخرى، مثل Dubbo وgRPC، إلى K8s، هناك حاجة إلى مجموعة موحدة من منطق المعالجة لإعلام APISIX أو الأطر الأخرى بمعلومات المنفذ وفقًا لخصائص تكوين المشاريع

  1. التكيف مع الاحتياجات الخاصة لـ DevOps الداخلي للشركة وسيناريوهات الأتمتة الأخرى، مما يسهل النشر السريع وتمكين حركة المرور

مساعدة المشاريع على الانتقال من NGINX إلى APISIX

تم نشر مشاريع vivo على مجموعة NGINX الحالية وكانت تعمل بشكل مستقر لفترة طويلة. ومع ذلك، فإنها تجلب أعباء عمل غير متعلقة بالأعمال وعدم استقرار للمشاريع. وبالتالي، من الصعب إجراء الانتقال. إذن كيف يتم تعزيز انتقال المشاريع إلى APISIX؟

  • أولاً، العثور على مشروع لقسم تعاوني، خدمة قسم الأعمال بشكل جيد لإنشاء معيار، وتوفير التوجيه الفني والتدريب

  • بناء نظام مستوى تحكم سهل الاستخدام لتسهيل وصول الأعمال والإدارة متعددة الأبعاد لأقسام الأعمال

  • توفير قدرة تحويل تلقائية وتحويل التكوين الأساسي من تكوين NGINX إلى تكوين APISIX

ترقية APISIX ودعم نسخته المفتوحة المصدر

بناءً على إصدار APISIX 2.4، قامت vivo بإجراء بعض التعديلات وإصدار النسخة الجديدة، والتي تم ترقيتها إلى إصدار أحدث في الربع الثاني من هذا العام.

من ناحية، بفضل العمارة المعيارية لـ APISIX، من السهل نسبيًا دمج كود Lua المعدل من vivo في فرع الإصدار الأعلى من APISIX. من ناحية أخرى، تقوم vivo أيضًا بترقية قسم OpenResty، بحوالي إصدار واحد سنويًا. نظرًا لأن vivo تستخدم الكثير من PATCH وبعض الوظائف المفيدة مثل QAT، فإن ترقية هذا المكون صعبة وتتطلب جهدًا.

تتميز النسخة المجانية من NGINX بتحديثات بطيئة وغير نشطة. تفكر vivo في ما إذا كانت ستبني بشكل مشترك مع APISIX. لتقليل القوى العاملة اللازمة لإجراء اختبارات النظام ذات الصلة، قامت vivo بتبني Robot Framework، وهو إطار عمل عام لأتمتة الاختبارات لاختبارات تكامل النظام. إنهم يعززون المكونات ذات الصلة لتغطية اختبار الوحدة ونموذج تطوير TDD (التطوير القائم على الاختبار).

تخطيط vivo المستقبلي

في العام المقبل، تخطط vivo لتوسيع APISIX كبوابة حركة مرور إلى بوابة API، مستفيدة من مزاياها مثل الحد من المعدل، المصادقة، وكسر الدائرة، إلخ. مع الأخذ في الاعتبار الجمع بين APISIX وDPDK-NGINX، ستقوم vivo أيضًا بتدريب الكوادر الفنية والانضمام إلى إنشاء المجتمع. علاوة على ذلك، ستقوم بتعزيز المهارات الأساسية لوضع أساس جيد، وبناء حركة المرور وإدارة الخدمات.

مرحبًا بكم لمعرفة المزيد عن Apache APISIX.

يمكنكم الاتصال بنا على https://api7.ai/contact.

Tags: