Read this in other languages: 🇺🇸 English
Um encurtador de URLs construído em Rust focado em extrair a performance máxima absoluta de uma única máquina. Diferente da implementação TCP padrão, este projeto utiliza Unix Domain Sockets (UDS) com um proxy HAProxy para evitar a exaustão de portas efêmeras do Kernel Linux, além de aplicar tuning agressivo no PostgreSQL (removendo synchronous_commit) para processar dezenas de milhares de inserções simultâneas em disco. O sistema também atua com um cache lockless ultra-veloz (DragonflyDB), uma mensageria em altíssima vazão (Redpanda / Kafka) para disparos assíncronos não-bloqueantes, e um Analytics Worker isolado que processa logs em batch para salvar no banco colunar analítico ClickHouse.
Foi criado como estudo tanto para o ecossistema Rust quanto para a arquitetura, sendo uma maneira de inovar e ver de um outro ângulo o projeto BGLuis/shortened, e também como um laboratório de hiper-escala para testar novas tecnologias em situações extremas.
- Docker e Docker Compose (Requerido para a stack produtiva e dependências)
- Rust / Cargo (Apenas se desejar compilar os binários nativamente no Host)
- K6 (Opcional, para rodar as suítes de testes de estresse em
performance/)
- Clone o repositório do projeto:
git clone https://github.com/bgluis/shortened-hyper.git- Navegue até o diretório do projeto:
cd shortened-hyper- Suba todo o ambiente otimizado (Postgres, Dragonfly, Redpanda, Clickhouse, HAProxy e a API):
docker-compose up --build -d- Suba apenas os bancos de dados e mensageria:
docker-compose up -d postgres dragonfly redpanda clickhouse haproxy
- Inicie a API e o Worker nativamente (Garanta limite alto de File Descriptors
ulimit -n 65535para carga):cargo run --release --bin shortened-hyper & cargo run --release --bin worker &
Caso rode fora do Docker Compose nativo, as seguintes variáveis podem ser injetadas:
| Variável | Descrição | Valor Padrão no Docker |
|---|---|---|
DATABASE_URL |
Conexão principal (PostgreSQL) | postgres://postgres:postgres@postgres:5432/shortened |
REDIS_URL |
Conexão do Cache (DragonflyDB) | redis://dragonfly:6379/ |
KAFKA_BROKERS |
Endereço dos Brokers (Redpanda) | redpanda:9092 |
CLICKHOUSE_URL |
Conexão HTTP (ClickHouse) | http://clickhouse:8123 |
RUST_LOG |
Nível de log (ex: info, debug) |
N/D |