picomq README

The project's README from github.com/PicoMQ/picomq. As one markdown file: README.md.

PicoMQ

PicoMQ is durable, real-time streams over HTTP and Kafka, built on S3-compatible object storage.

Documentation · Discord · Quick start

Install

cargo install --path picomq/pico-cli

This puts the pico binary in ~/.cargo/bin. Or run it in place with cargo run -p picomq-cli -- <args>. If another pico is first on PATH:

export PATH="$HOME/.cargo/bin:$PATH"

Run a node

# single node: SQLite metadata log, local object storage
pico serve \
    --meta-url sqlite:./data/meta.db \
    --storage=-2@file://./objects

Every flag has a PICO_* env equivalent. /health and /ready are on --admin-listen (default 127.0.0.1:9090). Auth is off by default, non-loopback binds need --auth required or --insecure-allow-remote.

Docker

Skips the install, everything runs in compose:

cd harness/aio
cp .env.example .env

docker compose up --build                          # Postgres + RustFS, 1 node
docker compose -f compose.cluster.yml up --build   # same stack, 2 nodes
docker compose -f compose.lite.yml up --build      # SQLite + file://, no deps
docker compose -f compose.lite.yml -f compose.connectors.yml up --build   # + connectors runtime

Pico: http://localhost:4437 (cluster also :4438). Dashboard: :9090. Connectors API: :8081. harness/byo is the same against an existing Postgres and object store, configured through .env.

Use it

pico create /streams/orders --content-type text/plain
seq 1 1000 | pico append /streams/orders --batch 100
pico read /streams/orders
pico tail /streams/orders -f
pico close /streams/orders && pico delete /streams/orders

pico --http2 bench -b 1024 -w 512 --connections 4 --streams 4 -d 60

Test

cargo test --workspace

# Postgres-backed tests, env-gated
PICOMQ_PG_URL=postgres://user:pass@localhost:5432/picomq \
    cargo test -p picomq-sql --test pg_contract --test pg_e2e

picomq (PicoMQ/picomq)

Searching Database…

373 ·GitHub
Что это?PicoMQ — это система потоковой передачи в реальном времени с долговременным хранением, которая держит данные в S3-совместимом объектном хранилище вместо локальных дисков и при этом понимает как собственный HTTP-протокол, так и сетевой протокол Kafka.
Это клон Kafka или прокси перед S3?Это самостоятельный сервер со своим слоем метаданных и протокольными фронтендами (HTTP с нативным протоколом Pico и Durable Streams плюс Kafka-совместимый фронтенд), а запись лога в объектное хранилище выполняет отдельный движок s3stream.
Как его запустить?Установите pico CLI через cargo (бинарник pico попадёт в ~/.cargo/bin) или запустите на месте через 'cargo run -p picomq-cli --'; либо вообще пропустите установку и поднимите весь стек через Docker Compose.
Нужны ли мне собственные Postgres и S3-бакет для работы с ним?В комплектном варианте Docker Compose Postgres и объектное хранилище создаются за вас, но PicoMQ умеет работать и по схеме «принеси своё» — с существующей базой Postgres и объектным хранилищем, настроенными через файл .env.
Аутентификация включена по умолчанию?Нет, авторизация по умолчанию выключена. Если привязываете ноду к чему-то кроме loopback, нужно явно передать --auth required или --insecure-allow-remote.
Какие порты открывает конфигурация Docker Compose?Она открывает Pico-ноду (плюс :4438 для режима кластера), веб-панель на :9090 и Connectors API на :8081.
Как проверить, что нода в порядке?Каждая нода отдаёт эндпоинты /health и /ready на административном слушателе, который по умолчанию слушает 127.0.0.1:9090.
Можно настроить ноду только переменными окружения?Да, у каждого флага CLI есть соответствующая переменная окружения с префиксом PICO_, так что ноды можно настраивать без передачи флагов.
What are similar projects?kafgres, redpanda, automq, celld, nsq, redis, hydradb, emqx
Creator
PicoMQ
Size
2.2 MB
Stars
373
Age
2mo
Commits · 90 Days