Об этом проекте
Centrifugo — это открытый масштабируемый сервер обмена сообщениями в реальном времени, предназначенный для доставки сообщений онлайн-пользователям через различные транспорты, включая WebSocket, HTTP-streaming, Server-Sent Events (SSE), GRPC и WebTransport (экспериментально). Он реализует пользовательскую модель PUB/SUB, в которой клиенты подписываются на каналы и получают сообщения, публикуемые бэкендом через простой HTTP или GRPC API. Это делает его независимым от языка и подходящим для создания чатов, живых комментариев, многопользовательских игр, дашбордов в реальном времени, инструментов совместной работы и потоковых ответов AI.
Ключевые возможности:
- **Эффективные транспорты**: WebSocket, HTTP-streaming, SSE, GRPC, WebTransport.
- **Масштабируемость**: встроенная поддержка Redis (включая Redis Cluster и совместимые хранилища, такие как Valkey, KeyDB, DragonflyDB), PostgreSQL или Nats для горизонтального масштабирования.
- **Простой серверный API**: HTTP и GRPC эндпоинты для связи с бэкендом.
- **Асинхронные потребители**: потребители PostgreSQL и Kafka для шаблонов transactional outbox и CDC.
- **Гибкая аутентификация**: на основе JWT или прокси-подобная аутентификация через запросы к бэкенду.
- **Богатая модель подписок**: Stream (на стороне клиента/сервера), map, shared poll и прокси-потоки подписок.
- **Разрешения каналов**: концепция namespace и различные стратегии разрешений.
- **История сообщений и восстановление**: горячая история с автоматическим восстановлением при переподключении, а также режим восстановления из кэша.
- **Дельта-сжатие**: на основе алгоритма Fossil для снижения трафика.
- **Presence**: присутствие онлайн в канале с уведомлениями о входе/выходе.
- **RPC**: отправка RPC-вызовов на бэкенд через соединение реального времени.
- **Клиентский протокол**: строгий и эффективный протокол с официальными SDK для JavaScript, Dart/Flutter, Swift, Java, Python, Go и .NET (в разработке).
- **Форматы данных**: JSON и бинарный Protobuf с оптимизированной сериализацией и батчингом.
- **Админ-UI**: встроенный веб-интерфейс для мониторинга и тестирования.
- **Наблюдаемость**: метрики Prometheus и официальный дашборд Grafana.
Centrifugo позиционируется как self-hosted альтернатива коммерческим сервисам, таким как Pubnub, Pusher и Ably, а также фреймворкам вроде socket.io и SignalR. Он рассчитан на то, чтобы настроить его один раз и использовать бессрочно, отделяя транспорт реального времени от бизнес-логики.
Быстрый старт с Docker:
```bash
docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure
```
Затем откройте http://localhost:8000 для админ-UI. Флаги insecure предназначены только для локальных проб.
Для продакшена следуйте руководствам по установке и быстрому старту на официальном сайте документации (centrifugal.dev). Проект активно поддерживается, есть поддержка сообщества через Telegram и Discord.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.