GitLab - Concurrent Job Queue & Runner Pool
Desafio do GitLab em Go: fila de jobs concorrente com pool de runners, limites por projeto, fair scheduling e graceful drain.
11 posts
Desafio do GitLab em Go: fila de jobs concorrente com pool de runners, limites por projeto, fair scheduling e graceful drain.
Desafio da Stone em Go: transferências financeiras sem deadlock, com ordenação determinística de travas e idempotência.
Desafio da Uber em Go: rate limiter multi-tenant de alta vazão com Token Bucket, limpeza de memória e segurança de concorrência.
Como encerrar um serviço Go com segurança em produção: tratar sinais do sistema, drenar requisições e fechar workers e conexões.
Como implementar exclusão mútua entre processos com locks distribuídos no Redis, incluindo o Redlock e scripts Lua para atomicidade.
Como encadear estágios concorrentes com channels em um pipeline, com fan-out para paralelizar e fan-in para juntar os resultados.
Como controlar a concorrência com worker pools e rate limiting em Go, evitando criar uma goroutine por tarefa sem limite.
Em qualquer linguagem de programação moderna, a pilha de execução (call stack) é a região de memória responsável por registrar o andamento das funções, suas variáveis locais e os endereços de…
Em sistemas distribuídos e servidores concorrentes, disparar uma tarefa é fácil. O verdadeiro desafio da engenharia de software é saber quando e como fazê-la parar.
Em sistemas orientados a concorrência baseados em troca de mensagens, um dos padrões mais desafiadores é coordenar múltiplos canais de comunicação simultâneos.
A mecânica completa dos canais em Go, da analogia mais básica à estrutura hchan do runtime, com 19 diagramas animados.