استفاده از پلاگین ها

شما در حال مشاهده اسناد Apigee Edge هستید.
مشاهده مستندات Apigee X.

Edge Microgateway نسخه 2.4.x

حضار

این مبحث برای اپراتورهای Edge Microgateway در نظر گرفته شده است که مایل به استفاده از افزونه های موجود با microgateway هستند. همچنین پلاگین های دستگیری و سهمیه بندی را به تفصیل مورد بحث قرار می دهد (هر دو در نصب گنجانده شده اند). اگر برنامه‌نویسی هستید که می‌خواهید افزونه‌های جدیدی توسعه دهید، به توسعه افزونه‌های سفارشی مراجعه کنید.

پلاگین Edge Microgateway چیست؟

پلاگین یک ماژول Node.js است که قابلیت هایی را به Edge Microgateway اضافه می کند. ماژول‌های پلاگین از یک الگوی ثابت پیروی می‌کنند و در مکانی که به Edge Microgateway شناخته می‌شود ذخیره می‌شوند و به microgateway امکان می‌دهند آنها را به طور خودکار کشف و بارگذاری کند. Edge Microgateway شامل چندین پلاگین موجود است و شما همچنین می توانید افزونه های سفارشی ایجاد کنید، همانطور که در توسعه افزونه های سفارشی توضیح داده شده است.

پلاگین های موجود همراه با Edge Microgateway

چندین پلاگین موجود در هنگام نصب با Edge Microgateway ارائه می شوند. این شامل:

پلاگین به طور پیش فرض فعال است شرح
تجزیه و تحلیل آره داده های تحلیلی را از Edge Microgateway به Apigee Edge ارسال می کند.
oauth آره توکن OAuth و اعتبار سنجی کلید API را به Edge Microgateway اضافه می کند. به تنظیم و پیکربندی Edge Microgateway مراجعه کنید.
سهمیه، سهم خیر سهمیه درخواست ها به Edge Microgateway را اعمال می کند. از Apigee Edge برای ذخیره و مدیریت سهمیه ها استفاده می کند. به استفاده از افزونه سهمیه مراجعه کنید.
تکیه گاه سنبله خیر در برابر افزایش ترافیک و حملات DoS محافظت می کند. استفاده از پلاگین دستگیری سنبله را ببینید.
هدر-بزرگ خیر یک پروکسی نمونه اظهار نظر شده به عنوان راهنما برای کمک به توسعه دهندگان در نوشتن افزونه های سفارشی. نمونه پلاگین Edge Microgateway را ببینید.
تجمع-درخواست خیر داده‌های درخواستی را قبل از ارسال داده‌ها به کنترل‌کننده بعدی در زنجیره افزونه در یک شی جمع‌آوری می‌کند. مفید برای نوشتن افزونه های تبدیل که نیاز به کار بر روی یک شیء محتوای درخواستی انباشته دارند.
تجمع-پاسخ خیر داده‌های پاسخ را قبل از ارسال داده‌ها به کنترل‌کننده بعدی در زنجیره پلاگین در یک شی واحد جمع‌آوری می‌کند. مفید برای نوشتن افزونه های تبدیل که نیاز به کار بر روی یک شیء محتوای پاسخ انباشته دارند.
تبدیل بزرگ خیر داده های درخواست یا پاسخ را تغییر می دهد. این پلاگین نشان دهنده بهترین عملکرد یک پلاگین تبدیل است. پلاگین نمونه یک تبدیل بی اهمیت را انجام می دهد (داده های درخواست یا پاسخ را به حروف بزرگ تبدیل می کند). با این حال، به راحتی می توان آن را برای انجام انواع دیگر تبدیل ها، مانند XML به JSON، سازگار کرد.
json2xm l خیر داده‌های درخواست یا پاسخ را بر اساس سرصفحه‌های پذیرش یا نوع محتوا تغییر می‌دهد. برای جزئیات، به مستندات افزونه در GitHub مراجعه کنید .
سهمیه حافظه خیر سهمیه درخواست ها به Edge Microgateway را اعمال می کند. سهمیه ها را در حافظه محلی ذخیره و مدیریت می کند.
بررسی سلامت خیر اطلاعات مربوط به فرآیند Edge Microgateway -- مصرف حافظه، استفاده از cpu و غیره را برمی گرداند. برای استفاده از افزونه، URL /healthcheck را در نمونه Edge Microgateway خود تماس بگیرید. این افزونه قصد دارد نمونه ای باشد که می توانید از آن برای پیاده سازی افزونه بررسی سلامت خود استفاده کنید.

پلاگین های موجود را کجا پیدا کنیم

افزونه‌های موجود همراه با Edge Microgateway در اینجا قرار دارند، جایی که [prefix] دایرکتوری پیشوند npm است. Edge Microgateway کجا نصب شده است را ببینید.

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

افزودن و پیکربندی افزونه ها

برای افزودن و پیکربندی افزونه ها از این الگو پیروی کنید:

  1. Stop 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

با استفاده از پلاگین spike arrest

این بخش در مورد پلاگین دستگیری اسپایک بحث می کند.

درباره دستگیری سنبله

Spike Arrest در برابر افزایش ترافیک محافظت می کند. تعداد درخواست های پردازش شده توسط یک نمونه 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 : هر چند وقت یکبار پنجره اجرای دستگیری اسپایک بازنشانی می شود. مقادیر معتبر ثانیه یا دقیقه هستند.
  • allow : حداکثر تعداد درخواست هایی که در طول زمان Unit مجاز است.
  • bufferSize : (اختیاری، پیش فرض = 0) اگر bufferSize > 0 باشد، spike arrest این تعداد درخواست را در یک بافر ذخیره می کند. به محض اینکه "پنجره" اجرای بعدی رخ داد، ابتدا درخواست های بافر شده پردازش می شوند. همچنین به افزودن بافر مراجعه کنید.

دستگیری سنبله چگونه کار می کند؟

به دستگیری سنبله به عنوان راهی برای محافظت کلی در برابر افزایش ترافیک فکر کنید نه به عنوان راهی برای محدود کردن ترافیک به تعداد معینی از درخواست‌ها. APIها و باطن شما می توانند حجم معینی از ترافیک را مدیریت کنند و خط مشی دستگیری افزایش به شما کمک می کند تا ترافیک را به میزان کلی که می خواهید روان کنید.

رفتار توقف اسپایک در زمان اجرا با آنچه انتظار دارید از مقادیر واقعی در دقیقه یا در ثانیه که وارد می‌کنید، متفاوت است.

به عنوان مثال، فرض کنید نرخ 30 درخواست در دقیقه را مشخص کرده اید، مانند این:

spikearrest:
   timeUnit: minute
   allow: 30

در آزمایش، ممکن است فکر کنید که می توانید 30 درخواست را در 1 ثانیه ارسال کنید، البته تا زمانی که در عرض یک دقیقه ارسال شوند. اما سیاست اینگونه نیست که تنظیم را اجرا کند. اگر در مورد آن فکر کنید، 30 درخواست در یک بازه زمانی 1 ثانیه‌ای می‌تواند در برخی از محیط‌ها یک افزایش کوچک در نظر گرفته شود.

پس در واقع چه اتفاقی می افتد؟ برای جلوگیری از رفتار شبیه به سنبله، با تقسیم تنظیمات شما به فواصل کوچکتر، به شرح زیر، ترافیک مجاز را هموار می کند:

نرخ در دقیقه

نرخ‌های هر دقیقه به درخواست‌ها به فواصل مجاز ثانیه تبدیل می‌شوند. به عنوان مثال، 30 درخواست در دقیقه به این صورت صاف می شود:

60 ثانیه (1 دقیقه) / 30 = فواصل 2 ثانیه ای، یا حدود 1 درخواست در هر 2 ثانیه مجاز است. درخواست دوم در عرض 2 ثانیه ناموفق خواهد بود. همچنین، درخواست 31 در عرض یک دقیقه ناموفق خواهد بود.

نرخ های هر ثانیه

نرخ‌های هر ثانیه به درخواست‌های مجاز در فواصل میلی‌ثانیه تبدیل می‌شوند. به عنوان مثال، 10 درخواست در ثانیه به این صورت صاف می شود:

1000 میلی‌ثانیه (1 ثانیه) / 10 = فواصل 100 میلی‌ثانیه‌ای، یا حدود 1 درخواست در هر 100 میلی‌ثانیه مجاز است. درخواست دوم در 100 میلی ثانیه ناموفق خواهد بود. همچنین، یازدهمین درخواست در عرض یک ثانیه ناموفق خواهد بود.

وقتی از حد فراتر رفت

اگر تعداد درخواست‌ها در بازه زمانی مشخص شده از حد مجاز بیشتر شود، هشدار spike این پیام خطا را با وضعیت HTTP 503 برمی‌گرداند:

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

افزودن بافر

شما می توانید یک بافر به خط مشی اضافه کنید. فرض کنید بافر را روی 10 تنظیم کرده اید. خواهید دید که API بلافاصله زمانی که از حد توقف اسپک فراتر رفتید، خطایی را باز نمی گردانید. در عوض، درخواست ها بافر می شوند (تا تعداد مشخص شده)، و درخواست های بافر شده به محض در دسترس بودن پنجره اجرای مناسب بعدی پردازش می شوند. bufferSize پیش فرض 0 است.

با استفاده از افزونه سهمیه

این بخش در مورد پلاگین سهمیه بحث می کند.

درباره افزونه سهمیه

سهمیه تعداد پیام‌های درخواستی را مشخص می‌کند که یک برنامه مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند. وقتی یک برنامه به حد نصاب خود می رسد، تماس های بعدی API رد می شوند. همچنین ببینید تفاوت بین دستگیری سنبله و سهمیه چیست ؟

افزودن پلاگین سهمیه

برای انجام مراحل اولیه برای هر افزونه، به افزودن و پیکربندی افزونه ها مراجعه کنید.

پیکربندی محصول در Apigee Edge

شما سهمیه ها را در رابط کاربری Apigee Edge پیکربندی می کنید، جایی که محصولات API را پیکربندی می کنید. شما باید بدانید که کدام محصول حاوی پروکسی microgateway-aware است که می‌خواهید آن را با یک سهمیه محدود کنید. این محصول باید به یک برنامه توسعه دهنده اضافه شود. وقتی تماس‌های API برقرار می‌کنید که با استفاده از کلیدهای برنامه توسعه‌دهنده احراز هویت می‌شوند، این سهمیه برای آن تماس‌های API اعمال می‌شود.

  1. به حساب سازمانی Apigee Edge خود وارد شوید.
  2. در رابط کاربری Edge، محصول مرتبط با پروکسی microgateway-aware را که می‌خواهید سهمیه را برای آن اعمال کنید، باز کنید.
    1. در UI، محصولات را از منوی Publish انتخاب کنید.
    2. محصول حاوی API را که می‌خواهید سهمیه را برای آن اعمال کنید، باز کنید.
    3. روی ویرایش کلیک کنید.
    4. در قسمت Quota فاصله سهمیه را مشخص کنید. مثلاً 100 درخواست در هر دقیقه. یا 50000 درخواست هر 2 ساعت.

  1. روی ذخیره کلیک کنید.
  2. مطمئن شوید که محصول به یک برنامه توسعه دهنده اضافه شده است. برای برقراری تماس‌های API تأیید شده، به کلیدهای این برنامه نیاز دارید.

پیکربندی نمونه برای سهمیه

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"}

تفاوت بین دستگیری سنبله و سهمیه چیست؟

مهم است که ابزار مناسب برای کار مورد نظر را انتخاب کنید. خط‌مشی‌های سهمیه تعداد پیام‌های درخواستی را که یک برنامه مشتری مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند، پیکربندی می‌کند. خط مشی سهمیه محدودیت‌های مصرف را در برنامه‌های مشتری با حفظ یک شمارنده توزیع‌شده که درخواست‌های دریافتی را محاسبه می‌کند، اعمال می‌کند.

به جای مدیریت ترافیک عملیاتی، از یک خط مشی سهمیه برای اجرای قراردادهای تجاری یا SLA با توسعه دهندگان و شرکا استفاده کنید. به عنوان مثال، یک سهمیه ممکن است برای محدود کردن ترافیک برای یک سرویس رایگان استفاده شود، در حالی که امکان دسترسی کامل را برای مشتریان پولی فراهم می کند. همچنین استفاده از افزونه سهمیه را ببینید.

برای محافظت در برابر جهش ناگهانی در ترافیک API از توقف اسپیک استفاده کنید. معمولاً برای جلوگیری از حملات احتمالی DDoS یا سایر حملات مخرب از Spike arrest استفاده می شود.