Several services could benefit from a global rate limiter service. Similar to statsd an logging, this kind of service would be a good fit in service-runner.
In the past, @pchelolo has investigated & tested redis-based rate limiter libraries. The downside of those is a) complexity of needing to host & maintain another storage system, and b) a single point of failure.
An alternative is to use a DHT like [Uber's ringpop](https://github.com/uber/ringpop-node) for rate limiting. Their hyperbahn project actually [implements a rate limiter on top of ringpop](https://github.com/uber/hyperbahn/blob/a167e3c8d7d361cd17803e76bdf0dba9a3eb27a4/rate_limiter.js), so it might be possible to borrow most of the code.
The downside of DHTs like ringpop is that nodes running a particular service need to communicate, which means that at least one node IP needs to be communicated across the cluster. However, this requirement is not very different from redis.