لماذا تختار Apache APISIX بدلاً من NGINX أو Kong
API7.ai
July 30, 2022
بوابة API هي مكون بنية تحتية مهم في عصر السحابة الأصلية. هناك معياران شائعان لتقييم بوابة API: مدى ديناميكيتها، ومدى نضج قابلية المراقبة فيها. كانت العديد من الشركات تستخدم في السابق Nginx أو Kong كبوابة API، ولكنها تحولت لاحقًا إلى Apache APISIX. كبوابة API ولدت لعصر السحابة الأصلية، فإن Apache APISIX تحل بالفعل العديد من نقاط الألم للشركات في أبعاد مختلفة. الآن قد تتساءل، لماذا؟
قيود NGINX و Kong
في عصر الخدمات الأحادية، يمكن لـ NGINX التعامل مع معظم السيناريوهات. بينما في عصر السحابة الأصلية، فإن NGINX يعاني من قصورين بسبب بنيته:
- لا يدعم NGINX إدارة المجموعات. تقريبًا كل شركة لديها نظام إدارة تكوين NGINX الخاص بها. على الرغم من أن الأنظمة متشابهة، إلا أنه لا يوجد حل موحد.
- لا يدعم NGINX إعادة تحميل التكوينات بشكل حي. إذا قام المستخدم بتعديل تكوين NGINX، فسيكون من الضروري إعادة تحميل NGINX. أيضًا، في Kubernetes، ستتغير الخدمات بشكل متكرر. لذا إذا تم استخدام NGINX للتعامل مع حركة المرور، يجب إعادة تشغيل الخدمة بشكل متكرر، وهو أمر غير مقبول للشركات.
يحل Kong قيود NGINX ولكنه يجلب قيودًا جديدة:
- يحتاج Kong إلى الاعتماد على قاعدة بيانات PostgreSQL أو Cassandra، مما يجعل بنية Kong بأكملها منتفخة للغاية ويجلب قيودًا عالية التوفر للشركة. إذا فشلت قاعدة البيانات، فإن بوابة API بأكملها تفشل.
- يستخدم Kong البحث التتابعي في التوجيه. عندما يكون هناك أكثر من ألف مسار في البوابة، ستنخفض أداؤه بشكل كبير.
يحل APISIX جميع القيود المذكورة أعلاه ويصبح أفضل بوابة API في عصر السحابة الأصلية.
مزايا Apache APISIX
بنية مصممة بشكل جيد
أولاً، لدى Apache APISIX بنية ممتازة. السحابة الأصلية، كاتجاه تكنولوجي حالي، ستغير البنية التقنية للشركات التقليدية. العديد من التطبيقات تنتقل إلى الخدمات المصغرة والحاويات. لقد اتبع APISIX الاتجاه التكنولوجي منذ بدايته:
كما هو موضح في الشكل أعلاه، الجانب الأيمن والأيسر هما مستوى البيانات ومستوى التحكم في APISIX:
- مستوى البيانات: يعتمد على مكتبة شبكة NGINX (بدون استخدام مطابقة المسارات، التكوين الثابت، ووحدات C في NGINX)، يستخدم Lua و NGINX للتحكم الديناميكي في حركة الطلبات؛
- مستوى التحكم: يمكن للمسؤولين تشغيل etcd من خلال واجهة برمجة التطبيقات RESTful المدمجة. بمساعدة آلية Watch في etcd، يمكن لـ APISIX مزامنة التكوين مع كل عقدة في غضون أجزاء من الثانية.
لتحديث البيانات، يستخدم Kong طريقة استطلاع قاعدة البيانات؛ قد يستغرق الأمر 5-10 ثوانٍ للحصول على أحدث تكوين، بينما يحقق APISIX ذلك عن طريق مراقبة تغييرات تكوين etcd، مما يمكنه التحكم في الوقت بأجزاء من الثانية.
نظرًا لأن كل من APISIX و etcd يدعمان النشر متعدد الحالات، فلا يوجد نقطة فشل واحدة.
نظام بيئي غني
يوضح الشكل التالي خريطة النظام البيئي لـ APISIX. من هذا الشكل، يمكننا أن نرى أن APISIX يدعم بروتوكولات L7 بما في ذلك HTTP(S)، HTTP2، Dubbo، بروتوكول IoT MQTT، إلخ. بالإضافة إلى ذلك، يدعم APISIX بروتوكولات L4 مثل TCP/UDP.
يحتوي الجزء الأيمن من الشكل على بعض الخدمات مفتوحة المصدر أو SaaS، مثل Apache SkyWalking، Prometheus، HashiCorp Vault، إلخ. في الجزء السفلي من الشكل توجد بيئات أنظمة التشغيل الأكثر شيوعًا، مزودي السحابة، وبيئات الأجهزة. كبرنامج مفتوح المصدر، يمكن أيضًا تشغيل APISIX على خوادم ARM64.
يدعم APISIX ليس فقط العديد من البروتوكولات وأنظمة التشغيل، ولكن أيضًا يدعم الإضافات البرمجية متعددة اللغات. عند ظهوره لأول مرة، كان APISIX يدعم فقط استخدام لغة Lua لكتابة الإضافات. في هذه الحالة، يحتاج المطورون إلى إتقان مجموعة التقنيات المتعلقة بـ Lua و NGINX. ومع ذلك، فإن Lua و NGINX هما تقنيات متخصصة نسبيًا يعرفها عدد قليل من المطورين. لذلك، قمنا بعد ذلك بتمكين تطوير الإضافات على APISIX بلغات متعددة، ودعمنا رسميًا لغات مثل Java، Golang، Node.js، و Python.
مجتمع نشط
الشكل التالي هو منحنى نمو المساهمين، حيث يمثل المحور الأفقي الخط الزمني، ويمثل المحور الرأسي العدد الإجمالي للمساهمين. يمكننا أن نرى أن المشروعين، Apache APISIX و Kong، أكثر نشاطًا نسبيًا. حافظ Apache APISIX على معدل نمو ممتاز منذ اليوم الأول وينمو بسرعة تقارب ضعف سرعة Kong. اعتبارًا من يوليو 2022، تجاوز عدد المساهمين في APISIX عدد المساهمين في Kong، مما يظهر شعبية APISIX. بالطبع، هناك العديد من الطرق الأخرى لتقييم نشاط المشروع، مثل القضايا النشطة شهريًا، العدد الإجمالي لطلبات السحب (PRs)، إلخ. الخبر السار هو أن APISIX لا مثيل له أيضًا في هذه الجوانب.
بنية وكيل موحدة
من الشكل أدناه، أعتقد أنك قد فهمت بالفعل هدف APISIX: توحيد البنية التحتية للوكيل.
نظرًا لأن جوهر APISIX هو خدمة وكيل عالية الأداء، فإنه لا يرتبط بأي خصائص بيئية. لذلك، عندما يتطور إلى منتجات مثل Ingress و Service Mesh، لا يتعين عليك تغيير البنية الداخلية لـ APISIX. سيقدم لك ما يلي خطوة بخطوة كيفية دعم APISIX لهذه السيناريوهات.
موازنة الحمل وبوابة API
أولاً، بالنسبة لسيناريوهات LB التقليدية وبوابة API. نظرًا لأن APISIX يتم تنفيذه بناءً على NGINX + LuaJIT، فإنه يتميز بأداء عالي وميزات أمان، ويدعم التحميل الديناميكي لشهادة SSL، تحسين مصافحة SSL، وغيرها من الوظائف. في مجال موازنة الحمل، يؤدي APISIX أيضًا أداءً أفضل. لن يؤدي التحول من NGINX إلى APISIX إلى تدهور الأداء بل سيحسن كفاءة الإدارة التي توفرها ميزات مثل الإدارة الموحدة.
بوابة الخدمات المصغرة
يسمح لك APISIX بكتابة إضافات تمديد بلغات متعددة، مما يمكنه حل المشكلة الرئيسية التي تواجهها بوابات API الشرقية-الغربية للخدمات المصغرة - كيفية الإدارة بشكل موحد في بيئات غير متجانسة. يدعم APISIX أيضًا اكتشاف الخدمات مثل Nacos، etcd و Eureka، وطرق DNS القياسية، مما يمكنه استبدال بوابات API للخدمات المصغرة مثل Zuul، Spring Cloud Gateway، و Dubbo تمامًا.
Kubernetes Ingress
حاليًا، يتم تطوير مشروع Kubernetes Ingress Controller الرسمي لـ K8s بشكل أساسي بناءً على ملف تكوين NGINX، لذلك فهو يعاني من قصور طفيف في قدرة التوجيه وطريقة التحميل ولديه بعض القيود الواضحة. على سبيل المثال، عند إضافة أو تعديل أي API، تحتاج إلى إعادة تشغيل الخدمة لإكمال تحديث تكوين NGINX الجديد. إعادة تشغيل الخدمة لها تأثير كبير على حركة المرور عبر الإنترنت.
يحل APISIX Ingress Controller جميع القيود المذكورة أعلاه بشكل مثالي: فهو يدعم إعادة التحميل الحية بالكامل. في الوقت نفسه، يرث جميع مزايا APISIX ويدعم أيضًا CRD الأصلي لـ Kubernetes، مما يسهل على المستخدمين الهجرة.
شبكة الخدمات
في السنوات الخمس إلى العشر القادمة، سيبدأ ظهور بنية شبكة الخدمات بناءً على نموذج السحابة الأصلية. بدأ APISIX أيضًا في تحديد المسار مسبقًا. بعد بحث وفير وتحليل تقني، يدعم APISIX بروتوكول xDS. ولد APISIX Mesh، ولـ APISIX أيضًا مكان في مجال شبكة الخدمات.
ملخص
لقد مرت ثلاث سنوات منذ اليوم الأول الذي تم فيه إصدار Apache APISIX كمصدر مفتوح. أثبت المجتمع النشط للغاية ودراسات الحالة أن APISIX هي بوابة API المثالية في عصر السحابة الأصلية. من خلال قراءة هذه المقالة، أعتقد أن لديك فهمًا أكثر شمولاً لـ APISIX.
إذا كان لديك أي أسئلة، يمكنك ترك رسالة في GitHub issue؛ سيستجيب المساهمون في المجتمع بسرعة؛ بالطبع، يمكنك أيضًا الانضمام إلى قناة APISIX Slack وقائمة البريد؛ يرجى الرجوع إلى انضم إلينا.