Sistema API Web com validação quantidade de requisições baseado em parametros, sendo por Ip de origem ou APIKey
Aplicação em Go sendo:
- Servidor HTTP Rest Client
- Servidor Jaeger para apresentação do trace distribuído
- Servidor Prometheus
- Servidor Opentelemetry
- Servidor Grafana
- Aplicação em Container com - Docker-compose e Dockerfile
-
Consulta
- O servidor permite executar metodo get rota base.
-
Requisitos:
- Certifique-se de ter o Go instalado em sua máquina.
- Certifique-se de ter o Docker instalado em sua máquina.
2. Clonar o Repositório:
git clone https://github.com/tiago-g-sales/rate-limiter-goexpert.git3. Acesse a pasta do app:
cd rate-limiter-goexpert4. Rode o docker-compose para buildar e executar toda a stack de observabilidade:
docker-compose up
- Variaveis do arquivo docker compose
- Quantidade de requisições por segundo com origem no mesmo IP
HTTP_REQUEST_IP_TPS=2 - Quantidade de requisições por segundo com a mesma APIKEY
Considerar id da APIKEY:Quatidade de requisições por segundo
HTTP_REQUEST_APIKEY_TPS=ABC123:3 - Tempo de bloqueio após exceder a quantidade de request
HTTP_REQUEST_TIME_BLOCK=10s
- Quantidade de requisições por segundo com origem no mesmo IP
HTTP server on port :8080
- Execute o curl abaixo ou use um aplicação client REST para realizar a requisição.
curl --request GET
--url http://localhost:8080/
--header 'API_KEY: ABC123'
--header 'User-Agent: insomnia/10.0.0'
- Execute o curl abaixo ou use um aplicação client REST para realizar a requisição.
curl --request GET
--url http://localhost:8080/
--header 'User-Agent: insomnia/10.0.0'
5. Acessar o Jaeger para consulta do trace distribuído:
6. Acessar o Grafana para consulta do trace distribuído:
7. Acessar o Prometheus para consulta do trace distribuído: