استخدام المكوّنات الإضافية

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X.
info

الإصدار 2.5.x من Edge Microgateway

الجمهور

هذا الموضوع مخصّص لمشغّلي Edge Microgateway الذين يريدون استخدام المكوّنات الإضافية الحالية المثبّتة مع البوابة المصغّرة. ويناقش أيضًا المكوّنين الإضافيين "منع الارتفاع المفاجئ في عدد الطلبات" و"الحصة" بالتفصيل (كلاهما مضمّن مع عملية التثبيت). إذا كنت مطوّرًا تريد تطوير مكوّنات إضافية جديدة ، يُرجى الاطّلاع على مقالة تطوير مكوّنات إضافية مخصّصة.

ما هو المكوّن الإضافي في Edge Microgateway؟

المكوّن الإضافي هو وحدة Node.js تضيف وظائف إلى Edge Microgateway. تتّبع وحدات المكوّنات الإضافية نمطًا ثابتًا ويتم تخزينها في موقع معروف لدى Edge Microgateway، ما يتيح لل بوابة المصغّرة اكتشافها وتحميلها تلقائيًا. يتضمّن Edge Microgateway عدة مكوّنات إضافية حالية ، ويمكنك أيضًا إنشاء مكوّنات إضافية مخصّصة، كما هو موضّح في مقالة تطوير مكوّنات إضافية مخصّصة.

المكوّنات الإضافية الحالية المضمّنة مع Edge Microgateway

تتوفّر عدة مكوّنات إضافية حالية مع Edge Microgateway عند التثبيت. وتشمل ما يلي:

المكوّن الإضافي مفعَّل تلقائيًا الوصف
إحصاءات نعم يرسل بيانات الإحصاءات من Edge Microgateway إلى Apigee Edge.
OAuth نعم يضيف ميزة التحقّق من صحة رمز OAuth المميّز ومفتاح واجهة برمجة التطبيقات إلى Edge Microgateway. راجِع مقالة إعداد Edge Microgateway وضبطه.
الحصة لا يفرض حصة على الطلبات المُرسَلة إلى Edge Microgateway. يستخدم Apigee Edge لتخزين الحصص وإدارتها راجِع مقالة استخدام المكوّن الإضافي "الحصة".
منع الارتفاع المفاجئ في عدد الطلبات لا يحمي من الارتفاع المفاجئ في عدد الزيارات وهجمات الحرمان من الخدمات. راجِع مقالة استخدام المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات".
header-uppercase لا نموذج خادم وكيل معلَّق يهدف إلى مساعدة المطوّرين في كتابة مكوّنات إضافية مخصّصة. راجِع المكوّن الإضافي النموذجي في Edge Microgateway.
accumulate-request لا يجمع بيانات الطلب في عنصر واحد قبل تمرير البيانات إلى المعالج التالي في سلسلة المكوّنات الإضافية. مفيد لكتابة مكوّنات إضافية للتحويل تحتاج إلى العمل على عنصر واحد مجمّع لمحتوى الطلب.
accumulate-response لا يجمع بيانات الاستجابة في عنصر واحد قبل تمرير البيانات إلى المعالج التالي في سلسلة المكوّنات الإضافية. مفيد لكتابة مكوّنات إضافية للتحويل تحتاج إلى العمل على عنصر واحد مجمّع لمحتوى الاستجابة.
transform-uppercase لا يحوّل بيانات الطلب أو الاستجابة. يمثّل هذا المكوّن الإضافي أفضل ممارسة لتنفيذ مكوّن إضافي للتحويل. ينفّذ المكوّن الإضافي النموذجي عملية تحويل بسيطة (يحوّل بيانات الطلب أو الاستجابة إلى أحرف كبيرة)، ولكن يمكن تكييفه بسهولة لتنفيذ أنواع أخرى من عمليات التحويل، مثل تحويل XML إلى JSON.
json2xml لا يحوّل بيانات الطلب أو الاستجابة استنادًا إلى عنوانَي accept أو content-type. لمزيد من التفاصيل، يُرجى الرجوع إلى مستندات المكوّن الإضافي على GitHub.
quota-memory لا يفرض حصة على الطلبات المُرسَلة إلى Edge Microgateway. يخزّن الحصص ويديرها في الذاكرة المحلية.
healthcheck لا يعرض معلومات عن عملية Edge Microgateway، مثل استخدام الذاكرة واستخدام وحدة المعالجة المركزية وما إلى ذلك. لاستخدام المكوّن الإضافي، استدعِ عنوان URL /healthcheck على نسخة Edge Microgateway. يهدف هذا المكوّن الإضافي إلى أن يكون مثالاً يمكنك استخدامه لـ تنفيذ المكوّن الإضافي الخاص بك للتحقّق من الحالة.

مكان العثور على المكوّنات الإضافية الحالية

تتوفّر المكوّنات الإضافية الحالية المضمّنة مع Edge Microgateway هنا، حيث [prefix] هو دليل البادئة npm. راجِع مكان تثبيت Edge Microgateway إذا لم تتمكّن من العثور على هذا الدليل.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

إضافة المكوّنات الإضافية وضبطها

اتّبِع هذا النمط لإضافة المكوّنات الإضافية وضبطها:

  1. أوقِف Edge Microgateway.
  2. افتح ملف إعداد Edge Microgateway. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة إجراء تغييرات في الإعدادات للخيارات.
  3. أضِف المكوّن الإضافي إلى العنصر plugins:sequence في ملف الإعداد، على النحو التالي. يتم تنفيذ المكوّنات الإضافية بالترتيب الذي تظهر به في هذه القائمة.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. اضبط المكوّن الإضافي. تتضمّن بعض المكوّنات الإضافية مَعلمات اختيارية يمكنك ضبطها في الـ ملف الإعداد. على سبيل المثال، يمكنك إضافة المقطع التالي لضبط المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" راجِع مقالة استخدام المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" لمزيد من المعلومات.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. احفظ الملف.
  2. أعِد تشغيل Edge Microgateway أو أعِد تحميله، استنادًا إلى ملف الإعداد الذي عدّلته.

الإعداد الخاص بالمكوّن الإضافي

يمكنك إلغاء مَعلمات المكوّن الإضافي المحدّدة في ملف الإعداد من خلال إنشاء إعداد خاص بالمكوّن الإضافي في هذا الدليل:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

حيث [prefix] هو دليل بادئة npm. راجِع مكان تثبيت Edge Microgateway إذا لم تتمكّن من العثور على هذا الدليل.

plugins/<plugin_name>/config/default.yaml. على سبيل المثال، يمكنك وضع هذا البلوك في plugins/spikearrest/config/default.yaml، وسيؤدي ذلك إلى إلغاء أي إعدادات ضبط أخرى.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

استخدام المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات"

يحمي المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" من الارتفاع المفاجئ في عدد الزيارات. ويحدّ من عدد الطلبات التي تعالجها نسخة Edge Microgateway.

إضافة المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات"

راجِع مقالة إضافة المكوّنات الإضافية وضبطها.

نموذج إعداد لـ منع الارتفاع المفاجئ في عدد الطلبات

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

خيارات إعداد منع الارتفاع المفاجئ في عدد الطلبات

  • timeUnit: عدد المرّات التي تتم فيها إعادة ضبط نافذة تنفيذ "منع الارتفاع المفاجئ في عدد الطلبات". القيمتان الصالحتان هما second أو minute.
  • allow: الحد الأقصى لعدد الطلبات المسموح بها خلال timeUnit. راجِع أيضًا مقالة إذا كنت تُشغّل عمليات متعدّدة في Edge Micro عمليات.
  • bufferSize: (اختياري، القيمة التلقائية = 0) إذا كانت bufferSize > 0، يخزّن المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" هذا العدد من الطلبات في مخزن مؤقت. وبمجرد ظهور "النافذة" التالية للتنفيذ، ستتم معالجة الطلبات المخزّنة مؤقتًا أولاً. راجِع أيضًا مقالة إضافة مخزن مؤقت.

كيف يعمل المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات"؟

فكِّر في المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" على أنّه طريقة للحماية بشكل عام من الارتفاع المفاجئ في عدد الزيارات بدلاً من أن يكون طريقة للحدّ من عدد الزيارات إلى عدد معيّن من الطلبات. يمكن لواجهات برمجة التطبيقات والخادم الخلفي معالجة قدر معيّن من الزيارات، وتساعدك سياسة "منع الارتفاع المفاجئ في عدد الطلبات" في تنظيم الزيارات لتصل إلى الكميات العامة التي تريدها.

يختلف سلوك "منع الارتفاع المفاجئ في عدد الطلبات" في وقت التشغيل عن ما قد تتوقّعه من القيم الحرفية التي تُدخلها لكل دقيقة أو لكل ثانية.

على سبيل المثال، لنفترض أنّك تحدّد معدّل 30 طلبًا في الدقيقة، على النحو التالي:

spikearrest:
   timeUnit: minute
   allow: 30

أثناء الاختبار، قد تعتقد أنّه يمكنك إرسال 30 طلبًا في ثانية واحدة، طالما أنّها تصل خلال دقيقة واحدة. ولكن هذه ليست الطريقة التي تفرض بها السياسة الإعداد. إذا فكّرت في الأمر، يمكن اعتبار 30 طلبًا خلال فترة ثانية واحدة ارتفاعًا مفاجئًا صغيرًا في عدد الطلبات في بعض البيئات.

ما الذي يحدث فعلاً إذًا؟ لمنع السلوك المشابه للارتفاع المفاجئ في عدد الطلبات، ينظّم المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" الزيارات المسموح بها من خلال تقسيم إعداداتك إلى فواصل زمنية أصغر، على النحو التالي:

المعدّلات لكل دقيقة

يتم تنظيم المعدّلات لكل دقيقة في فواصل زمنية للطلبات المسموح بها بالثواني. على سبيل المثال، يتم تنظيم 30 طلبًا في الدقيقة على النحو التالي:

60 ثانية (دقيقة واحدة) / 30 = فواصل زمنية مدتها ثانيتان، أو طلب واحد مسموح به كل ثانيتين تقريبًا. سيفشل الطلب الثاني خلال ثانيتين. أيضًا، سيفشل الطلب الحادي والثلاثون خلال دقيقة واحدة.

المعدّلات لكل ثانية

يتم تنظيم المعدّلات لكل ثانية في فواصل زمنية للطلبات المسموح بها بالملّي ثانية. على سبيل المثال، يتم تنظيم 10 طلبات في الثانية على النحو التالي:

1000 ملّي ثانية (ثانية واحدة) / 10 = فواصل زمنية مدتها 100 ملّي ثانية، أو طلب واحد مسموح به كل 100 ملّي ثانية تقريبًا . سيفشل الطلب الثاني خلال 100 ملّي ثانية. أيضًا، سيفشل الطلب الحادي عشر خلال ثانية واحدة.

عند تجاوز الحدّ

إذا تجاوز عدد الطلبات الحدّ خلال الفترة الزمنية المحدّدة، يعرض المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" رسالة الخطأ هذه مع حالة HTTP 503:

{"error": "spike arrest policy violated"}

إضافة مخزن مؤقت

لديك خيار إضافة مخزن مؤقت إلى السياسة. لنفترض أنّك ضبطت المخزن المؤقت على 10. ستلاحظ أنّ واجهة برمجة التطبيقات لا تعرض خطأً على الفور عند تجاوز الحدّ الأقصى لسياسة "منع الارتفاع المفاجئ في عدد الطلبات" . بدلاً من ذلك، يتم تخزين الطلبات مؤقتًا (بما يصل إلى العدد المحدّد)، وتتم معالجة الطلبات المخزّنة مؤقتًا بمجرد توفّر نافذة التنفيذ المناسبة التالية. القيمة التلقائية لـ bufferSize هي 0.

إذا كنت تُشغّل عمليات متعدّدة في Edge Micro

يعتمد عدد الطلبات المسموح بها على عدد عمليات Edge Micro العاملة التي يتم تشغيلها. يحسب المكوّن الإضافي "منع الارتفاع المفاجئ في عدد الطلبات" العدد المسموح به من الطلبات لكل عملية عاملة. تلقائيًا، يساوي عدد عمليات Edge Micro عدد وحدات المعالجة المركزية على الجهاز الذي تم تثبيت Edge Micro عليه. ومع ذلك، يمكنك ضبط عدد العمليات العاملة عند بدء Edge Micro باستخدام الخيار --processes في الأمر start على سبيل المثال، إذا كنت تريد أن يتم تفعيل "منع الارتفاع المفاجئ في عدد الطلبات" عند 100 طلب خلال فترة زمنية معيّنة، وإذا بدأت Edge Microgateway باستخدام الخيار --processes 4، اضبط allow: 25 في إعدادات "منع الارتفاع المفاجئ في عدد الطلبات". باختصار، القاعدة الأساسية هي ضبط مَعلمة الإعداد allow config على القيمة "عدد الطلبات المطلوب منع الارتفاع المفاجئ فيها / عدد العمليات".

استخدام المكوّن الإضافي "الحصة"

تحدّد الحصة عدد رسائل الطلبات التي يُسمح لتطبيق بإرسالها إلى واجهة برمجة تطبيقات خلال ساعة أو يوم أو أسبوع أو شهر. عندما يصل التطبيق إلى الحدّ الأقصى للحصة، يتم رفض طلبات واجهة برمجة التطبيقات اللاحقة. راجِع أيضًا مقالة ما الفرق بين منع الارتفاع المفاجئ في عدد الطلبات والحصة؟.

إضافة المكوّن الإضافي "الحصة"

راجِع مقالة إضافة المكوّنات الإضافية وضبطها.

إعدادات المنتج في Apigee Edge

يمكنك ضبط الحصص في واجهة مستخدم Apigee Edge حيث يمكنك ضبط منتجات واجهة برمجة التطبيقات. عليك معرفة المنتج الذي يحتوي على الخادم الوكيل المتوافق مع البوابة المصغّرة الذي تريد الحدّ منه باستخدام حصة. يجب إضافة هذا المنتج إلى تطبيق مطوّر برامج. عند إجراء طلبات واجهة برمجة التطبيقات التي تتم مصادقتها باستخدام المفاتيح في تطبيق المطوّر، سيتم تطبيق الحصة على طلبات واجهة برمجة التطبيقات هذه.

  1. سجِّل الدخول إلى حساب مؤسستك على Apigee Edge.
  2. في واجهة مستخدم Edge، افتح المنتج المرتبط بالخادم الوكيل المتوافق مع البوابة المصغّرة الذي تريد تطبيق الحصة عليه.
    1. في واجهة المستخدم، انقر على المنتجات من قائمة "النشر".
    2. افتح المنتج الذي يحتوي على واجهة برمجة التطبيقات التي تريد تطبيق الحصة عليها.
    3. انقر على تعديل.
    4. في حقل "الحصة"، حدِّد فترة الحصة. على سبيل المثال، 100 طلب كل دقيقة واحدة. أو 50000 طلب كل ساعتَين.

  1. انقر على حفظ.
  2. تأكَّد من إضافة المنتج إلى تطبيق مطوّر برامج. ستحتاج إلى المفاتيح من هذا التطبيق لإجراء طلبات واجهة برمجة التطبيقات المصادَق عليها.

نموذج إعداد للحصة

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

خيارات إعداد الحصة

لا تتوفّر خيارات إعداد إضافية للمكوّن الإضافي "الحصة".

اختبار المكوّن الإضافي "الحصة"

عند تجاوز الحصة، يتم عرض حالة HTTP 403 للعميل، بالإضافة إلى الرسالة التالية:

{"error": "exceeded quota"}

ما الفرق بين "منع الارتفاع المفاجئ في عدد الطلبات" و"الحصة"؟

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

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

استخدِم سياسة "منع الارتفاع المفاجئ في عدد الطلبات" للحماية من الارتفاع المفاجئ في عدد الزيارات إلى واجهة برمجة التطبيقات. عادةً، يتم استخدام سياسة "منع الارتفاع المفاجئ في عدد الطلبات" لمنع هجمات DDoS المحتمَلة أو غيرها من الهجمات الضارة.