- Совместимость с XenForo
- XF 2.1
- XF 2.2
- XF 2.3
- Доп. требования
- [MMO] Core Lib
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 и множество других. Я хочу сказать, что возможность масштабирования — одна из главных вещей, о которых вы должны думать при поиске решения в реальном времени или его создании с нуля. Вы не можете точно предсказать, как быстро ваше приложение исчерпает доступные ресурсы на одной машине — масштабируемость программного обеспечения не является преждевременной оптимизацией, и в большинстве случаев наличие масштабируемого решения из коробки просто даст вам больше возможностей для улучшения функциональности приложения.
Многие онлайн-сервисы также способны масштабироваться. Но посмотрите на цены — большинство этих решений довольно дороги. В случае
Centrifugo хорошо масштабируется с Redis PUB/SUB, поддерживает согласованное сегментирование Redis на стороне приложения из коробки и интегрируется с Redis Sentinel для высокой доступности. Мы обслуживали до 500 тыс. подключений с Centrifugo, имеющим 10 узловых модулей Centrifugo для подключений в Kubernetes и только один экземпляр Redis, который потреблял всего 60% одного ядра процессора!
Также есть
Отличная производительность
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 в качестве брокера.