Este projeto é uma implementação para a competição Rinha de Backend 2025 ( https://github.com/zanfranceschi/rinha-de-backend-2025 ) , focada em performance, escalabilidade e boas práticas de desenvolvimento backend.
- database/: Serviço de banco de dados utilizando LockFree.EventStore.
- gateway/: Serviço de gateway, responsável por orquestrar as requisições e comunicação entre serviços.
- nginx.conf: Configuração do proxy reverso NGINX.
- docker-compose.yml: Orquestração dos serviços via Docker Compose.
- .NET 9 com AOT (Ahead-of-Time) compilation
- Docker e Docker Compose para containerização
- NGINX como proxy reverso
- Banco de dados customizado implementado em .NET
- UnixDomainSockets.HttpClient: Biblioteca para comunicação via Unix Domain Sockets entre os serviços, otimizada para performance e compatível com AOT compilation.
- LockFree.EventStore v1.0.0: Event store em memória lock-free para armazenamento de alta performance com:
- Particionamento por chave (8 partições configuradas)
- Agregações funcionais por janela temporal
- Capacidade configurável (100.000 eventos)
- Callbacks de observabilidade para eventos descartados
- Propriedades de estado em tempo real (Count, Capacity, IsEmpty, IsFull)
- Método Clear() para purge eficiente
- Zero dependências externas e compatibilidade completa com AOT
- Comunicação Inter-Serviços: Unix Domain Sockets para máxima performance
- Armazenamento Lock-Free: MPMC (Multiple Producer, Multiple Consumer) sem locks
- Observabilidade: Endpoint
/metricspara monitoramento em tempo real - Descarte FIFO: Gerenciamento automático de capacidade com descarte de eventos antigos
- Agregações Temporais: Consultas eficientes por janela de tempo
docker-compose up --build- Gateway: Recebe e processa as requisições HTTP, encaminhando para o serviço de banco de dados.
- Database: Gerencia o armazenamento e consulta dos dados usando LockFree.EventStore.
- NGINX: Proxy reverso para balanceamento de carga e roteamento.
POST /payments/default- Adiciona pagamento no store padrãoPOST /payments/fallback- Adiciona pagamento no store de fallbackGET /summary?from={date}&to={date}- Obtém resumo de pagamentos por períodoGET /metrics- Métricas em tempo real dos event stores (contadores, capacidade, status)POST /purge-payments- Limpa todos os pagamentos armazenados
POST /payments- Endpoint principal para submissão de pagamentosPOST /purge-payments- Limpa pagamentos (proxy para database service)
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.