PicoMQ — это долговечные потоки данных (durable streams) в реальном времени поверх HTTP и Kafka, построенные на объектном хранилище, совместимом с S3.
-
s3stream/— движок потоков (см. s3stream/README.md[s3stream/README.md]) -
picomq/— хост: уровень метаданных, сервер, фронтенды протоколов (HTTP с протоколом Pico и Durable Streams, а также Kafka), клиент и CLI-утилитаpico
Установка
cargo install --path picomq/pico-cli
Бинарный файл pico будет помещён в ~/.cargo/bin. Также можно запускать его напрямую из репозитория командой cargo run -p picomq-cli — <args>. Если в PATH раньше встречается другой pico, добавьте:
export PATH="$HOME/.cargo/bin:$PATH"
Запуск узла
# одиночный узел: лог метаданных на SQLite, локальное объектное хранилище
pico serve \
--meta-url sqlite:./data/meta.db \
--storage=-2@file://./objects
У каждого флага есть эквивалентная переменная окружения с префиксом PICO_*. Эндпоинты /health и /ready доступны на адресе --admin-listen (по умолчанию 127.0.0.1:9090). Аутентификация отключена по умолчанию; для привязки к не-loopback адресам требуется указать --auth required или --insecure-allow-remote.
Docker
Позволяет обойтись без установки — всё поднимается через Docker Compose:
cd harness/aio
cp .env.example .env
docker compose up --build # Postgres + RustFS, 1 узел
docker compose -f compose.cluster.yml up --build # тот же стек, 2 узла
docker compose -f compose.lite.yml up --build # SQLite + file://, без зависимостей
docker compose -f compose.lite.yml -f compose.connectors.yml up --build # + среда выполнения коннекторов
Pico доступен по адресу http://localhost:4437 (в кластерном режиме также :4438). Дашборд: :9090. API коннекторов: :8081.
Директория harness/byo предназначена для работы с уже существующими Postgres и объектным хранилищем — настройка производится через .env.
Использование
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
Тестирование
cargo test --workspace
# Тесты с Postgres-бэкендом, управляются переменной окружения
PICOMQ_PG_URL=postgres://user:pass@localhost:5432/picomq \
cargo test -p picomq-sql --test pg_contract --test pg_e2e