Uber等后端服务的典型系统设计图涉及到客户端的代理和web套接字服务器连接。
我很好奇为什么这些现代网页设计只考虑网页套接字(和长轮询)。如果对移动应用程序的位置更新服务的需求是不断地将位置更新推送到服务器,那么为什么人们不屏蔽iOS客户端和服务器之间的自定义tcp或udp连接呢?
Tcp连接实际上是websockets在幕后使用的,但是使用原始TCP连接,您可以利用更多成熟的库(Netty、Kernel-bypass、FPGA)。
Udp看起来更好,因为它是无状态的,并且在断开连接时可以恢复。如果它是一个单向的位置更新流,它似乎可以很好地服务于目的。
有什么想法?
发布于 2020-09-04 03:21:23
使用Websockets的要点是,它可以很好地处理现有的防火墙、代理和其他限制。在仅允许访问web和邮件的受限网络中使用设备并不少见。它还提供了消息语义(TCP只是一个字节流),且对TLS支持也被很好地集成,这一点也很好。虽然“原始”TCP的开销可能较小,但Websockets的实际开销相当小。通常,非二进制有效负载(即JSON、XML)的开销要高得多,这使得Websockets的额外小开销变得无关紧要。
https://stackoverflow.com/questions/63727943
复制相似问题