شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
میکروگیتوی اج نسخه ۳.۰.x
مخاطب
این مبحث برای اپراتورهای 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
useRedis: true
redisHost: localhost
redisPort: 6379
redisDb: 1
...| گزینه | توضیحات |
|---|---|
buffersize | (عدد صحیح) اندازه بافر برای تنظیم برای بازه زمانی مشخص شده. واحدهای زمانی مجاز عبارتند از: hour ، minute ، day ، week ، month و default . (اضافه شده: نسخه ۳.۰.۹) |
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 | (بولی) برای استفاده از ماژول پایگاه داده سهمیه Redis، روی true تنظیم کنید. وقتی تنظیم شود، سهمیه فقط به نمونههای Edge Microgateway که به Redis متصل میشوند محدود میشود. در غیر این صورت، شمارنده سهمیه سراسری است. پیشفرض: false (از ماژول redis-volos-apigee استفاده میشود) (اضافه شده: نسخه ۳.۰.۱۰) |
redisHost | میزبان (host) که نمونه Redis شما در آن اجرا میشود. پیشفرض: ۱۲۷.۰.۰.۱ (اضافه شده: نسخه ۳.۰.۱۰) |
redisPort | پورت نمونه Redis. پیشفرض: ۶۳۷۹ (اضافه شده: نسخه ۳.۰.۱۰) |
redisDb | پایگاه داده Redis مورد استفاده. مقدار پیشفرض: ۰ (اضافه شده: نسخه ۳.۰.۱۰) |
درک محدوده سهمیه
تعداد سهمیه به یک محصول API محدود میشود. اگر یک برنامه توسعهدهنده چندین محصول داشته باشد، سهمیه به صورت جداگانه به هر یک از آنها محدود میشود. برای دستیابی به این محدوده، Edge Microgateway یک شناسه سهمیه ایجاد میکند که ترکیبی از "appName + productName" است.
تست افزونه سهمیهبندی
وقتی سهمیه از حد مجاز فراتر رود، وضعیت HTTP 403 به همراه پیام زیر به کلاینت بازگردانده میشود:
{"error": "exceeded quota"}تفاوت بین دستگیری اسپایک و سهمیه چیست؟
انتخاب ابزار مناسب برای کار مورد نظر بسیار مهم است. سیاستهای سهمیهبندی، تعداد پیامهای درخواستی را که یک برنامه کلاینت مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند، پیکربندی میکنند. سیاست سهمیهبندی با حفظ یک شمارنده توزیعشده که درخواستهای ورودی را شمارش میکند، محدودیتهای مصرف را برای برنامههای کلاینت اعمال میکند.
از سیاست سهمیهبندی برای اجرای قراردادهای تجاری یا SLA با توسعهدهندگان و شرکا استفاده کنید، نه برای مدیریت ترافیک عملیاتی. به عنوان مثال، سهمیهبندی ممکن است برای محدود کردن ترافیک برای یک سرویس رایگان استفاده شود، در حالی که دسترسی کامل را برای مشتریان پولی فراهم میکند.
برای محافظت در برابر افزایش ناگهانی ترافیک API از spike arrest استفاده کنید. معمولاً از spike arrest برای جلوگیری از حملات DDoS یا سایر حملات مخرب احتمالی استفاده میشود.