شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
Edge Microgateway نسخه ۳.۱.۵ و بالاتر
مخاطب
این مبحث برای اپراتورهای Edge Microgateway در نظر گرفته شده است که مایل به استفاده از افزونههای موجود نصب شده با microgateway هستند. همچنین در مورد افزونههای spike arrest و quota (هر دو در نصب گنجانده شدهاند) به تفصیل بحث میشود. اگر شما توسعهدهندهای هستید که میخواهید افزونههای جدیدی توسعه دهید، به بخش توسعه افزونههای سفارشی مراجعه کنید.
افزونه Edge Microgateway چیست؟
یک افزونه، یک ماژول Node.js است که قابلیتی را به Edge Microgateway اضافه میکند. ماژولهای افزونه از یک الگوی ثابت پیروی میکنند و در مکانی که برای Edge Microgateway شناخته شده است، ذخیره میشوند و به این ترتیب، Microgateway میتواند آنها را به طور خودکار کشف و بارگذاری کند. Edge Microgateway شامل چندین افزونه موجود است و شما همچنین میتوانید افزونههای سفارشی ایجاد کنید، همانطور که در بخش «توسعه افزونههای سفارشی» توضیح داده شده است.
افزونههای موجود همراه با Edge Microgateway
چندین افزونه موجود در هنگام نصب Edge Microgateway ارائه میشوند. این افزونهها عبارتند از:
| افزونه | به طور پیشفرض فعال است | توضیحات |
|---|---|---|
| تحلیلها | بله | دادههای تحلیلی را از Edge Microgateway به Apigee Edge ارسال میکند. |
| اوث | بله | اعتبارسنجی توکن OAuth و کلید API را به Edge Microgateway اضافه میکند. به بخش راهاندازی و پیکربندی Edge Microgateway مراجعه کنید. |
| سهمیه | خیر | سهمیهبندی را برای درخواستهای ارسالی به Edge Microgateway اعمال میکند. از Apigee Edge برای ذخیره و مدیریت سهمیهها استفاده میکند. به بخش استفاده از افزونه سهمیهبندی مراجعه کنید. |
| سنبله گیر | خیر | در برابر افزایش ناگهانی ترافیک و حملات DoS محافظت میکند. به بخش «استفاده از افزونهی جلوگیری از افزایش ناگهانی ترافیک» مراجعه کنید. |
| سربرگ با حروف بزرگ | خیر | یک پروکسی نمونه کامنتگذاری شده که به عنوان راهنما برای کمک به توسعهدهندگان در نوشتن افزونههای سفارشی در نظر گرفته شده است. به افزونه نمونه Edge Microgateway مراجعه کنید. |
| درخواست انباشت | خیر | دادههای درخواست را قبل از ارسال به کنترلکنندهی بعدی در زنجیرهی افزونه، در یک شیء واحد جمعآوری میکند. برای نوشتن افزونههای تبدیل که نیاز به کار بر روی یک شیء محتوای درخواست واحد و انباشته دارند، مفید است. |
| تجمع-پاسخ | خیر | دادههای پاسخ را قبل از ارسال به کنترلکنندهی بعدی در زنجیرهی افزونه، در یک شیء واحد جمعآوری میکند. برای نوشتن افزونههای تبدیل که نیاز به کار بر روی یک شیء محتوای پاسخ واحد و انباشته دارند، مفید است. |
| تبدیل-حروف بزرگ | خیر | دادههای درخواست یا پاسخ را تبدیل میکند. این افزونه، بهترین پیادهسازی یک افزونه تبدیل را نشان میدهد. افزونه مثال، یک تبدیل ساده انجام میدهد (دادههای درخواست یا پاسخ را به حروف بزرگ تبدیل میکند)؛ با این حال، میتوان آن را به راحتی برای انجام انواع دیگر تبدیلها، مانند XML به JSON، تطبیق داد. |
| json2xm l | خیر | دادههای درخواست یا پاسخ را بر اساس سرآیندهای پذیرش یا نوع محتوا تبدیل میکند. برای جزئیات بیشتر، به مستندات افزونه در GitHub مراجعه کنید . |
| سهمیه حافظه | خیر | سهمیهبندی درخواستها به Edge Microgateway را اعمال میکند. سهمیهها را در حافظه محلی ذخیره و مدیریت میکند. |
| بررسی سلامت | خیر | اطلاعاتی در مورد فرآیند Edge Microgateway برمیگرداند -- میزان استفاده از حافظه، میزان استفاده از پردازنده و غیره. برای استفاده از افزونه، آدرس اینترنتی /healthcheck را در نمونه Edge Microgateway خود فراخوانی کنید. این افزونه به عنوان نمونهای در نظر گرفته شده است که میتوانید از آن برای پیادهسازی افزونه بررسی سلامت خود استفاده کنید. |
افزونههای موجود را از کجا پیدا کنیم
افزونههای موجود همراه با Edge Microgateway در اینجا قرار دارند، که [prefix] دایرکتوری پیشوند npm است. اگر نمیتوانید این دایرکتوری را پیدا کنید ، به «محل نصب Edge Microgateway» مراجعه کنید.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
افزودن و پیکربندی افزونهها
برای افزودن و پیکربندی افزونهها، از این الگو پیروی کنید:
- میکروگیتوی اج را متوقف کنید.
- یک فایل پیکربندی Edge Microgateway را باز کنید. برای جزئیات بیشتر، به «ایجاد تغییرات پیکربندی» برای گزینهها مراجعه کنید.
- افزونه را به عنصر
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
- افزونه را پیکربندی کنید. برخی از افزونهها پارامترهای اختیاری دارند که میتوانید آنها را در فایل پیکربندی پیکربندی کنید. برای مثال، میتوانید عبارت زیر را برای پیکربندی افزونهی spike arrest اضافه کنید. برای اطلاعات بیشتر به بخش «استفاده از افزونهی spike arrest» مراجعه کنید.
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
- فایل را ذخیره کنید.
- بسته به اینکه کدام فایل پیکربندی را ویرایش کردهاید، 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
گزینههای پیکربندی برای جلوگیری از اسپایک
- واحد زمان : پنجره اجرای توقف اسپایک هر چند وقت یکبار ریست میشود. مقادیر معتبر ثانیه یا دقیقه هستند.
- allow : حداکثر تعداد درخواستهایی که در طول timeUnit مجاز هستند. همچنین ببینید اگر چندین فرآیند Edge Micro را اجرا میکنید .
- bufferSize : (اختیاری، پیشفرض = 0) اگر bufferSize > 0 باشد، spike arrest این تعداد درخواست را در یک بافر ذخیره میکند. به محض اینکه "پنجره" اجرای بعدی رخ دهد، ابتدا درخواستهای بافر شده پردازش میشوند. همچنین به افزودن یک بافر مراجعه کنید.
مهار اسپایک چگونه کار میکند؟
به جای اینکه به عنوان راهی برای محدود کردن ترافیک به تعداد مشخصی از درخواستها، به مهار اسپایک فکر کنید، آن را به عنوان راهی برای محافظت کلی در برابر اسپایکهای ترافیکی در نظر بگیرید. APIها و backend شما میتوانند مقدار مشخصی از ترافیک را مدیریت کنند و سیاست مهار اسپایک به شما کمک میکند تا ترافیک را به مقادیر کلی مورد نظر خود هدایت کنید.
رفتار توقف اسپایک در زمان اجرا با آنچه که ممکن است انتظار داشته باشید از مقادیر وارد شده بر حسب دقیقه یا ثانیه ببینید، متفاوت است.
برای مثال، فرض کنید نرخ ۳۰ درخواست در دقیقه را به صورت زیر تعیین میکنید:
spikearrest: timeUnit: minute allow: 30
در آزمایش، ممکن است فکر کنید که میتوانید 30 درخواست را در 1 ثانیه ارسال کنید، البته تا زمانی که ظرف یک دقیقه برسند. اما این نحوهی اعمال تنظیمات توسط این سیاست نیست. اگر در مورد آن فکر کنید، 30 درخواست در یک دوره 1 ثانیهای میتواند در برخی محیطها یک جهش کوچک در نظر گرفته شود.
پس واقعاً چه اتفاقی میافتد؟ برای جلوگیری از رفتار شبیه به spike، سیستم spike arrest با تقسیم تنظیمات شما به فواصل کوچکتر، ترافیک مجاز را به صورت زیر روان میکند:
نرخهای دقیقهای
نرخهای هر دقیقه به درخواستهای مجاز بر حسب ثانیه تبدیل میشوند. برای مثال، 30 درخواست در دقیقه به صورت زیر تبدیل میشود:
۶۰ ثانیه (۱ دقیقه) / ۳۰ = فواصل ۲ ثانیهای، یا حدود ۱ درخواست مجاز در هر ۲ ثانیه. درخواست دوم در عرض ۲ ثانیه با شکست مواجه خواهد شد. همچنین، درخواست سی و یکم در عرض یک دقیقه با شکست مواجه خواهد شد.
نرخهای ثانیهای
نرخهای بر ثانیه به درخواستهای مجاز در فواصل میلیثانیه تبدیل میشوند. برای مثال، 10 درخواست در ثانیه به صورت زیر تبدیل میشود:
۱۰۰۰ میلیثانیه (۱ ثانیه) / ۱۰ = فواصل ۱۰۰ میلیثانیهای، یا حدود ۱ درخواست مجاز در هر ۱۰۰ میلیثانیه. درخواست دوم در فاصله ۱۰۰ میلیثانیه با شکست مواجه خواهد شد. همچنین، درخواست یازدهم در عرض یک ثانیه با شکست مواجه خواهد شد.
وقتی از حد مجاز فراتر میرود
اگر تعداد درخواستها در بازه زمانی مشخص شده از حد مجاز فراتر رود، spike arrest این پیام خطا را با وضعیت HTTP 503 برمیگرداند:
{"error": "spike arrest policy violated"}اضافه کردن بافر
شما میتوانید یک بافر به این سیاست اضافه کنید. فرض کنید بافر را روی ۱۰ تنظیم کردهاید. خواهید دید که API وقتی از حد مجاز توقف spike تجاوز میکنید، بلافاصله خطایی برنمیگرداند. در عوض، درخواستها بافر میشوند (تا تعداد مشخص شده) و درخواستهای بافر شده به محض اینکه پنجره اجرای مناسب بعدی در دسترس باشد، پردازش میشوند. مقدار پیشفرض bufferSize برابر با ۰ است.
اگر چندین فرآیند Edge Micro را اجرا میکنید
تعداد درخواستهای مجاز به تعداد فرآیندهای کارگر Edge Micro که در حال اجرا هستند بستگی دارد. Spike arrest تعداد مجاز درخواستها به ازای هر فرآیند کارگر را محاسبه میکند. به طور پیشفرض، تعداد فرآیندهای Edge Micro برابر با تعداد CPUهای روی دستگاهی است که Edge Micro در آن نصب شده است. با این حال، میتوانید تعداد فرآیندهای کارگر را هنگام شروع Edge Micro با استفاده از گزینه --processes در دستور start پیکربندی کنید. به عنوان مثال، اگر میخواهید spike arrest در 100 درخواست در یک دوره زمانی معین فعال شود، و اگر Edge Microgateway را با گزینه --processes 4 شروع میکنید، allow: 25 در پیکربندی spike arrest تنظیم کنید. به طور خلاصه، قاعده کلی این است که پارامتر allow config را روی مقدار "تعداد مورد نظر spike arrest / تعداد فرآیندها" تنظیم کنید.
استفاده از افزونه سهمیهبندی
سهمیه تعداد پیامهای درخواستی را که یک برنامه مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند، مشخص میکند. هنگامی که یک برنامه به حد سهمیه خود میرسد، فراخوانیهای API بعدی رد میشوند. همچنین ببینید تفاوت بین spike arrest و سهمیه چیست ؟
اضافه کردن افزونه سهمیهبندی
به افزودن و پیکربندی افزونهها مراجعه کنید.
پیکربندی محصول در Apigee Edge
شما سهمیهها را در رابط کاربری Apigee Edge پیکربندی میکنید، جایی که محصولات API را پیکربندی میکنید. باید بدانید کدام محصول حاوی پروکسی microgateway-aware است که میخواهید با سهمیه محدود کنید. این محصول باید به یک برنامه توسعهدهنده اضافه شود. وقتی فراخوانیهای API را که با استفاده از کلیدها در برنامه توسعهدهنده تأیید میشوند، انجام میدهید، سهمیه به آن فراخوانیهای API اعمال میشود.
- وارد حساب کاربری خود در سازمان Apigee Edge شوید.
- در رابط کاربری Edge، محصول مرتبط با پروکسی microgateway-aware که میخواهید سهمیه را به آن اعمال کنید، باز کنید.
- در رابط کاربری، از منوی انتشار، گزینه محصولات (Products) را انتخاب کنید.
- محصولی که حاوی API است و میخواهید سهمیه را به آن اعمال کنید، باز کنید.
- روی ویرایش کلیک کنید.
- در فیلد سهمیه، بازه سهمیه را مشخص کنید. برای مثال، ۱۰۰ درخواست در هر یک دقیقه. یا ۵۰۰۰۰ درخواست در هر ۲ ساعت.

- روی ذخیره کلیک کنید.
- مطمئن شوید که محصول به یک برنامه توسعهدهنده اضافه شده است. برای برقراری تماسهای 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
گزینههای پیکربندی برای سهمیهبندی
برای پیکربندی افزونه سهمیهبندی، عنصر quotas را به فایل پیکربندی خود اضافه کنید، همانطور که در مثال زیر نشان داده شده است:
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
quotas:
bufferSize:
hour: 20000
minute: 500
month: 1
default: 10000
useDebugMpId: true
failOpen: true
...| گزینه | توضیحات |
|---|---|
bufferSize | (عدد صحیح) پیکربندی quotas: bufferSize: minute: 500 default: 10000 useDebugMpId: true failOpen: true به طور پیشفرض، اگر فاصله سهمیه روی "دقیقه" تنظیم شده باشد، میکروگیتوی شمارنده سهمیه خود را هر 5 ثانیه با Apigee Edge همگامسازی میکند. پیکربندی بالا میگوید که اگر فاصله سهمیه در محصول API روی "دقیقه" تنظیم شده باشد، میکروگیتوی Edge با Edge همگامسازی میشود تا تعداد سهمیه فعلی را پس از هر 500 درخواست یا پس از 5 ثانیه، هر کدام که زودتر اتفاق بیفتد، به دست آورد. برای اطلاعات بیشتر، به درک نحوه شمارش سهمیهها مراجعه کنید. واحدهای زمانی مجاز عبارتند از: |
failOpen | وقتی این ویژگی فعال باشد، اگر خطایی در پردازش سهمیه رخ دهد یا اگر درخواست "اعمال سهمیه" به Edge نتواند شمارندههای سهمیه از راه دور را بهروزرسانی کند، سهمیه فقط بر اساس تعداد محلی پردازش میشود تا زمانی که همگامسازی سهمیه از راه دور بعدی با موفقیت انجام شود. در هر دو مورد، پرچم quota-failed-open در شیء درخواست تنظیم میشود.برای فعال کردن ویژگی "fail open" در سهمیه، پیکربندی زیر را تنظیم کنید: edgemicro: ... quotas: failOpen: true |
useDebugMpId | برای فعال کردن ثبت شناسه MP (پردازنده پیام) در پاسخهای سهمیهبندی، این پرچم را روی true تنظیم کنید.برای استفاده از این قابلیت، باید تنظیمات زیر را انجام دهید: edgemicro: ... quotas: useDebugMpId: true ... وقتی {
"allowed": 20,
"used": 3,
"exceeded": 0,
"available": 17,
"expiryTime": 1570748640000,
"timestamp": 1570748580323,
"debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
} |
useRedis | اگر روی true تنظیم شود، افزونه از Redis برای ذخیره سازی سهمیه استفاده میکند. برای جزئیات بیشتر، به بخش «استفاده از ذخیره سازی سهمیه Redis» مراجعه کنید. |
آشنایی با نحوه محاسبه سهمیهها
به طور پیشفرض، اگر بازه سهمیه روی "دقیقه" تنظیم شده باشد، میکروگیتوی هر 5 ثانیه یک بار شمارنده سهمیه خود را با Apigee Edge همگامسازی میکند. اگر بازه روی سطحی بالاتر از "دقیقه"، مانند "هفته" یا "ماه" تنظیم شده باشد، دوره بهروزرسانی پیشفرض 1 دقیقه است.
لازم به ذکر است که شما فواصل سهمیهبندی را در محصولات API که در Apigee Edge تعریف شدهاند، مشخص میکنید. فواصل سهمیهبندی مشخص میکنند که چند درخواست برای یک دقیقه، ساعت، روز، هفته یا ماه مجاز است. به عنوان مثال، محصول A ممکن است فاصله سهمیهبندی ۱۰۰ درخواست در دقیقه و محصول B ممکن است فاصله سهمیهبندی ۱۰۰۰۰ درخواست در ساعت داشته باشد.
پیکربندی YAML افزونه quota Edge Microgateway فاصله سهمیهبندی را تعیین نمیکند ؛ بلکه روشی برای تنظیم فرکانس همگامسازی تعداد سهمیهبندی توسط یک نمونه محلی Edge Microgateway با Apigee Edge ارائه میدهد.
برای مثال، فرض کنید سه محصول API در Apigee Edge تعریف شده است که فواصل سهمیهبندی زیر در آنها مشخص شده است:
- محصول A سهمیه ۱۰۰ درخواست در دقیقه دارد.
- محصول ب سهمیه ۵۰۰۰ درخواست در ساعت دارد.
- محصول C سهمیهای معادل ۱۰۰۰۰۰۰ درخواست در ماه دارد.
با در نظر گرفتن این تنظیمات سهمیهبندی، افزونه quota Edge Microgateway چگونه باید پیکربندی شود؟ بهترین روش این است که Edge Microgateway را با فواصل همگامسازی که کمتر از فواصل سهمیهبندی تعریفشده در محصولات API هستند، پیکربندی کنید. به عنوان مثال:
quotas:
bufferSize:
hour: 2000
minute: 50
month: 1
default: 10000این پیکربندی فواصل همگامسازی زیر را برای محصولات API که قبلاً توضیح داده شد، تعریف میکند:
- محصول A روی فاصله زمانی "دقیقهای" تنظیم شده است. Edge Microgateway پس از هر پنجاهمین درخواست یا 5 ثانیه، هر کدام که زودتر اتفاق بیفتد، با Edge همگامسازی میشود.
- محصول B روی فاصله زمانی "ساعت" تنظیم شده است. Edge Microgateway پس از هر دو هزارمین درخواست یا هر یک دقیقه، هر کدام که زودتر اتفاق بیفتد، با Edge همگامسازی میشود.
- محصول C روی بازه زمانی "ماه" تنظیم شده است. Edge Microgateway پس از هر درخواست یا 1 دقیقه، هر کدام که زودتر اتفاق بیفتد، با Edge همگامسازی خواهد شد.
هر بار که یک نمونهی میکروگیتوی با اج همگامسازی میشود، تعداد سهمیهی میکروگیتوی برابر با تعداد سهمیهی بازیابیشده تنظیم میشود.
تنظیمات bufferSize به شما امکان میدهد نحوه همگامسازی شمارنده سهمیهبندی با Edge را تنظیم کنید. در شرایط ترافیک بالا، تنظیمات bufferSize به شمارنده بافر اجازه میدهد قبل از فعال شدن همگامسازی پیشفرض مبتنی بر زمان، همگامسازی شود.
درک محدوده سهمیه
تعداد سهمیه به یک محیط در یک سازمان محدود میشود. برای دستیابی به این محدوده، Edge Microgateway یک شناسه سهمیه ایجاد میکند که ترکیبی از "org + env + appName + productName" است.
استفاده از یک حافظه پشتیبان Redis برای سهمیهبندی
برای استفاده از یک فضای ذخیرهسازی پشتیبان Redis برای سهمیهبندی، از همان پیکربندی مورد استفاده برای ویژگی Synchronizer استفاده کنید. در زیر پیکربندی اولیه مورد نیاز برای استفاده از Redis برای ذخیرهسازی سهمیهبندی آمده است:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis* ، به استفاده از هماهنگکننده مراجعه کنید.تست افزونه سهمیهبندی
وقتی سهمیه از حد مجاز فراتر رود، وضعیت HTTP 403 به همراه پیام زیر به کلاینت بازگردانده میشود:
{"error": "exceeded quota"}تفاوت بین دستگیری اسپایک و سهمیه چیست؟
انتخاب ابزار مناسب برای کار مورد نظر بسیار مهم است. سیاستهای سهمیهبندی، تعداد پیامهای درخواستی را که یک برنامه کلاینت مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند، پیکربندی میکنند. سیاست سهمیهبندی با حفظ یک شمارنده توزیعشده که درخواستهای ورودی را شمارش میکند، محدودیتهای مصرف را برای برنامههای کلاینت اعمال میکند.
از سیاست سهمیهبندی برای اجرای قراردادهای تجاری یا SLA با توسعهدهندگان و شرکا استفاده کنید، نه برای مدیریت ترافیک عملیاتی. به عنوان مثال، سهمیهبندی ممکن است برای محدود کردن ترافیک برای یک سرویس رایگان استفاده شود، در حالی که دسترسی کامل را برای مشتریان پولی فراهم میکند.
برای محافظت در برابر افزایش ناگهانی ترافیک API از spike arrest استفاده کنید. معمولاً از spike arrest برای جلوگیری از حملات DDoS یا سایر حملات مخرب احتمالی استفاده میشود.