TCP与UDP用于实时聊天推荐引擎?

时间:2016-07-12 07:45:18

标签: networking tcp udp real-time recommendation-engine

我正在构建一个聊天应用程序,用户每次按键都会被发送到服务器。在服务器上,基于nlp的推荐引擎根据该时间点的键入消息的上下文生成推荐。

对于大规模部署,TCP和UDP之间的连接类型最好。 UDP速度快但不可靠,而可靠的TCP实时可能很慢。例如:用户键入单词“嘿,让我们观看”并快速清除文本框,在清除文本框后不应生成电影的推荐。

如果服务器有建议,则应保证将建议发送回客户端。

目标是以低延迟获得实时推荐。哪种类型更可取?

1 个答案:

答案 0 :(得分:0)

如果一次发送的数据大小小于单帧的最大有效负载,则TCP和UDP几乎相同。

在这种情况下,UDP将更加可靠"就实时行为而言,因为数据的处理方式更多。当然,缺点是你必须自己关心TCP会免费提供给你的某些东西。

另一方面,使用TCP,协议栈的TCP层可能会使您的实时要求变得混乱,甚至没有机会对此做任何事情。曾经考虑重新传输(约+ 200ms传输时间),nagle算法(小数据包延迟最多200ms),延迟TCP ACK(可能导致在某些堆栈上重新传输)?如果您有严格的实际要求,那么还有更多库存可供您使用。

我正在开发一个具有20ms时间范围的项目,并使用TCP在此时传输大量数据。即使我们拥有星形架构和实时操作系统,但要使其工作可靠仍然是一个地狱(很多效果都归功于我们使用的以太网芯片smsc91c111)。

总结没有"最佳方式"这样做是因为UDP和TCP都不是实时协议。但由于在它们之间切换相当容易,我建议只测试它并选择最适合的协议。