- XF-Kompatibilität
- 2.2.x
- 2.3.x
- Kurzbeschreibung
- 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.
Integration mit Centrifuge.
Centrifugo ist ein self-hosted-Dienst, der Verbindungen über eine Vielzahl von real-time-Transports verwalten kann und bietet einen einfachen Publish-API. Centrifugo integriert sich gut in jede Anwendung – es ist nicht notwendig, die bestehende Anwendungskonfiguration zu ändern, um Realitätspflichtigkeiten einzubringen. Lassen Sie Centrifugo die persistierenden Verbindungen verwalten.
Gute Leistung
Centrifugo wird in Go-Programmiersprache entwickelt und enthält einige intelligente Optimierungsintrigen. Es hat gute Leistung – ein Teststand mit einer Million WebSocket-Verbindungen pro Sekunde und 30 Millionen versandbarer Nachrichten pro Minute, wobei die Hardware vergleichbar ist mit einem modernen Server-Kern.
Funktionale Vielfalt
Viele eingebaute Funktionen können helfen, eine attraktive realzeit-Anwendung in kurzer Zeit zu bauen. Centrifugo bietet verschiedene Art der Abonnements, aktuelle Kanal-Historien, instantene Präsense und RPC-Anrufe. Es ist auch möglich, Verbindungs-Ereignisse an den Anwendungs-Backend über HTTP oder GRPC zu proxyen.
Befehlsbasierte Redis-, KeyDB- und Tarantool-Speicherplattformen oder Nats-Broker ermöglichen es, Verbindungen über verschiedene Maschinen zu skalieren. Mit der Konzistenten Scharding von Redis, KeyDB und Tarantool ist es möglich, Millionen aktiver Verbindungen mit vernünftiger Hardwarevoraussetzung zu verwalten.
In Produktion
Centrifugo (und die Centrifuge-Bibliothek für Go) wurde fast 10 Jahre lang entwickelt und wird von vielen Unternehmen weltweit in der Produktion erfolgreich eingesetzt: Badoo, Ably, ManyChat, Grafana und andere.
Was ist realzeit-Nachrichtenvermittlung?
Realzeit-Nachrichten können interaktive Anwendungen bauen, wo Ereignisse fast sofort nach Akzeptanz durch den Anwendungskern über die Verbindung in eine persistierende Verbindung gesendet werden – was Minimal-Delays für die Nachrichtenübertragung erlaubt.
Chats, live-Kommentare, multiplayer-Spiele und Streaming-Metriken können auf einem realzeit-Nachrichtensystem gebaut werden.
Centrifugo verwalten persistente Verbindungen von Clients über bidirektionale WebSocket, SockJS und unidirektionale SSE (EventSource), HTTP-Streaming und GRPC-Transports und bietet eine API zum Veröffentlichen Nachrichten in realzeit zu online-Angemeldeten Benutzern.
Skalierbarkeit
Ein weiterer wichtiger Aspekt ist die Skalierung. Je mehr Ihre Anwendung wächst – je mehr Nutzer werden Sie mit Ihren realzeit-Endpunkt persistente Verbindungen herstellen. Ein modernes Server-Kern kann tausende offene Verbindungen verwalten, aber der Kraft eines Prozesses ist begrenzt – Sie werden schließlich an verfügbarer CPU oder Speicher ausfallen. So wird es am Zeitpunkt kommen, dass Sie die Benutzer-Verbindungen über mehrere Maschinen skalieren müssen. Eine weitere Gründe für die Skalierung von Verbindungen über mehrere Maschinen ist die Verfügbarkeit (wenn eine Serverausfall).
Es gibt viele realzeit-Nachrichtensysteme auf GitHub und kostenpflichtige online-Dienste. Aber nur wenige von ihnen bieten Standardmäßig Skalierbarkeit – die meisten arbeiten nur in einem Prozess. Ich will nicht sagen, dass Centrifugo der einzige Server ist, der skaliert. Es gibt immer noch viele Alternativen wie Socket.IO, SocketCluster, Pushpin und Tausende anderer. Mein Punkt ist, dass Skalierbarkeit eine der Hauptthemen sein sollte, wenn Sie nach einem realzeit-Lösung suchen oder sie selbst bauen. Sie können nicht wirklich vorhersagen, wie schnell Ihre Anwendung auf einer einzelnen Maschine ihre Ressourcen ausverkauft wird – die Software-Skalierung ist keine voreilig optimierte Lösung und in der Regel bietet eine skalierbare Lösung im Einkaufsstand mehr Raum für die Verbesserung der Funktionalität der Anwendungsfunctionen.
Viele online-Dienste sind auch in der Lage, zu skaliieren. Aber schauen Sie sich die Preise an —pusher.comDu zahlst 500$ im Monat und bekommst maximal 10k Verbindungen und einen stark begrenzten Monatsnachrichtenbetrag. Das ist absurd. Natürlich ist Centrifugo self-hosted und du musst deinen Serverkapazität für es aussetzen. Aber ich nehme an, die Kosten sind in vielen Fällen nicht vergleichbar.
Centrifugo skaliert gut mit Redis PUB/SUB, unterstützt Anwendungsebene von Redis-konsistentem Sharding ohne zusätzliche Konfiguration und integriert sich mit Redis Sentinel für hohe Verfügbarkeit. Wir haben bis zu 500k Verbindungen mit Centrifugo in Kubernetes erreicht, indem wir 10 Centrifugo Knotenpods für Verbindungen nutzten und nur eine Redis-Instanz, die nur 60% einer einzelnen Prozessor-Kerne kapazität aussetzte!ongoing pull requestwas Möglichkeit zur Skalierung von PUB/SUB mit dem NATS-Server als Broker hat
Centrifugo ist ein self-hosted-Dienst, der Verbindungen über eine Vielzahl von real-time-Transports verwalten kann und bietet einen einfachen Publish-API. Centrifugo integriert sich gut in jede Anwendung – es ist nicht notwendig, die bestehende Anwendungskonfiguration zu ändern, um Realitätspflichtigkeiten einzubringen. Lassen Sie Centrifugo die persistierenden Verbindungen verwalten.
Gute Leistung
Centrifugo wird in Go-Programmiersprache entwickelt und enthält einige intelligente Optimierungsintrigen. Es hat gute Leistung – ein Teststand mit einer Million WebSocket-Verbindungen pro Sekunde und 30 Millionen versandbarer Nachrichten pro Minute, wobei die Hardware vergleichbar ist mit einem modernen Server-Kern.
Funktionale Vielfalt
Viele eingebaute Funktionen können helfen, eine attraktive realzeit-Anwendung in kurzer Zeit zu bauen. Centrifugo bietet verschiedene Art der Abonnements, aktuelle Kanal-Historien, instantene Präsense und RPC-Anrufe. Es ist auch möglich, Verbindungs-Ereignisse an den Anwendungs-Backend über HTTP oder GRPC zu proxyen.
Befehlsbasierte Redis-, KeyDB- und Tarantool-Speicherplattformen oder Nats-Broker ermöglichen es, Verbindungen über verschiedene Maschinen zu skalieren. Mit der Konzistenten Scharding von Redis, KeyDB und Tarantool ist es möglich, Millionen aktiver Verbindungen mit vernünftiger Hardwarevoraussetzung zu verwalten.
In Produktion
Centrifugo (und die Centrifuge-Bibliothek für Go) wurde fast 10 Jahre lang entwickelt und wird von vielen Unternehmen weltweit in der Produktion erfolgreich eingesetzt: Badoo, Ably, ManyChat, Grafana und andere.
Was ist realzeit-Nachrichtenvermittlung?
Realzeit-Nachrichten können interaktive Anwendungen bauen, wo Ereignisse fast sofort nach Akzeptanz durch den Anwendungskern über die Verbindung in eine persistierende Verbindung gesendet werden – was Minimal-Delays für die Nachrichtenübertragung erlaubt.
Chats, live-Kommentare, multiplayer-Spiele und Streaming-Metriken können auf einem realzeit-Nachrichtensystem gebaut werden.
Centrifugo verwalten persistente Verbindungen von Clients über bidirektionale WebSocket, SockJS und unidirektionale SSE (EventSource), HTTP-Streaming und GRPC-Transports und bietet eine API zum Veröffentlichen Nachrichten in realzeit zu online-Angemeldeten Benutzern.
Skalierbarkeit
Ein weiterer wichtiger Aspekt ist die Skalierung. Je mehr Ihre Anwendung wächst – je mehr Nutzer werden Sie mit Ihren realzeit-Endpunkt persistente Verbindungen herstellen. Ein modernes Server-Kern kann tausende offene Verbindungen verwalten, aber der Kraft eines Prozesses ist begrenzt – Sie werden schließlich an verfügbarer CPU oder Speicher ausfallen. So wird es am Zeitpunkt kommen, dass Sie die Benutzer-Verbindungen über mehrere Maschinen skalieren müssen. Eine weitere Gründe für die Skalierung von Verbindungen über mehrere Maschinen ist die Verfügbarkeit (wenn eine Serverausfall).
Es gibt viele realzeit-Nachrichtensysteme auf GitHub und kostenpflichtige online-Dienste. Aber nur wenige von ihnen bieten Standardmäßig Skalierbarkeit – die meisten arbeiten nur in einem Prozess. Ich will nicht sagen, dass Centrifugo der einzige Server ist, der skaliert. Es gibt immer noch viele Alternativen wie Socket.IO, SocketCluster, Pushpin und Tausende anderer. Mein Punkt ist, dass Skalierbarkeit eine der Hauptthemen sein sollte, wenn Sie nach einem realzeit-Lösung suchen oder sie selbst bauen. Sie können nicht wirklich vorhersagen, wie schnell Ihre Anwendung auf einer einzelnen Maschine ihre Ressourcen ausverkauft wird – die Software-Skalierung ist keine voreilig optimierte Lösung und in der Regel bietet eine skalierbare Lösung im Einkaufsstand mehr Raum für die Verbesserung der Funktionalität der Anwendungsfunctionen.
Viele online-Dienste sind auch in der Lage, zu skaliieren. Aber schauen Sie sich die Preise an —pusher.comDu zahlst 500$ im Monat und bekommst maximal 10k Verbindungen und einen stark begrenzten Monatsnachrichtenbetrag. Das ist absurd. Natürlich ist Centrifugo self-hosted und du musst deinen Serverkapazität für es aussetzen. Aber ich nehme an, die Kosten sind in vielen Fällen nicht vergleichbar.
Centrifugo skaliert gut mit Redis PUB/SUB, unterstützt Anwendungsebene von Redis-konsistentem Sharding ohne zusätzliche Konfiguration und integriert sich mit Redis Sentinel für hohe Verfügbarkeit. Wir haben bis zu 500k Verbindungen mit Centrifugo in Kubernetes erreicht, indem wir 10 Centrifugo Knotenpods für Verbindungen nutzten und nur eine Redis-Instanz, die nur 60% einer einzelnen Prozessor-Kerne kapazität aussetzte!ongoing pull requestwas Möglichkeit zur Skalierung von PUB/SUB mit dem NATS-Server als Broker hat