Mamy aplikację internetową, która obecnie używa pollingu do obsługi ciągłych aktualizacji.Websockets z PHP i Symfony - architektura sieci i serwera
Podczas przechodzenia na długi głosowanie może być niewielkim bandaidem do wydania, chcieliśmy wdrożyć rozwiązanie Websockets, które będzie trwałe i skalowalne.
Moje pytanie brzmi: jaki rodzaj architektury będzie potrzebny dla tego?
Zrobiłem rozeznanie się i odkryli, że typowa konfiguracja dla aplikacji Enterprise jest coś takiego:
Przepływ wykonanie połączenia wtedy byłoby coś takiego:
- Początkowa handshake
- Klient dokonuje
HTTP
Prośba doServer
wraz z JS do żądania połączenia websocket Server
odpowiada,Header
zawiera dyrektywęUpgrade
i przełącza protokołów dla tego klienta- websocket Server ustanawia
Websocket
połączenie z klientem
- Klient dokonuje
- Klient złoży
POST
/PUT
/etc.Webserver
(apache/Nginx) pobiera wynikiem zapytaniaWebserver
przesyła wynik doMQ
gdzie jest dodawany do kolejkiMessage
jest przesyłany do serweraWebsocket
zMQ
Message
jest odsyłany do klient
T jego podejście jest poprawne? Czy brakuje mi czegoś? Czy rozumiem coś niepoprawnie?
Symfony2 nie jest najlepszym pomysłem myślę, w każdym razie rozumiem, że chcesz utworzyć połączenie Websocket wewnątrz kontrolera symfony, prawda? – Griva
Dlaczego potrzebujesz MessageQueue między nginx i nodejs? Nodejs znakomicie radzi sobie z wieloma prośbami ... Nie ma również potrzeby HAPROXY, ponieważ nginx może sam poradzić sobie z uaktualnieniem protokołu. Czy chcesz to tak skomplikować? Miałem podobne rozwiązanie z prawie identyczną konfiguracją i bardzo trudno było go utrzymać.Należy pamiętać, że przez większość czasu potrzebny jest mechanizm przekazywania danych sesji z nginx (PHP) do nodejs ... –
@MitjaGustin Kolejka wiadomości byłaby większą częścią aplikacji i służyła nie tylko do websockets. W tym sensie szukam rozwiązania websocket, które będzie działać z kolejką wiadomości. Z drugiej strony, HAProxy nie jest trudnym wymogiem - może zostać zastąpiony innym rodzajem Load Balancera i nie ma znaczenia. Po prostu próbowałem w takim przypadku zrozumieć architekturę. – user991710