Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Submissão para Rinha de Backend, Segunda Edição: 2024/Q1 - Controle de Concorrência

logo nginx


logo C

Rodolpho Vianna Santoro (RodolphoVSantoro)

Ferramentas utilizadas

  • nginx como load balancer
  • c99 api e banco, utilizando libs como:
    • sys/socket.h para receber requisições
    • sys/file.h para controle de concorrência de arquivos

logo postgres


Descrição

Esse projeto foi feito pensando em comparar como uma aplicação simples em C com arquivos binários e locks como "banco de dados", sem uso de nenhuma lib externa ou algum banco, se comportaria em relação as outras submissões.

Também foi minha primeira vez trabalhando com async em C, é um repositório interessante para quem tem curiosidade de ver como funciona(usei o select, mas existem também o poll e o epoll que são melhores).

Mas por favor, nunca usem o código fonte nesse repositório para se basearem em uma aplicação C em produção. Muitas validações e garantias foram deixadas de lado para simplificar o código. Além disso, sou longe de ser um especialista em network programming em C.


Como rodar

make resetDb # para resetar/criar o banco
sudo docker compose build # para buildar a imagem
sudo docker compose up # para rodar a aplicação

Preview testes

preview1

preview2

preview3

Teste bônus

preview4


Links


Menções

  • Reinaldo Rozato Junior -> Ajuda com melhorias no nginx e no docker