- Compatibilité XF
- 2.2.x
- 2.3.x
- Description courte
- Centrifugo integrates seamlessly with applications, offering great performance, built-in features, and scalable solutions. Built in Go for high efficiency, it supports Redis, KeyDB, Tarantool engines, and Nats brokers for robust scaling capabilities. Ideal for real-time messaging, including chats, live comments, multiplayer games, and streaming metrics. Used by companies like Badoo and ManyChat in production environments.
Ajoutez l'intégration avec Centrifuge.
Centrifugo est un service self-hosté qui peut gérer des connexions via une variété de transports en temps réel et fournit un API simple de publication. Centrifugo s'intègre bien à n'importe quel application – il n'y a pas besoin de changer l'architecture existante pour introduire les fonctionnalités en temps réel. Il suffit de laisser Centrifugo gérer les connexions persistantes.
Performances exceptionnelles
Centrifugo est construit en langage Go avec des optimisations intelligentes à l'intérieur. Il a de bonnes performances – un test de stand avec un million de connexions WebSocket et 30 millions de messages délivrés par minute sur du matériel comparable à une machine serveur moderne.
Fonctionnalités riches
Plusieurs fonctionnalités intégrées peuvent aider à construire rapidement des applications en temps réel. Centrifugo fournit différents types d'abonnements, l'historique chaud des canaux, la présence instantanée, les appels RPC. Il est également possible de relayer les événements de connexion vers le backend de l'application via HTTP ou GRPC et plus encore.
Les moteurs Redis, KeyDB, Tarantool intégrés ou le broker Nats permettent d'étendre les connexions sur différents machines. Avec une sharding consistante de Redis, KeyDB et Tarantool, il est possible de gérer des millions d'abonnements actifs avec des exigences matérielles raisonnables.
En production
Démarré presque 10 ans plus tôt, Centrifugo (et la bibliothèque Centrifuge pour Go sur laquelle il est basé) est un serveur mature en production utilisé par de nombreuses entreprises à travers le monde : Badoo, Ably, ManyChat, Grafana et d'autres.
Qu'est-ce que le messaging en temps réel ?
Le messaging en temps réel peut aider à construire des applications interactives où les événements peuvent être délivrés aux utilisateurs presque immédiatement après avoir été reconnus par le backend de l'application, en pushant du données dans une connexion persistante – ce qui permet d'atteindre un délai de livraison minimal.
Les chats, les commentaires en direct, les jeux multijoueurs et la diffusion des indicateurs peuvent être construits sur un système de messaging en temps réel.
Centrifugo gère des connexions persistantes des clients via le bidirectionnel WebSocket, SockJS et SSE (EventSource), streaming HTTP, GRPC et fournit une API pour publier des messages aux utilisateurs connectés en temps réel.
Scalabilité
Une autre chose importante est la scalabilité. Plus votre application grandit – plus de nouveaux utilisateurs établiront des connexions persistantes avec votre point d'entrée en temps réel. Une machine serveur moderne peut gérer des milliers de connexions ouvertes, mais le pouvoir d'une seule instance est limité – vous finirez par manquer les ressources disponibles CPU ou mémoire. À un certain moment, vous devrez donc scinder les connexions sur plusieurs machines. Un autre motif pour scinder les connexions sur plusieurs machines est l'availability (lorsqu'un serveur ne répond pas).
Il existe de nombreux systèmes de messaging en temps réel sur GitHub et des services en ligne payants. Mais seulement quelques-uns d'entre eux offrent la scalabilité par défaut – la plupart fonctionnent dans une seule instance. Je ne veux pas dire que Centrifugo est le seul serveur qui scinde. Il y a toujours de nombreuses alternatives comme Socket.IO, SocketCluster, Pushpin et des centaines d'autres. Mon point est qu'avoir la possibilité de scinder est l'une des principales choses à prendre en compte lorsqu'on recherche une solution de messaging en temps réel ou lorsqu'on la construit de zéro. Vous ne pouvez pas vraiment prévoir comment rapidement votre application utilisera les ressources disponibles sur une machine seule – la scalabilité logicielle n'est pas un optimisation prématurée et, dans la plupart des cas, avoir une solution scalable par défaut vous donnera plus d'espace pour améliorer la fonctionnalité de l'application.
Beaucoup de services en ligne sont capables de scinder aussi. Mais regardez les prix –pusher.comvous payez 500$ par mois mais vous obtenez au maximum 10k connexions et un nombre limité d'envois de messages mensuels. C'est ridicule. Bien sûr, Centrifugo est hébergé sur place et il faut dépenser la capacité du serveur pour le faire fonctionner. Mais je suppose que le coût n'est pas comparable dans de nombreux cas.
Centrifugo s'étend bien avec Redis PUB/SUB, supporte une répartition consistante de Redis côté application par défaut et intègre Redis Sentinel pour l'availability haute. Nous avons servi jusqu'à 500k connexions avec Centrifugo en utilisant 10 pods Centrifugo pour les connexions dans Kubernetes et seulement un seul instance de Redis qui a consommé seulement 60% d'une seule coeur processeur !ongoing pull requestcela ajoute la possibilité de scinder les PUB/SUB avec le serveur NATS comme émetteur/récepteur
Centrifugo est un service self-hosté qui peut gérer des connexions via une variété de transports en temps réel et fournit un API simple de publication. Centrifugo s'intègre bien à n'importe quel application – il n'y a pas besoin de changer l'architecture existante pour introduire les fonctionnalités en temps réel. Il suffit de laisser Centrifugo gérer les connexions persistantes.
Performances exceptionnelles
Centrifugo est construit en langage Go avec des optimisations intelligentes à l'intérieur. Il a de bonnes performances – un test de stand avec un million de connexions WebSocket et 30 millions de messages délivrés par minute sur du matériel comparable à une machine serveur moderne.
Fonctionnalités riches
Plusieurs fonctionnalités intégrées peuvent aider à construire rapidement des applications en temps réel. Centrifugo fournit différents types d'abonnements, l'historique chaud des canaux, la présence instantanée, les appels RPC. Il est également possible de relayer les événements de connexion vers le backend de l'application via HTTP ou GRPC et plus encore.
Les moteurs Redis, KeyDB, Tarantool intégrés ou le broker Nats permettent d'étendre les connexions sur différents machines. Avec une sharding consistante de Redis, KeyDB et Tarantool, il est possible de gérer des millions d'abonnements actifs avec des exigences matérielles raisonnables.
En production
Démarré presque 10 ans plus tôt, Centrifugo (et la bibliothèque Centrifuge pour Go sur laquelle il est basé) est un serveur mature en production utilisé par de nombreuses entreprises à travers le monde : Badoo, Ably, ManyChat, Grafana et d'autres.
Qu'est-ce que le messaging en temps réel ?
Le messaging en temps réel peut aider à construire des applications interactives où les événements peuvent être délivrés aux utilisateurs presque immédiatement après avoir été reconnus par le backend de l'application, en pushant du données dans une connexion persistante – ce qui permet d'atteindre un délai de livraison minimal.
Les chats, les commentaires en direct, les jeux multijoueurs et la diffusion des indicateurs peuvent être construits sur un système de messaging en temps réel.
Centrifugo gère des connexions persistantes des clients via le bidirectionnel WebSocket, SockJS et SSE (EventSource), streaming HTTP, GRPC et fournit une API pour publier des messages aux utilisateurs connectés en temps réel.
Scalabilité
Une autre chose importante est la scalabilité. Plus votre application grandit – plus de nouveaux utilisateurs établiront des connexions persistantes avec votre point d'entrée en temps réel. Une machine serveur moderne peut gérer des milliers de connexions ouvertes, mais le pouvoir d'une seule instance est limité – vous finirez par manquer les ressources disponibles CPU ou mémoire. À un certain moment, vous devrez donc scinder les connexions sur plusieurs machines. Un autre motif pour scinder les connexions sur plusieurs machines est l'availability (lorsqu'un serveur ne répond pas).
Il existe de nombreux systèmes de messaging en temps réel sur GitHub et des services en ligne payants. Mais seulement quelques-uns d'entre eux offrent la scalabilité par défaut – la plupart fonctionnent dans une seule instance. Je ne veux pas dire que Centrifugo est le seul serveur qui scinde. Il y a toujours de nombreuses alternatives comme Socket.IO, SocketCluster, Pushpin et des centaines d'autres. Mon point est qu'avoir la possibilité de scinder est l'une des principales choses à prendre en compte lorsqu'on recherche une solution de messaging en temps réel ou lorsqu'on la construit de zéro. Vous ne pouvez pas vraiment prévoir comment rapidement votre application utilisera les ressources disponibles sur une machine seule – la scalabilité logicielle n'est pas un optimisation prématurée et, dans la plupart des cas, avoir une solution scalable par défaut vous donnera plus d'espace pour améliorer la fonctionnalité de l'application.
Beaucoup de services en ligne sont capables de scinder aussi. Mais regardez les prix –pusher.comvous payez 500$ par mois mais vous obtenez au maximum 10k connexions et un nombre limité d'envois de messages mensuels. C'est ridicule. Bien sûr, Centrifugo est hébergé sur place et il faut dépenser la capacité du serveur pour le faire fonctionner. Mais je suppose que le coût n'est pas comparable dans de nombreux cas.
Centrifugo s'étend bien avec Redis PUB/SUB, supporte une répartition consistante de Redis côté application par défaut et intègre Redis Sentinel pour l'availability haute. Nous avons servi jusqu'à 500k connexions avec Centrifugo en utilisant 10 pods Centrifugo pour les connexions dans Kubernetes et seulement un seul instance de Redis qui a consommé seulement 60% d'une seule coeur processeur !ongoing pull requestcela ajoute la possibilité de scinder les PUB/SUB avec le serveur NATS comme émetteur/récepteur