PERF05-BP05 选择网络协议以提高性能
评估工作负载的性能要求,并选择可优化工作负载整体性能的网络协议。
延迟和带宽之间的关系可以实现高吞吐量。例如,如果文件传输使用传输控制协议(TCP),则延迟越高,整体吞吐量越低。有一些方法可以使用 TCP 调整和优化的传输协议来解决此问题,有些方法则使用用户数据报协议(UDP)。
可扩展的可靠数据报(SRD)
常见反模式:
-
无论有怎样的性能要求,都为所有工作负载使用 TCP。
建立此最佳实践的好处:
-
为工作负载组件之间的通信选择适当的协议,可确保您获得该工作负载的最佳性能。
-
确认已为用户和工作负载组件之间的通信使用适当的协议,有助于改善应用程序的整体用户体验。例如,同时使用 TCP 和 UDP,让 VDI 工作负载可以利用 TCP 对关键数据的可靠性以及 UDP 对实时数据的速度。
在未建立这种最佳实践的情况下暴露的风险等级:中等(使用不适当的网络协议会导致性能不佳,例如响应速度慢、延迟高和可扩展性差)
实施指导
提高工作负载性能的主要考虑因素是了解延迟和吞吐量要求,然后选择可优化性能的网络协议。
何时考虑使用 TCP
TCP 提供可靠的数据传输,并可用于工作负载组件之间的通信,在这种情况下,可靠性和有保证的数据传输很重要。许多基于 Web 的应用程序依赖基于 TCP 的协议(例如 HTTP 和 HTTPS)来打开 TCP 套接字,以用于与 AWS 上的服务器通信。由于 TCP 能够控制数据交换速率和网络拥塞,所以电子邮件和文件数据传输是也可以使用 TCP 的常见应用。在 TCP 之上使用 TLS 会对通信增加一些开销,进而会导致延迟增加和吞吐量降低。该开销主要来自握手过程(需要多次往返才能完成)的额外开销。握手完成后,加密和解密数据的开销相对较小。
何时考虑使用 UDP
UDP 是一种面向无连接的协议,因此适用于需要快速、高效传输的应用,例如日志记录、监控和 VoIP 数据。此外,如果您的工作负载组件要响应来自大量客户端的小型查询,以确保工作负载实现最佳性能,则可考虑使用 UDP。数据报传输层安全性(DTLS)是 TLS 的 UDP 等效项。在 UDP 上使用 DTLS 时,因为简化了握手过程,所以开销来自加密和解密数据。因为 DTLS 包括额外的字段,用于指明安全性参数和检测篡改,所以它也会给 UDP 数据包增加少量的开销。
何时考虑使用 SRD
可扩展的可靠数据报(SRD)是一种针对高吞吐量工作负载而优化的网络传输协议,因为它能够跨多条路径对流量进行负载均衡,并能在发生丢包或链路故障时快速恢复。因此,SRD 非常适合在计算节点之间需要高吞吐量、低延迟通信的高性能计算(HPC)工作负载。这可能包括并行处理任务(例如,涉及在节点间进行大量数据传输的模拟、建模和数据分析)。
实施步骤
-
使用 AWS Global Accelerator
和 AWS Transfer Family 服务提高在线文件传输应用程序的吞吐量。AWS Global Accelerator 服务帮助您在客户端设备与 AWS 上的工作负载之间实现更低延迟。借助 AWS Transfer Family,您可以使用基于 TCP 的协议 [安全外壳文件传输协议(SFTP)和基于 SSL 的文件传输协议(FTPS)] 安全地扩展和管理到 AWS 存储服务的文件传输。 -
使用网络延迟来确定 TCP 是否适合工作负载组件之间的通信。如果客户端应用程序和服务器之间的网络延迟很高,则 TCP 三次握手需要一些时间,因而会影响应用程序的响应能力。可以使用第一个字节的时间(TTFB)和往返时间(RTT)来衡量网络延迟。如果您的工作负载向用户提供动态内容,请考虑使用 Amazon CloudFront
,它会为动态内容建立到每个源的持久连接,以便减少连接设置时间,要不然会减慢每个客户端请求的速度。 -
由于在 TCP 或 UDP 上使用 TLS 会影响加密和解密,从而导致工作负载的延迟增加和吞吐量降低。对于此类工作负载,请考虑使用 Elastic Load Balancing
上的 SSL/TLS 卸载,允许负载均衡器处理 SSL/TLS 加密和解密过程,而不是让后端实例来处理,从而提高工作负载性能。这可以帮助降低后端实例上的 CPU 利用率,进而可以提高性能并增加容量。 -
使用 Network Load Balancer(NLB)
来部署依赖 UDP 协议的服务(例如,身份验证和授权、日志记录、DNS、IoT 和串流媒体),以便提高工作负载的性能和可靠性。NLB 在多个目标之间分配传入的 UDP 流量,使您可以横向扩展工作负载、提高容量和减少单个目标的开销。 -
对于高性能计算(HPC)工作负载,考虑使用弹性网络适配器(ENA)Express
功能,它使用 SRD 协议为 EC2 实例之间的网络流量提供更高的单流带宽(25Gbps)和更低的尾延迟(99.9 百分位数),从而提高网络性能。 -
使用 Application Load Balancer(ALB)对工作负载组件之间或支持 gRPC 的客户端与服务之间的 gRPC(远程过程调用)流量进行路由和负载平衡。gRPC 使用基于 TCP 的 HTTP/2 协议进行传输,并且它可带来性能优势,例如更少的网络占用、压缩、高效的二进制序列化、支持众多语言以及双向流式传输。
资源
相关文档:
相关视频:
相关示例: