Rate Limiting و API Gateway

Rate Limiting: الگوریتم‌های Token Bucket و Sliding Window + نقش API Gateway در معماری مدرن

چرا محدود کنیم؟

الگوریتم‌های Rate Limiting

۱. Token Bucket — استاندارد

سطل با ظرفیت B توکن؛ با نرخ R توکن/ثانیه پر می‌شود. درخواست = یک توکن؛ سطل خالی = رد!

۲. Sliding Window Log

تایم‌استمپ همه درخواست‌ها؛ درخواست جدید: در پنجره ۶۰ ثانیه چندتا بود؟ > حد = رد.

۳. Sliding Window Counter — عملی

دو پنجره (فعلی + قبلی) با وزن‌دهی زمانی — تقریب خوب بدون لاگ کامل!

۴. Fixed Window

«هر دقیقه حداکثر ۱۰۰» — ساده اما مشکل مرز: ۹۹ در آخر دقیقه + ۹۹ در اول بعدی = ۱۹۸ در ۲ ثانیه!

سطح‌های محدودیت

سطحمثال
IP۱۰۰۰ req/min هر IP
کاربر۱۰۰ req/min هر توکن
API۱۰ req/min برای endpoint سنگین
سراسریمحافظت پایین‌دست

API Gateway — دروازه‌بان

نقطه ورود واحد APIها با وظایف:

مثال: Kong، AWS API Gateway، Nginx

نکته: پاسخ 429 (Too Many Requests) + هدر Retry-After = کلاینت خوش‌رفتار را خوشحال نگه دارید! و Rate Limit توزیع‌شده با Redis (شمارنده بین چند سرور مشترک).

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.

ابزارهای مرتبط