PERF04-BP05 选择网络协议以提高性能 - AWS Well-Architected 框架

PERF04-BP05 选择网络协议以提高性能

根据对工作负载性能的影响,做出有关系统与网络之间的通信协议的决策。

延迟和带宽之间的关系可以实现高吞吐量。如果文件传输使用传输控制协议(TCP),则延迟越高,整体吞吐量很可能越低。有一些方法可以使用 TCP 调整和优化的传输协议来解决此问题,但一种解决方案是使用用户数据报协议(UDP)。

常见反模式:

  • 无论有怎样的性能要求,您都可以为所有工作负载使用 TCP。

建立此最佳实践的好处:确认已为用户和工作负载组件之间的通信使用适当的协议,有助于改善应用程序的整体用户体验。例如,无连接 UDP 虽然允许较高速度,但不提供重新传输或高可靠性。TCP 虽然是一个功能全面的协议,但它在处理这些数据包时需要较高的开销。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

如果您能够为应用程序选择不同的协议,并且具有该领域的专业知识,请使用不同的协议来优化您的应用程序和最终用户体验。请注意,这种方法难度很大,只有在先用其他方法优化了应用程序后才能尝试。

提高工作负载性能的主要考虑因素是了解延迟和吞吐量要求,然后选择可优化性能的网络协议。

何时考虑使用 TCP

TCP 提供可靠的数据传输,并可用于工作负载组件之间的通信,在这种情况下,可靠性和有保证的数据传输很重要。许多基于 Web 的应用程序依赖基于 TCP 的协议(例如 HTTP 和 HTTPS)来打开 TCP 套接字,以便在应用程序组件之间进行通信。电子邮件和文件数据传输也是使用 TCP 的常见应用,因为它是应用程序组件之间简单可靠的传输机制。在 TCP 之上使用 TLS 会增加一些通信开销,进而会导致延迟增加和吞吐量降低,但它也有安全方面的优势。该开销主要来自握手过程(需要多次往返才能完成)的额外开销。握手完成后,加密和解密数据的开销相对较小。

何时考虑使用 UDP

UDP 是一种面向无连接的协议,因此适用于需要快速、高效传输的应用,例如日志、监控和 VoIP 数据。此外,如果您的工作负载组件要响应来自大量客户端的小型查询,以确保工作负载实现最佳性能,则可考虑使用 UDP。数据报传输层安全性(DTLS)是传输层安全性协议(TLS)的 UDP 等效项。在 UDP 上使用 DTLS 时,因为简化了握手过程,所以开销来自加密和解密数据。因为 DTLS 包括额外的字段,用于指明安全性参数和检测篡改,所以它也会给 UDP 数据包增加少量的开销。

何时考虑使用 SRD

可扩展的可靠数据报(SRD)是一种针对高吞吐量工作负载而优化的网络传输协议,因为它能够跨多条路径对流量进行负载均衡,并能在发生丢包或链路故障时快速恢复。因此,SRD 非常适合在计算节点之间需要高吞吐量、低延迟通信的高性能计算(HPC)工作负载。这可能包括并行处理任务(例如,涉及在节点间进行大量数据传输的模拟、建模和数据分析)。

实施步骤

  • 使用 AWS Global AcceleratorAWS Transfer Family 服务提高在线文件传输应用程序的吞吐量。AWS Global Accelerator 服务帮助您在客户端设备与 AWS 上的工作负载之间实现更低延迟。借助 AWS Transfer Family,您可以使用基于 TCP 的协议 [安全外壳文件传输协议(SFTP)和基于 SSL 的文件传输协议(FTPS)] 安全地扩展和管理发送到 AWS 存储服务的文件传输。

  • 使用网络延迟来确定 TCP 是否适合工作负载组件之间的通信。如果客户端应用程序和服务器之间的网络延迟很高,则 TCP 三次握手需要一些时间,因而会影响应用程序的响应能力。可以使用第一个字节的时间(TTFB)和往返时间(RTT)等指标来衡量网络延迟。如果工作负载向用户提供动态内容,则考虑使用 Amazon CloudFront,因为该服务会为动态内容建立到每个源的持久连接,以便减少连接设置时间,避免减慢每个客户端请求的速度。

  • 由于在 TCP 或 UDP 上使用 TLS 会影响加密和解密,从而导致工作负载的延迟增加和吞吐量降低。对于此类工作负载,请考虑使用弹性负载均衡上的 SSL/TLS 分流,使负载均衡器能够处理 SSL/TLS 加密和解密过程,而不是让后端实例来处理,从而提高工作负载性能。这可以帮助降低后端实例上的 CPU 利用率,进而可以提高性能并增加容量。

  • 使用网络负载均衡器(NLB)来部署依赖 UDP 协议的服务(例如,身份验证和授权、日志记录、DNS、IoT 和串流媒体),以便提高工作负载的性能和可靠性。NLB 在多个目标之间分配传入的 UDP 流量,使您可以横向扩展工作负载、提高容量和减少单个目标的开销。

  • 对于高性能计算(HPC)工作负载,可以考虑使用弹性网络适配器(ENA)Express 功能。该功能使用 SRD 协议,通过为 EC2 实例之间的网络流量提供更高的单流带宽(25 Gbps)和更低的尾部延迟(99.9%)来提高网络性能。

  • 使用应用程序负载均衡器(ALB)对工作负载组件之间或 gRPC 客户端与服务之间的 gRPC(远程过程调用)流量进行路由和负载均衡。gRPC 使用基于 TCP 的 HTTP/2 协议进行传输,也可带来性能优势,例如更少的网络占用、压缩、高效的二进制序列化、支持众多语言以及双向流式传输。

资源

相关文档:

相关视频:

相关示例: