[Ajuda] Estou trocando uma arquitetura, quero opiniões! · Ytu
Mai 22, às 22:37
·
2 min de leitura
·
0 leituras
Contextualizando
- Estou ultilizando TS!
Tenho um bot no discord que caiu a umas semanas, porém está em um grande numero de servidores (100+), onde o úsuario digita um texto e é adicionado a uma fila, onde o processamento é demorado, então primeiro é retornado um embed com o lugar na fila, e depois,tardiamente, a atualização da fila e o por fim o resultado do texto.
busco por opniões, dicas, soluções e +
Atualmente
Para não travar o bot entre todas as requisições, cheguei a essa arquitetura:
Nesta arquitetura, temos 3(para extrair o melhor do bull, são 3, com um sistema dedicado) arquivos rodando e um serviço REDIS, desta forma, o bot(1) se conecta ao socket aberto pelo backend(2), que envia requisições para o bull, que tem por padrão uma conexão com redis(que custa muitas requisições, o que não vale a pena no momento), onde distribui suas tarefas entre 3 processos, que também se conectam ao socket, e retornarm emitindo da thread direto para o bot, que interage com o servidor.
Nesta arquitetura(além de ocorer requests demais para o redis, quase 50 por mensagem), a queue trava ou se torna muito demorada devido a pouca quantidade de processos do bull, até poderia escalar esses processos, porém isso custaria mais máquina, mais redis, e uma conexão socket mais robusta para lidar com mais servidores ao mesmo tempo (atualmente processa 3 mensagens num tempo de 10 segundos aproximadamente, então se voce estiver em 120° na fila, você deve esperar um tempo minimo de 760 segundos)
Nova arquitetura proposta:
Nesta Arquitetura, rodeamos ao redor de um serviço Rabbit mq, com um processo Lider ( main ), que divide a tarefa entre muitos outros customers, podendo ter varios por maquina, ou até em máquinas separadas sem muito problema, desta forma o redis se torna apenas um cache e o main orquestra a divisão de tarefas entre customers, onde o bot se comunica somente com o processo main, e, para escalonar o serviço, bastaria subir mais consumers(o main se encarrega de dividir a carga, sem nem precisar parar o serviço para ser escalonado, dessa forma eu poderia ter 5 maquinas rodando apenas consumers sem problema nenhum de escalonamento e velocidade, e, o rabbit mq seria robusto o suficiente para orquestrar toda comunicação, sendo o bot apenas a parte final.
Continue lendo
DEV
Jun 3, às 23:41
DEV
Jun 3, às 23:04
Hacker News
Jun 3, às 23:00
AI | Techcrunch
Jun 3, às 22:57
DEV
Jun 3, às 22:45
Marktechpost AI Research News
Jun 3, às 22:40
DEV
Jun 3, às 20:55
Código Fonte
Jun 3, às 20:51
DEV
Jun 3, às 20:18
AI | Techcrunch
Jun 3, às 20:15