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

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)工作负载。这可能包括并行处理任务(例如,涉及在节点间进行大量数据传输的模拟、建模和数据分析)。

实施步骤

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

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

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

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

  5. 对于高性能计算(HPC)工作负载,考虑使用 弹性网络适配器(ENA)Express 功能,它使用 SRD 协议为 EC2 实例之间的网络流量提供更高的单流带宽(25Gbps)和更低的尾延迟(99.9 百分位数),从而提高网络性能。

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

资源

相关文档:

相关视频:

相关示例: