stamatios
← Voltar ao feed
Telefones de copo com barbante ligando baldes em prateleiras de depósito, metáfora do streaming durável do PicoMQ sobre HTTP
Dev & Engenharia · Open Source

PicoMQ traz streaming durável em tempo real sobre HTTP com S3

resumo de ~3 min

Proposta e arquitetura

PicoMQ se apresenta como um sistema de streams em tempo real e duráveis sobre HTTP, construído sobre armazenamento de objetos compatível com S3. O projeto é dividido em dois componentes principais: s3stream, que contém o motor de streams, e picomq, que reúne o plano de metadados, o servidor, as interfaces HTTP para o protocolo Pico e para Durable Streams, o cliente e a interface de linha de comando pico. O repositório é público, tem licença Apache-2.0 e inclui documentação, exemplos de execução, testes e um painel.

Instalação e implantação

A instalação indicada usa Cargo, com cargo install --path picomq/pico-cli, que coloca o executável pico em ~/.cargo/bin. Também é possível executá-lo diretamente com cargo run -p pico-cli -- <args>.

O exemplo básico inicia um nó único usando SQLite como log de metadados e armazenamento local de objetos. A configuração é feita pelo comando pico serve, com parâmetros para a URL dos metadados e para o armazenamento. Cada opção de linha de comando tem uma variável de ambiente equivalente com prefixo PICO_. Os endpoints /health e /ready ficam disponíveis no endereço administrativo definido por --admin-listen, cujo padrão é 127.0.0.1:9090. A autenticação vem desativada por padrão; quando o serviço é associado a um endereço que não é de loopback, é necessário usar --auth required ou --insecure-allow-remote.

O projeto também fornece configurações Docker Compose. A opção harness/aio usa Postgres e RustFS com um nó; compose.cluster.yml executa a mesma pilha com dois nós; e compose.lite.yml usa SQLite e file://, sem dependências adicionais. No ambiente Docker, o serviço Pico fica em http://localhost:4437, com a configuração de cluster também disponível em :4438, enquanto o painel fica em :9090. O diretório harness/byo permite usar um Postgres e um armazenamento de objetos já existentes, configurados por meio de .env.

Operação, desempenho e testes

A sequência de uso documentada cria um stream chamado /streams/orders, define o tipo de conteúdo como text/plain, acrescenta os números de 1 a 1000 em lotes de 100, lê o conteúdo, acompanha novas entradas com tail -f, encerra o stream e, por fim, o exclui. O README também disponibiliza um comando de benchmark usando HTTP/2, com lote de 1.024, janela de 512, quatro conexões, quatro streams e duração de 60 segundos; o trecho fornecido não apresenta resultados desse teste.

A verificação geral é feita com cargo test --workspace. Há ainda testes baseados em Postgres, condicionados à configuração da variável PICOMQ_PG_URL, incluindo os alvos pg_contract e pg_e2e. Assim, a documentação apresenta o PicoMQ como uma implementação que combina streams duráveis, interfaces HTTP, armazenamento de objetos compatível com S3 e alternativas de execução local, em cluster ou sobre serviços já existentes.