web-dev-qa-db-fra.com

Websockets et évolutivité

Suis un débutant avec websockets. J'ai un besoin dans mon application où le serveur doit informer les clients lorsque quelque chose change et je prévois d'utiliser des websockets.

1) Instance de serveur unique et client unique ==> Combien de Websockets seront créés et combien de connexions aux Websockets?

2) Instance de serveur unique et 10 clients ==> Combien de websockets seront créés et combien de connexions aux websockets?

3) Instance de serveur unique et 1000 clients ==> Combien de websockets seront créés et combien de connexions aux websockets?

Comment évoluez-vous avec les Webscokets lorsque votre application compte 1 000 utilisateurs?

Merci beaucoup pour vos commentaires.

11
user3216514

1) Instance de serveur unique et client unique ==> Combien de Websockets seront créés et combien de connexions aux Websockets?

Si votre client crée une connexion webSocket, c'est ce qu'il y aura une connexion webSocket sur le client et une sur le serveur. C'est le client qui crée les connexions webSocket au serveur, c'est donc le client qui détermine le nombre. S'il crée 3, alors il y en aura 3. S'il crée 1, alors il y aura 1. Habituellement, le client créera simplement 1.

2) Instance de serveur unique et 10 clients ==> Combien de websockets seront créés et combien de connexions aux websockets?

Comme décrit ci-dessus, cela dépend de ce que fait le client. Si chaque client crée 1 connexion webSocket et qu'il y a 10 clients connectés au serveur, le serveur verra un total de 10 connexions webSocket.

3) Instance de serveur unique et 1000 clients ==> Combien de websockets seront créés et combien de connexions aux websockets?

Identique au point # 2.

Comment évoluez-vous avec les Webscokets lorsque votre application compte 1 000 utilisateurs?

Un serveur unique, configuré de manière appropriée, peut gérer des centaines de milliers de connexions WebSocket simultanées qui sont pour la plupart inactives car un WebSocket inactif n'utilise pratiquement pas de CPU de serveur. Pour des déploiements encore plus importants, on peut regrouper le serveur (exécuter plusieurs processus serveur) et utiliser un équilibrage de charge permanent pour répartir la charge.

Il existe de nombreux autres articles comme ceux-ci sur Google qui méritent d'être lus si vous poursuivez des déploiements à grande échelle sur webSocket ou socket.io:

La route vers 2 millions de connexions Websocket à Phoenix

600k connexions websockets simultanées sur AWS à l'aide de Node.js

10 millions de webSockets simultanés

En fin de compte, l'échelle réalisable par un serveur correctement configuré aura probablement plus à voir avec la quantité d'activité par connexion et la quantité de calcul nécessaire pour fournir cela.

25
jfriend00