译自:Choosing the Right Transport Protocol: TCP vs. UDP vs. QUIC 作者:Ron Northcutt
一个决策框架,它分解了各种协议的优缺点和理想用例,以帮助用户为其系统选择合适的协议。
我们常常认为协议选择纯粹是一个技术决策,但它对用户体验和应用程序的消费方式至关重要。这是一个高影响力的业务决策,因此技术团队首先必须了解业务状况和优先级。
选择合适的传输协议——TCP、UDP 或 QUIC——会深刻影响可扩展性、可靠性和性能。这些协议的功能就像不同的邮政服务,每种服务都提供了一种独特的跨网络传递消息的方法。您的平台应该优先考虑挂号信的可靠性、上门投递的速度,还是带有签收确认的快递包裹的创新性?
此决策框架分解了TCP、UDP和QUIC的优势、劣势和理想用例。它为平台工程师和架构师提供了选择适合其系统的协议的见解。
大多数工程师都熟悉 TCP,并且听说过 UDP。有些人甚至有使用 QUIC 的实践经验。但是,为了做出正确的选择,在深入决策框架之前,最好先了解这些协议的比较情况。
TCP(传输控制协议)是可靠地保持稳定连接的同时发送数据的传统方式。它确保每个数据包都能按顺序且无损坏地到达目的地。
例如,下载文件时,TCP 确保每个字节都被送达。如果数据包丢失,TCP 将请求重传,然后在收到丢失的数据包后重新组装它们,这使其非常适合数据完整性至关重要的应用程序。互联网最初是建立在 TCP 之上的,它为早期协议(如 HTTP/1.0 和 FTP)提供支持,并且长期以来一直是领先的协议。
UDP(用户数据报协议) 追求速度和简单性。它跳过交付保证,而是专注于尽可能快地发送数据包。这种速度是有代价的,但在正确的情况下,它是值得的。
在低延迟至关重要且某些数据丢失是可以接受的情况下,UDP 非常出色——例如直播体育比赛,丢失一两帧并不致命。只要大部分数据被送达就可以了。
QUIC(快速 UDP 互联网连接) 是一个新兴技术,旨在将 UDP 的速度与更高的可靠性、安全性以及效率相结合。它是 HTTP/3 的基础,并针对延迟敏感型应用程序进行了优化。其最重要的功能之一是即使用户切换网络(例如从 Wi-Fi 切换到移动数据)也能保持连接的能力。
QUIC 集成到 HTTP/3 中,使其成为改变 Web 性能的游戏规则改变者,它减少了延迟和连接开销,同时提高了安全性。
在决定合适的传输协议时,请考虑应用程序的特定需求。这些可以分为四个主要方面。
对于那些不允许出现数据包丢失或损坏的应用程序来说,TCP 或 QUIC 是最佳选择。例如,金融应用程序或电子商务平台依赖于完整且准确的数据交付来维护交易完整性。这两种协议都同样可靠。
TCP 确保每个数据包都能按预期到达目的地,尽管会增加一些延迟。这是一个非常安全的选择。在可靠性至关重要但性能和低延迟也是优先考虑因素的情况下,QUIC 提供了一个极好的折中方案。
当低延迟优先于一切时,UDP 成为首选协议。像视频会议这样的应用程序,其中实时数据传输至关重要,通常依赖于 UDP。丢失一两个帧对于保持流畅和不间断的流来说是可以接受的权衡。
QUIC 由于减少了连接开销而比 TCP 快,但它在 UDP 之上添加了加密和可靠性机制,这会引入处理开销。
QUIC 对于需要速度、可靠性和强大安全性的用例尤为突出。利用 HTTP/3 的现代 Web 应用程序受益于 QUIC 的低延迟连接和内置加密,这使其对移动用户或网络状况不可靠的环境特别有价值。
UDP 的计算开销非常低,因为它缺乏复杂的纠错机制,而 TCP 的计算需求中等。QUIC 的计算需求高于 TCP 和 UDP,这主要是由于强制加密和高级拥塞控制功能。
此时决定协议应该很容易,但最好提出一些问题来帮助确认选择。在与利益相关者或决策者交谈以验证您的选择时,这些问题特别有用。
很明显的一点是,QUIC 似乎提供了一种“集所有优点于一身”的解决方案。事实上,它正在改变工程师对传输协议的思考方式。谷歌和 Cloudflare 等主要参与者已经有效地利用了 QUIC。作为 HTTP/3 的核心,QUIC 比 TCP 更快,并且包含加密。
然而,采用 QUIC 也并非没有挑战。较旧的系统和工具可能需要更新才能完全支持它。依赖于 TCP 的遗留平台需要仔细评估过渡的成本和努力。请记住,互联网是建立在 TCP 之上的,并且长期以来一直是标准。
同时,紧跟 QUIC 等进步不仅仅是赶上潮流。这是为了使您的平台面向未来。如果您能为 QUIC 提出理由,那么这是一项将长期持续回报的投资。
选择最佳传输协议决定了您的平台如何为其用户提供价值,就像选择最佳方法来发送重要消息一样。TCP 的认证可靠性、UDP 的速度或 QUIC 的现代效率在工程工具包中各有其位置。HAProxy Enterprise 支持所有这些协议及更多协议,并具有业界领先的性能和可靠性。
评估您当前的系统,以确保您正在为平台的特定需求优化协议选择。通过理解和应用这些框架,您将能够更好地设计强大的、可扩展的架构,以应对当今的挑战和未来的机遇。