PRODمنصة BaaS الأوروبية السياديةافتح لوحة المعلومات →

الأداء · 10 دقيقة للقراءة

محدد معدل البوابة وزمن وصول قاطع الدائرة

Affane Daylami · Fondateur · 11 مارس 2026

العودة إلى بلوق

يمكن لمحدد المعدل الذي تم وضعه بشكل سيء إضافة عشرات المللي ثانية إلى كل طلب. مصممة بشكل جيد، وتضيف أقل من واحد. تطبق بوابة Rust الخاصة بـ Aurabase (بوابة الهالة) كلتا الآليتين — تحديد المعدل الموزع وقاطع الدائرة — في قلب مجموعة البرامج الوسيطة الخاصة بها. إليك ما تقوله الأدبيات التقنية، وما يفعله كود Aurabase بدقة.

تم إنشاء هذا النص الإنجليزي تلقائيًا من النص الأصلي الفرنسي ولم تتم مراجعته بعد.
تمت ترجمة هذه الصفحة تلقائيًا. النسخة الإنجليزية موثوقة.

الأساسيات

عادةً ما يضيف محدد المعدل الموزع الذي تم تنفيذه بشكل صحيح (العد الذري، ذاكرة التخزين المؤقت الاحتياطية المحلية) أقل من مللي ثانية لكل طلب وفقًا للعديد من المصادر المتخصصة. تتبع بوابة Aurabase هذا النمط بالضبط: صندوق governor لبرامج مكافحة DoS المحلية، ونص Lua Redis الذري للعد الموزع بين المثيلات، وذاكرة تخزين مؤقت احتياطية moka إذا كان Redis غير متاح. تعمل دائرة القطع على تقليل زمن الوصول المتصور في حالة الفشل بدلاً من إضافته - فهي تعمل على تقصير فترة الانتظار حتى انتهاء المهلة الكاملة. لم يتم نشر أي أرقام لزمن وصول Aurabase حتى الآن: وإليك السبب، وكيف تعمل الآلية فعليًا.

#
لماذا هذين الوسيطتين

مكافحة حجب الخدمة والفشل المتتالي، مشكلتان متميزتان

يعمل تحديد المعدل على حماية الواجهة الخلفية لديك من حركة المرور الزائدة، سواء كانت مشروعة أم لا - فهو يجيب على السؤال "هل يحق لهذا المتصل إرسال هذا الطلب الآن؟" ". يقوم قاطع الدائرة بحماية الواجهة الخلفية لديك من خدمة المصب بالفعل - فهو يستجيب لسؤال "هل أظهرت هذه الخدمة أنها أصبحت غير مستجيبة، هل يجب علينا حتى أن نحاول؟" ". الخلط بينهما يؤدي إلى تصغير حجم أحدهما أو الآخر.

على بوابة Aurabase، يعيش كلاهما في نفس حزمة البرامج الوسيطة ولكن في طوابق مختلفة: يتم تشغيل تحديد معدل IP قبل المصادقة (مكافحة DoS تمامًا، ولا يتم إصدار استعلامات SQL الخاصة بالفوترة لحركة المرور غير المصادق عليها)، بينما يحمي قاطع الدائرة المكالمات الصادرة إلى الخدمات الداخلية أو موفري LLM.

#
ماذا تقول المعايير المنشورة

التكلفة تعتمد كليا على التنفيذ، وليس على المبدأ

وفقًا لأدلة النظام البيئي Tyk وAPISIX، يضيف العد الموزع المصمم جيدًا على Redis (العمليات الذرية، نص Lua، TTL الأصلي) عادةً 1-3 مللي ثانية من زمن الوصول، مع تأثير p99 أقل من مللي ثانية في أفضل الحالات المحسنة. على العكس من ذلك، توثق Zuplo أن محدد المعدل المركزي الذي تم وضعه بشكل سيئ يمكن أن يضيف عشرات المللي ثانية إلى كل طلب - وينعكس هذا التناقض مباشرة في p99 الخاص بك.

شخصيات الطرف الثالث، منهجيات مختلفة

تأتي هذه النطاقات من الأدلة الفنية العامة (النظام البيئي Tyk وZuplo وApache APISIX)، وليس من بروتوكول قياس مشترك. إنها تشير إلى ترتيب من حيث الحجم ومبدأ معماري - العد الذري والمحلي بدلاً من العد المتزامن والمركزي - وليس رقمًا يمكن إعادة إنتاجه كما هو الحال في بنية تحتية مختلفة.

#
التنفيذ المعتمد

كيف يعمل تحديد المعدل فعليًا في بوابة الهالة

تستخدم بوابة Aurabase الصندوق governor (خوارزمية دلو الرمز المميز) كمحدد احتياطي محلي، إلى جانب العد الموزع عبر Redis لمشاركة الحالة بين عدة مثيلات للبوابة. يتم العد الموزع من خلال برنامج Lua النصي الذي يتم تنفيذه ذريًا على جانب Redis (INCRBY + EXPIRE في عملية شبكة واحدة)، وليس من خلال رحلة ذهابًا وإيابًا للقراءة ثم الكتابة والتي من شأنها تقديم نافذة التزامن.

إذا أصبح Redis غير متاح، فإن البوابة تتحول تلقائيًا إلى المحدد المحلي governor، مع ذاكرة تخزين مؤقت moka (بحد أقصى 1,000,000 إدخال، وتنتهي صلاحيتها عند 300 ثانية من عدم النشاط) لتجنب إعادة إنشاء المحدد في كل طلب. يمكن ملاحظة هذا التراجع: يؤدي كل تبديل إلى زيادة عداد Prometheus المخصص، بحيث يعرف الفريق متى يصبح الحد الفعال عدد N من المثيلات × الحد مرة أخرى (خلاف ذلك، تدهور العزل الصامت بين المثيلات).

طبقتان من تحديد المعدل، وليس طبقة واحدة فقط

تميز البوابة بين تحديد معدل مكافحة حجب الخدمة بواسطة IP (قبل المصادقة) وبين تحديد المعدل بواسطة مفتاح المشروع/واجهة برمجة التطبيقات/حصة المستخدم (بعد المصادقة، مع توفر مطالبات JWT) - برنامجان وسيطان منفصلان في المكدس، ولكل منهما تفاصيله الخاصة.

#
التنفيذ المعتمد

قاطع الدائرة: ثلاث حالات، نافذة منزلقة

تتبع دائرة قاطع Aurabase (aura_core::circuit_breaker، المشتركة بين البوابة و aura-ai للرجوع بين موفري LLM) ثلاث حالات كلاسيكية - Closed، Open، HalfOpen - مع عدد حالات الفشل عبر نافذة زمنية متدرجة بدلاً من عداد لا تتم إعادة ضبطه أبدًا.

تفاصيل التنفيذ المهمة في الإنتاج: التبديل إلى HalfOpen يسمح فقط بطلب اختبار واحد في كل مرة (مكافحة القطيع الرعد) - بدون هذا الحارس، ستندفع جميع الطلبات المعلقة في وقت واحد إلى الخدمة التي أعيد فتحها للتو، مما يؤدي على الفور إلى إعادة إنشاء الفشل الذي كنا نحاول تجنبه.

#
النظام في المكدس

حيث تعمل هذه البرامج الوسيطة في البوابة

تتبع مجموعة البرامج الوسيطة لبوابة Aurabase ترتيبًا دقيقًا، تم التحقق منه في التعليمات البرمجية: معرف الطلب ← سجل الوصول ← تحديد المعدل بواسطة IP ← المصادقة ← تحديد المعدل بواسطة الممثل/الحصة ← قاطع الدائرة ← الوكيل للخدمة المستهدفة. ترفض كل مرحلة حركة المرور غير المرغوب فيها في أقرب وقت ممكن، قبل تحمل تكلفة معالجة أعلى.

اقرأ المقال كاملاً: مستوى البيانات مقابل مستوى الإدارة في بوابة Aurabase

#
المنهجية

لماذا لا يتم نشر أرقام Aurabase هنا

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

#
الأسئلة المتداولة

الأسئلة الشائعة

هل لا يزال تحديد المعدل يضيف زمن وصول ملحوظًا؟+
وهذا يعتمد بشكل كامل على التنفيذ. عادةً ما يضيف العداد الموزع المصمم جيدًا (نص Lua الذري على Redis) أقل من مللي ثانية إلى p99 وفقًا للمعايير التي نشرتها Tyk والنظام البيئي APISIX. على العكس من ذلك، يمكن أن يضيف محدد المعدل الذي تم وضعه بشكل سيء في المكدس عشرات المللي ثانية.
هل نشرت بوابة Aurabase رقم زمن الوصول لتحديد معدلها؟+
لا. تم التحقق من التنفيذ (حاكم الصندوق للرجوع المحلي، وبرنامج Lua Redis النصي للعد الموزع، وذاكرة التخزين المؤقت لـ mocha) في الكود، ولكن لم يتم نشر أي معيار لزمن الاستجابة قابل للتكرار حتى الآن على هذه البنية التحتية المحددة.
لماذا تعمل دائرة القطع على تقليل الكمون المتصور بدلاً من إضافته؟+
نظرًا لأن قاطع الدائرة المفتوحة يؤدي إلى قصر دائرة الاتصال بالخدمة المعطلة بدلاً من انتظار انتهاء المهلة الكاملة. تكلفة الاستجابة الفورية للفشل أقل في زمن الاستجابة المتصور من الطلب الذي ينتظر عدة ثوانٍ قبل الفشل.

هل أنت جاهز للنشر؟

الواجهة الخلفية الخاصة بك في خمس دقائق.

لا حاجة لبطاقة ائتمان · 500 ميجابايت مجانًا · 50000 MAU