شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
Edge Microgateway نسخه 3.0.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
افزودن و پیکربندی افزونه ها
برای افزودن و پیکربندی افزونه ها از این الگو پیروی کنید:
- Stop Edge Microgateway.
- یک فایل پیکربندی 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
- افزونه را پیکربندی کنید. برخی از افزونه ها دارای پارامترهای اختیاری هستند که می توانید آنها را در فایل پیکربندی پیکربندی کنید. به عنوان مثال، می توانید بند زیر را برای پیکربندی پلاگین دستگیری اسپایک اضافه کنید. برای اطلاعات بیشتر به استفاده از پلاگین دستگیری سنبله مراجعه کنید.
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
با استفاده از پلاگین 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 مجاز است. همچنین ببینید اگر چندین پردازش Edge Micro را اجرا می کنید .
- 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 arrest این پیام خطا را با وضعیت HTTP 503 برمیگرداند:
{"error": "spike arrest policy violated"}
افزودن بافر
شما می توانید یک بافر به خط مشی اضافه کنید. فرض کنید بافر را روی 10 تنظیم کرده اید. خواهید دید که API بلافاصله زمانی که از حد توقف اسپک فراتر رفتید، خطایی را باز نمی گردانید. در عوض، درخواست ها بافر می شوند (تا تعداد مشخص شده)، و درخواست های بافر شده به محض در دسترس بودن پنجره اجرای مناسب بعدی پردازش می شوند. bufferSize پیش فرض 0 است.
اگر چندین پردازش Edge Micro را اجرا می کنید
تعداد درخواستهای مجاز به تعداد پردازشهای Edge Micro worker که در حال اجرا هستند بستگی دارد. Spike arrest تعداد مجاز درخواست ها را برای هر فرآیند کارگر محاسبه می کند. بهطور پیشفرض، تعداد پردازشهای Edge Micro برابر با تعداد CPUهای روی دستگاهی است که Edge Micro در آن نصب شده است. با این حال، هنگام راه اندازی Edge Micro، می توانید با استفاده از گزینه --processes
در دستور start
، تعداد فرآیندهای کارگر را پیکربندی کنید. برای مثال، اگر میخواهید در یک بازه زمانی معین، دستگیری spike در 100 درخواست فعال شود، و اگر Edge Microgateway را با گزینه --processes 4
راهاندازی کنید، allow: 25
در پیکربندی دستگیری spike تنظیم کنید. به طور خلاصه، قاعده سرانگشتی این است که پارامتر پیکربندی allow
را روی مقدار "تعداد دستگیری مطلوب سنبله / تعداد فرآیندها" تنظیم کنید.
با استفاده از پلاگین سهمیه
سهمیه تعداد پیامهای درخواستی را مشخص میکند که یک برنامه مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند. وقتی یک برنامه به حد نصاب خود می رسد، تماس های بعدی API رد می شوند. همچنین ببینید تفاوت بین دستگیری سنبله و سهمیه چیست ؟
افزودن پلاگین سهمیه
به افزودن و پیکربندی افزونه ها مراجعه کنید.
پیکربندی محصول در Apigee Edge
شما سهمیه ها را در رابط کاربری Apigee Edge پیکربندی می کنید، جایی که محصولات API را پیکربندی می کنید. شما باید بدانید که کدام محصول حاوی پروکسی microgateway-aware است که میخواهید آن را با یک سهمیه محدود کنید. این محصول باید به یک برنامه توسعه دهنده اضافه شود. وقتی تماسهای API برقرار میکنید که با استفاده از کلیدهای برنامه توسعهدهنده احراز هویت میشوند، این سهمیه برای آن تماسهای API اعمال میشود.
- به حساب سازمانی Apigee Edge خود وارد شوید.
- در رابط کاربری Edge، محصول مرتبط با پروکسی microgateway-aware را که میخواهید سهمیه را برای آن اعمال کنید، باز کنید.
- در UI، محصولات را از منوی Publish انتخاب کنید.
- محصول حاوی API را که میخواهید سهمیه را برای آن اعمال کنید، باز کنید.
- روی ویرایش کلیک کنید.
- در قسمت Quota فاصله سهمیه را مشخص کنید. به عنوان مثال، 100 درخواست در هر دقیقه. یا 50000 درخواست هر 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
گزینه های پیکربندی برای سهمیه
برای پیکربندی افزونه سهمیه، عنصر 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 . (اضافه شده: نسخه 3.0.9) |
failOpen | هنگامی که این ویژگی فعال است، اگر خطای پردازش سهمیه رخ دهد یا اگر درخواست «سهمیه اعمال میشود» به Edge نتواند شمارندههای سهمیه راه دور را بهروزرسانی کند، سهمیه تنها بر اساس شمارشهای محلی پردازش میشود تا زمانی که همگامسازی سهمیه از راه دور بعدی انجام شود. در هر دوی این موارد، یک پرچم quota-failed-open در شی درخواست تنظیم می شود. (اضافه شده: نسخه 3.0.9)برای فعال کردن ویژگی «باز کردن شکست خورده»، پیکربندی زیر را تنظیم کنید: edgemicro: ... quotas: failOpen: true |
useDebugMpId | این پرچم را روی true تنظیم کنید تا ثبت شناسه MP (پردازنده پیام) در پاسخ های سهمیه فعال شود. (اضافه شده: نسخه 3.0.9) برای استفاده از این ویژگی، باید پروکسی edgemicro: ... quotas: useDebugMpId: true ... وقتی { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis | (Boolean) برای استفاده از ماژول پایگاه داده سهمیه Redis روی true تنظیم کنید. وقتی تنظیم شود، سهمیه فقط به موارد Edge Microgateway محدود می شود که به Redis متصل می شوند. در غیر این صورت سهمیه شمار جهانی است. پیشفرض: false (از ماژول redis-volos-apigee استفاده میشود) (اضافه شده: نسخه 3.0.10) |
redisHost | میزبانی که نمونه Redis شما در آن اجرا می شود. پیش فرض: 127.0.0.1 (اضافه شده: نسخه 3.0.10) |
redisPort | بندر نمونه Redis. پیش فرض: 6379 (اضافه شده: نسخه 3.0.10) |
redisDb | Redis DB برای استفاده. پیش فرض: 0 (اضافه شده: نسخه 3.0.10) |
درک محدوده سهمیه
تعداد سهمیه به یک محصول API اختصاص دارد. اگر یک برنامه توسعهدهنده چندین محصول داشته باشد، این سهمیه به هر یک جداگانه اختصاص مییابد. برای دستیابی به این محدوده، Edge Microgateway یک شناسه سهمیه ای ایجاد می کند که ترکیبی از "appName + productName" است.
تست پلاگین سهمیه
هنگامی که از سهمیه فراتر رفت، وضعیت HTTP 403 همراه با پیام زیر به مشتری بازگردانده می شود:
{"error": "exceeded quota"}
تفاوت بین دستگیری سنبله و سهمیه چیست؟
مهم است که ابزار مناسب برای کار مورد نظر را انتخاب کنید. خطمشیهای سهمیه تعداد پیامهای درخواستی را که یک برنامه مشتری مجاز است در طول یک ساعت، روز، هفته یا ماه به یک API ارسال کند، پیکربندی میکند. خط مشی سهمیه محدودیتهای مصرف را در برنامههای مشتری با حفظ یک شمارنده توزیعشده که درخواستهای دریافتی را محاسبه میکند، اعمال میکند.
به جای مدیریت ترافیک عملیاتی، از یک خط مشی سهمیه برای اجرای قراردادهای تجاری یا SLA با توسعه دهندگان و شرکا استفاده کنید. به عنوان مثال، یک سهمیه ممکن است برای محدود کردن ترافیک برای یک سرویس رایگان استفاده شود، در حالی که امکان دسترسی کامل را برای مشتریان پولی فراهم می کند.
برای محافظت در برابر جهش های ناگهانی در ترافیک API از توقف اسپیک استفاده کنید. معمولاً برای جلوگیری از حملات احتمالی DDoS یا سایر حملات مخرب، از دستگیری اسپایک استفاده میشود.