System Design: Throttling vs Rate Limiting in Distributed Systems