Совместимость с XenForo
  1. XF 2.1
  2. XF 2.2
  3. XF 2.3
Доп. требования
[MMO] Core Lib
Подробнее
https://xenforo.com/community/resources/mmo-centrifugo.8775/
Centrifuge — это самостоятельная служба, которая может обрабатывать соединения через различные транспорты в реальном времени и предоставляет простой API публикации. Centrifugo хорошо интегрируется с любым приложением — нет необходимости менять существующую архитектуру приложения для внедрения функций в реальном времени. Просто позвольте Centrifugo иметь дело с постоянными соединениями.
Отличная производительность
Centrifugo создан на языке Go с некоторыми умными оптимизациями внутри. Он имеет хорошую производительность — тестовый стенд с одним миллионом подключений WebSocket и 30 миллионами доставленных сообщений в минуту с оборудованием, сопоставимым с одним современным сервером.
Многофункциональный
Множество встроенных функций могут помочь создать привлекательное приложение в реальном времени за ограниченное время. Centrifugo предоставляет различные типы подписок, историю горячих каналов, мгновенное присутствие, вызовы RPC. Также есть возможность проксировать события соединения на бэкэнд приложения через HTTP или GRPC и многое другое.
Встроенные движки Redis, KeyDB, Tarantool или брокер Nats позволяют масштабировать соединения на разных машинах. Благодаря последовательному сегментированию Redis, KeyDB и Tarantool можно обрабатывать миллионы активных подключений с разумными требованиями к оборудованию.
Используется в производстве
Centrifugo (и библиотека Centrifuge для Go, на основе которой он создан) — это зрелый сервер, успешно используемый в производстве многими компаниями по всему миру: Badoo, Ably, ManyChat, Grafana и другими.
Что такое обмен сообщениями в реальном времени?
Обмен сообщениями в реальном времени может помочь в создании интерактивных приложений, в которых события могут доставляться пользователям практически сразу после подтверждения бэкэндом приложения путем передачи данных в постоянное соединение — таким образом достигая минимальной задержки доставки.

Чаты, живые комментарии, многопользовательские игры, потоковые метрики могут быть построены поверх системы обмена сообщениями в реальном времени.

Centrifugo обрабатывает постоянные соединения от клиентов через двунаправленный WebSocket, SockJS и однонаправленный SSE (EventSource), HTTP-потоковую передачу, транспорты GRPC и предоставляет API для публикации сообщений онлайн-клиентам в реальном времени.
Масштабируемость
Еще одна важная вещь — масштабируемость. По мере роста вашего приложения все больше и больше пользователей будут устанавливать постоянные соединения с вашей конечной точкой в реальном времени. Современная серверная машина может обрабатывать тысячи открытых соединений, но мощность одного процесса ограничена — в конечном итоге у вас закончится доступный процессор или память. Поэтому в какой-то момент вам, возможно, придется масштабировать пользовательские соединения на несколько машин. Еще одна причина масштабировать соединения на несколько машин — высокая доступность (когда один сервер выходит из строя).

На Github и платных онлайн-сервисах есть много решений для обмена сообщениями в реальном времени. Но только некоторые из них обеспечивают масштабируемость из коробки — большинство из них работают только в одном процессе. Я не хочу сказать, что Centrifugo — единственный сервер, который масштабируется. Есть еще много альтернатив, таких как Socket.IO, SocketCluster, Pushpin и множество других. Я хочу сказать, что возможность масштабирования — одна из главных вещей, о которых вы должны думать при поиске решения в реальном времени или его создании с нуля. Вы не можете точно предсказать, как быстро ваше приложение исчерпает доступные ресурсы на одной машине — масштабируемость программного обеспечения не является преждевременной оптимизацией, и в большинстве случаев наличие масштабируемого решения из коробки просто даст вам больше возможностей для улучшения функциональности приложения.

Многие онлайн-сервисы также способны масштабироваться. Но посмотрите на цены — большинство этих решений довольно дороги. В случае вы платите 500 долларов в месяц, но получаете максимум 10 тыс. подключений и строго ограниченное количество сообщений в месяц, о которых вам следует беспокоиться. Это смешно. Конечно, Centrifugo размещается самостоятельно, и вам придется потратить мощности своего сервера, чтобы запустить его. Но я полагаю, что стоимость во многих случаях несопоставима.

Centrifugo хорошо масштабируется с Redis PUB/SUB, поддерживает согласованное сегментирование Redis на стороне приложения из коробки и интегрируется с Redis Sentinel для высокой доступности. Мы обслуживали до 500 тыс. подключений с Centrifugo, имеющим 10 узловых модулей Centrifugo для подключений в Kubernetes и только один экземпляр Redis, который потреблял всего 60% одного ядра процессора!

Также есть , который добавляет возможность масштабировать PUB/SUB с сервером Nats в качестве брокера.

Последние обновления

  1. [MMO] Centrifugo v2.3.1

    Fixed a bug in 2.3 where messages were not added to a thread when there were no pages (pagination).
  2. [MMO] Centrifugo v2.3.0 Beta 1

    Support XF 2.3.0 Min require XF 2.3.0 Beta 3 Update js code (thx @NikitOS)
Сверху Снизу