Implement a distributed rate limiting service that can be used across multiple services to prevent abuse and ensure fair resource usage.
Choose and design the rate limiting algorithm. Compare fixed window, sliding window log, sliding window counter, and token bucket approaches.