Penyalahgunaan API dan serangan spam dapat membebani server aplikasi. Tugas Anda adalah membuat middleware Sliding Window Rate Limiter In-Memory untuk Express.js guna melindungi endpoint API sensitif.
POST /api/action
HTTP 429 dan pesan "Rate limit exceeded. Try again later.".req.headers['x-forwarded-for'] || req.ip || '127.0.0.1'.const ipRequestLogs = {}; // Format: { "192.168.1.1": [timestamp1, timestamp2, ...] }
Distributed Rate Limiting Menggunakan Redis Di bagian komentar kode solusi Anda, jelaskan cara migrasi rate limiter ini agar berjalan di arsitektur multi-instance server terdistribusi menggunakan Redis. Bandingkan:
- Redis Fixed Window: INCR + EXPIRE
- Redis Sliding Window Log: ZADD + ZREMRANGEBYSCORE + ZCARD