Securing APIs with rate limiting
For the last interceptor we are going to add to the server, we are going to use a rate limiter. More precisely, we are going to use the implementation of a token bucket rate limiter, which is provided by the golang.org/x/time/rate
package. In this section, we are not going to delve deeply into what rate limiters are or how to build one – that is out of the scope of this book, however, you will see how you can use a rate limiter (a readily implemented or custom one) in the context of gRPC.
The first thing that we need to do is get the dependency on the rate limiter:
$ go get golang.org/x/time/rate
Important note
The next command is only needed if you did not get the previous dependency on go-grpc-middleware
. If you followed section by section, you should not need it.
The we get the dependency for the interceptor:
$ go get github.com/grpc-ecosystem/go-grpc-middleware/v2/ interceptors/ratelimit
Now, we are going...