2016-07-12 1 views
-1

Je construis une application de chat, où chaque pression de touche de l'utilisateur est envoyée au serveur. Sur le serveur, un moteur de recommandation basé sur nlp génère des recommandations basées sur le contexte du message tapé à ce moment-là.TCP vs UDP pour le moteur de recommandation de chat en temps réel?

Pour le déploiement à grande échelle, quel type de connexion serait préférable entre TCP et UDP. UDP est rapide mais peu fiable, tandis que TCP, étant fiable, peut être lent en temps réel. Par exemple: Un utilisateur tape les mots "Hey, permet de regarder" et efface rapidement la zone de texte, la recommandation d'un film ne doit pas être générée après avoir effacé la zone de texte.

Si le serveur a une recommandation, il devrait être garanti de remettre la recommandation au client.

L'objectif est d'obtenir une recommandation en temps réel avec une faible latence. Quel type serait le plus préférable?

+0

Lorsqu'il s'agit d'interagir avec un dactylographe/lecteur humain, la différence de latence est un point discutable. –

Répondre

0

TCP et UDP sont presque identiques si la taille des données envoyées à la fois est inférieure à la charge utile maximale d'une seule trame.

Dans ce cas, UDP sera plus "fiable" en termes de comportement en temps réel, car il est plus à portée de main comment les données sont traitées. L'inconvénient est bien sûr que vous devez prendre soin de certaines choses que TCP vous donnera gratuitement. En revanche, avec le protocole TCP, la couche TCP de la pile de protocoles peut réduire vos besoins en temps réel et vous n'avez même pas la moindre chance de faire quoi que ce soit à ce sujet. Avez-vous déjà pensé à des retransmissions (environ + 200 ms de temps de transmission), un algorithme de nagle (les petits paquets sont retardés jusqu'à 200 ms), des TCP ACK retardés (peuvent provoquer des retransmissions sur certaines piles)? Et il y en a beaucoup plus en stock pour vous si vous avez des exigences réelles.

Je travaille sur un projet qui a une durée de 20ms et qui transmet beaucoup de données en utilisant TCP. Même si nous avons une architecture en étoile et des systèmes d'exploitation en temps réel, c'est un enfer pour que cela fonctionne (bon nombre d'effets sont dus à l'un de nos puces Ethernet utilisées, le smsc91c111). En conclusion, il n'y a pas de "meilleure façon" de faire de telles choses puisque ni UDP ni TCP ne sont des protocoles en temps réel. Mais comme il est assez facile de basculer entre eux, je recommande simplement de le tester et de choisir le protocole qui fonctionne le mieux.

+0

Aucun utilisateur ne remarquera une latence de 20 ms dans une application de discussion. –

+0

@RonMaupin Oui c'est vrai mais 200ms sont perceptibles. Le 20ms est juste un exemple et une application de chat n'aura pas de telles exigences strictes en temps réel que j'ai dans mon projet. –

+0

VoIP temps réel est bien jusqu'à plus de 250 ms. Je ne peux pas voir que quelqu'un pourrait taper un message, attendre une réponse, et notez que le réseau a retardé la réponse de 200 ms quand cela prendra beaucoup plus de temps pour que l'autre partie lise puis tape une seule lettre. –