DEV Community

EronAlves1996
EronAlves1996

Posted on

Como resolver serviços que aguentam poucas requisições?

Imagine que você tenha um serviço que é literalmente uma blackbox (você não consegue alterar nada nele) que só aguenta 200 requests por vez? Como você resolveria isso?

Image description

Este problema surgiu enquanto estava conversando com um amigo, no qual ele relatou que já viu um serviço desta forma escrito em uma lang particularmente bem antiga.

No caso, para abordar o problema, fiz o mock em Fastify como na imagem anterior.

Daí, quando executo o script abaixo (ele manda 10 mil requests de uma vez), o server simplesmente não consegue responser muitas das requests.

Image description

Image description

Neste caso, a solução aqui é simples.
Como você já sabe um limite conhecido que o seu server target consegue aguentar, você coloca um Proxy reverso na frente para regular a backpressure de requests dentro de um número razoável. Neste caso, fiz rapidamente em node mesmo.

Image description

O resultado é que, este Proxy Reverso só vai mandar 180 requisições de cada vez para que o servidor alvo processe, evitando esses crashs, mas atenção: isso é um paliativo, visto que como ele deixa as requests em idle até o server estar disponível, consequentemente a última requisição demorará mais a ser processada.

Image description

Repo com código: https://github.com/EronAlves1996/backpressure-monorepo

Top comments (0)