فهم وإدارة التأخير في APISIX: دليل تقني شامل

December 29, 2023

Technology

سؤال شائع من المستخدمين يدور حول القياس الدقيق للزمن في APISIX. عند استخدام APISIX، كيف يجب على المرء التعامل مع الزمن العالي بشكل غير معتاد؟

في الواقع، تتمحور المناقشات حول قياس الزمن حول أداء ووقت استجابة طلبات API. فهم هذه الجوانب أمر بالغ الأهمية لضمان كفاءة خدمات API، خاصة في برامج B2B حيث يطالب العملاء بتوفر وأداء عالي لـ API. في السيناريوهات الحساسة مثل برامج تداول الأسهم في الأسواق المالية، يمكن أن يؤثر الزمن بشكل كبير على المتداولين.

إذن، ما هو الزمن وما هو الزمن في APISIX؟ الزمن في APISIX يشير إلى الوقت المستغرق لعملية طلب API بأكملها، من إرسالها من قبل العميل إلى استلام الاستجابة. هذا التأخير يشمل عوامل مثل زمن شبكة العميل، وقت المعالجة الداخلية لـ APISIX، وزمن التفاعل مع الخدمات العلوية.

الزمن

لفهم وقياس هذه الأزمنة بشكل أفضل، يمكننا تصنيفها إلى عدة مكونات رئيسية.

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

  2. وقت المعالجة الداخلية لـ APISIX: يشمل هذا الوقت الذي تستغرقه APISIX لتنفيذ عمليات مختلفة داخليًا، بما في ذلك قرارات التوجيه، المصادقة، الترخيص، والمنطق المخصص المطبق من خلال الإضافات.

  3. زمن التفاعل مع الخدمات العلوية: إذا كان APISIX يتفاعل مع خدمات علوية (عادة تطبيقات خلفية أو خدمات مصغرة)، فإن الوقت المستغرق في هذا التفاعل يتم تضمينه في الزمن الكلي. يتضمن هذا الوقت المستغرق لانتقال الطلب من APISIX إلى الخدمة العلوية والوقت الذي يستغرقه استلام الاستجابة.

يمكن حساب زمن APISIX باستخدام الصيغة: زمن APISIX = الزمن الكلي - زمن التفاعل مع الخدمات العلوية. يمثل الزمن الكلي الوقت من إرسال الطلب إلى استلام الاستجابة، بينما يركز زمن التفاعل مع الخدمات العلوية على وقت الاتصال بين APISIX والخدمة العلوية.

ملاحظة: على لينكس، يتم حساب upstream_response_time عبر clock_gettime(CLOCK_MONOTONIC_COARSE)، وبقيم نموذجية لـ CONFIG_HZ=250، قد يصل إلى 4 مللي ثانية. في الوقت نفسه، الوقت لحساب request_time ليس وقتًا رتيبًا، ولكنه نتيجة gettimeofday()، وهو الوقت وفقًا للساعة الحائطية. لذا في بعض الحالات، قد يكون upstream_response_time أكبر قليلاً من request_time.

بالإضافة إلى ذلك، في بيئات الشبكة الضعيفة أو السيناريوهات التي تتضمن تحميل/تنزيل ملفات كبيرة، يمكن إضافة الزمن بين العميل والبوابة إلى apisix_latency. يرجى تحليل القضايا المحددة على أساس كل حالة على حدة.

يمكن تصنيف زمن APISIX إلى ثلاثة أنواع:

  1. الزمن النازل: يشمل زمن نقل الشبكة وعمليات مثل قراءة جسم الطلب بين APISIX والعميل. المراقبة وتحليل هذا الزمن توفر رؤى حول أداء الاتصال للتحسين.

  2. زمن NGINX: نظرًا لأن APISIX يستخدم NGINX لمعالجة الطلبات والتوجيه، فإن وقت التشغيل الداخلي لـ NGINX يؤثر على الزمن الكلي. يمكن استخدام أدوات متخصصة للمراقبة.

  3. زمن تنفيذ كود إضافات Lua: نظرًا لوجود العديد من الإضافات Lua في APISIX، فإن وقت تنفيذ كل إضافة هو عامل مهم. هناك حاجة إلى أدوات متخصصة للتحليل.

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

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

للحصول على بيانات مقارنة QPS والزمن بين APISIX ومنتجات البوابة الأخرى، راجع "لماذا يعتبر Apache APISIX أفضل بوابة API؟".

مقارنة الزمن بين APISIX وKong

Tags: