Skip to content

Repository files navigation

GitHub Stars GitHub Forks Watchers Contributors License


Rust PostgreSQL ClickHouse Docker

Shortened Hyper-Scale

Encurtador de URLs de ultra-performance atingindo +80k RPS.

Read this in other languages: 🇺🇸 English


📖 Sobre

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.

📋 Motivo

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.

💻 Como iniciar

Requisitos

  • 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/)

Instalação

🐳 Método 1: Produção (Docker) - Recomendado

  1. Clone o repositório do projeto:
git clone https://github.com/bgluis/shortened-hyper.git
  1. Navegue até o diretório do projeto:
cd shortened-hyper
  1. Suba todo o ambiente otimizado (Postgres, Dragonfly, Redpanda, Clickhouse, HAProxy e a API):
docker-compose up --build -d

🦀 Método 2: Desenvolvimento (Nativo / Cargo)

  1. Suba apenas os bancos de dados e mensageria:
    docker-compose up -d postgres dragonfly redpanda clickhouse haproxy
  2. Inicie a API e o Worker nativamente (Garanta limite alto de File Descriptors ulimit -n 65535 para carga):
    cargo run --release --bin shortened-hyper &
    cargo run --release --bin worker &

⚙️ Variáveis de Ambiente

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

🤝 Contribuidores

About

Ultra-performance URL shortener (+80k RPS) built in Rust. Uses DragonflyDB, Redpanda, ClickHouse, and PostgreSQL.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages