使用 AWS Global Accelerator 加速应用程序性能:深度解析

借助 AWS Global Accelerator,为您的全球用户释放卓越的应用程序性能和可用性。本次深入探讨将揭示该服务如何使用静态 Anycast IP 和 AWS 全球网络绕过互联网拥堵,从而大幅降低延迟并改善用户体验。了解其架构、增强的容错能力和简化的流量管理等关键优势,以及适用于全球 Web 应用程序、游戏和 IoT 的实际应用场景。了解 Global Accelerator 与 CloudFront 的区别以及实施的最佳实践,助您构建真正全球化的高性能应用程序。

30 浏览量

使用 AWS Global Accelerator 加速应用性能:深度解析

在当今互联的世界中,无论用户身在何处,应用程序都被期望提供无缝、低延迟的体验。传统的网络架构往往难以满足这一需求,从而导致性能瓶颈、用户不满和业务机会的流失。Amazon Web Services (AWS) Global Accelerator 应运而生,成为解决这些挑战的强大方案,它能显著增强全球用户访问应用程序的可用性和性能。

本文将全面探讨 AWS Global Accelerator。我们将深入研究其独特的架构,了解它如何利用 AWS 全球网络来优化流量,并审视其主要优势。此外,我们还将讨论常见用例,将其与 CloudFront 等其他 AWS 服务区分开来,并提供其实施方面的实用见解,帮助您在全球范围内提供卓越的应用性能。

全球性挑战:延迟与应用性能

随着应用程序的分布式程度越来越高,并为跨大洲的用户提供服务,用户与应用程序服务器之间的物理距离成为一个关键因素。数据以光速传播,但在公共互联网上传输涉及许多跳数、不同的网络条件和潜在的拥堵点。这可能导致:

  • 高延迟:数据从用户传输到应用程序并返回所需的时间,直接影响响应能力。
  • 数据包丢失:数据包未能到达目的地,需要重新传输,从而进一步增加延迟。
  • 抖动:数据包到达时间的可变性,这对 VoIP 或游戏等实时应用尤其不利。

传统方法,例如简单地在区域负载均衡器后部署多个区域的实例,可以带来一些改进,但仍需将用户流量通过通常不可预测的公共互联网进行初始连接。这就是 Global Accelerator 等服务提供显著优势的地方。

什么是 AWS Global Accelerator?

AWS Global Accelerator 是一项网络服务,可提高您的应用程序对本地和全球用户的可用性和性能。它通过将用户流量引导至 最近的健康端点,并通过高可靠、高性能的 AWS 全球网络骨干 进行传输来实现这一目标。Global Accelerator 不通过公共互联网路由流量,而是利用 AWS 庞大的网络基础设施来优化从用户边缘站点到应用程序端点的路径。

从根本上讲,Global Accelerator 为您提供 静态任播 IP 地址,作为您应用程序的固定入口点。这些 IP 地址在全球多个 AWS 边缘站点上通告。当用户连接时,其流量会自动导向最近的边缘站点,然后从那里通过优化的 AWS 私有网络到达指定的应用程序端点。

AWS Global Accelerator 的工作原理:架构与关键概念

要理解 Global Accelerator 背后的魔力,让我们分解其基本组件及其相互作用:

任播 IP 地址

与仅在单个服务器上唯一的传统单播 IP 地址不同,Global Accelerator 提供 两个静态任播 IP 地址。这些 IP 地址同时在全球多个 AWS 边缘站点上通告。当用户尝试使用这些 IP 地址连接到您的应用程序时,互联网上的网络路由器会将他们的流量引导至通告该地址的最近边缘站点。这确保用户始终连接到地理位置上靠近他们的 AWS PoP(存在点)。

AWS 全球网络骨干

Global Accelerator 的真正强大之处在于它利用了 AWS 全球网络。一旦用户流量通过静态任播 IP 到达 AWS 边缘站点,它就会通过 AWS 高速、低延迟的私有光纤网络传输到最佳应用程序端点。这绕过了公共互联网不可预测的特性,带来了更一致的性能、更低的抖动和更短的延迟。

边缘站点(存在点 - PoPs)

这些是地理上分布的数据中心,作为用户流量进入和离开 AWS 全球网络的入口和出口点。Global Accelerator 利用这些 PoP 来高效接收用户的传入连接并转发它们。

流量优化与健康检查

Global Accelerator 会持续监控应用程序端点的运行状况以及到这些端点的网络路径的性能。它不仅智能地将流量路由到地理上最近的端点,而且路由到提供最佳性能的最近健康端点。这包括考虑网络拥塞、端点健康状况和延迟测量。如果端点出现不健康或网络路径退化,Global Accelerator 会自动重新路由流量,确保高可用性和容错能力。

监听器、端点组和端点

  • 监听器 (Listeners):它们定义了 Global Accelerator 接受客户端传入连接的端口和协议(TCP/UDP)。
  • 端点组 (Endpoint Groups):一个端点组与一个特定的 AWS 区域相关联。您可以拥有多个端点组,每个端点组对应您的应用程序资源所在的区域。您还可以为每个组配置一个“流量拨盘”,以控制导向该组的流量百分比。
  • 端点 (Endpoints):这些是实际提供您的应用程序的资源。Global Accelerator 支持各种类型的端点,包括:
    • 应用程序负载均衡器 (ALBs)
    • 网络负载均衡器 (NLBs)
    • EC2 实例
    • 弹性 IP 地址
    • VPC 资源(例如,位于 VPC 内私有 IP 地址后面的资源)。

使用 AWS Global Accelerator 的主要优势

利用 Global Accelerator 为您的全球应用程序带来以下几个引人注目的优势:

  1. 提升性能和减少延迟:通过在 AWS 全球网络骨干上传输流量,Global Accelerator 显着减少了用户体验到的延迟和抖动,从而使应用程序更快速、响应更灵敏。
  2. 提高可用性和容错能力:通过自动健康检查和智能流量路由,Global Accelerator 确保用户请求始终被导向健康的端点。如果整个区域或端点组发生故障,流量会自动重新路由到另一个区域中性能最佳的下一个可用健康端点。
  3. 使用静态 IP 简化流量管理:Global Accelerator 提供的两个静态任播 IP 地址永远不会改变。这简化了 DNS 配置和客户端集成,消除了在应用程序底层端点更改或移动时更新 DNS 记录或客户端配置的需要。
  4. 增强安全性:到达 Global Accelerator 的流量受益于 AWS Shield Standard 在边缘的 DDoS 防护,有助于保护您的应用程序免受常见的网络层攻击。
  5. 用于加权路由的流量拨盘:您可以使用流量拨盘来控制导向不同区域端点组的流量百分比。这非常适合 A/B 测试、蓝/绿部署或计划维护。

常见用例

AWS Global Accelerator 非常适合需要为全球受众提供高性能和高可用性的各种应用程序:

  • 全球 Web 应用程序:电子商务网站、内容分发平台、用户遍布多个大洲的 SaaS 应用程序。
  • 游戏服务器:减少延迟并改善在线多人游戏的响应体验。
  • VoIP 和实时通信:确保视频会议和语音通话连接稳定、低延迟。
  • IoT 后端:为大量地理位置分散的 IoT 设备提供一致的低延迟连接以发送数据。
  • 灾难恢复:通过在多个区域维护端点,Global Accelerator 可以在发生中断时无缝故障转移到健康的区域,支持强大的灾难恢复策略。

设置 AWS Global Accelerator(概念步骤)

设置 Global Accelerator 涉及定义入口点并将其指向您应用程序的资源。

  1. 创建加速器 (Accelerator):这是生成您的两个静态任播 IP 地址的顶级资源。
  2. 添加监听器 (Listeners):配置加速器将监听传入客户端连接的端口和协议(例如,TCP 80、TCP 443、UDP 53)。
  3. 创建端点组 (Endpoint Groups):为应用程序具有端点的每个 AWS 区域创建一个端点组。您可以调整“流量拨盘”(导向此组的流量百分比)并配置特定于此组的健康检查设置。
  4. 添加端点 (Endpoints):在每个端点组内,添加您的应用程序资源(ALB、NLB、EC2 实例、EIP)。您可以为单个端点指定权重,以在端点组内部进一步分配流量。
# AWS CLI 中的概念步骤(简化版)

# 1. 创建加速器
aws globalaccelerator create-accelerator \
    --name MyGlobalAppAccelerator \
    --ip-address-type IPV4 \
    --enabled

# 2. 创建一个监听器(例如,用于 HTTP)
aws globalaccelerator create-listener \
    --accelerator-arn <accelerator-arn> \
    --port-ranges FromPort=80,ToPort=80 \
    --protocol TCP \
    --client-affinity NONE

# 3. 创建一个端点组(例如,在 us-east-1 中)
aws globalaccelerator create-endpoint-group \
    --accelerator-arn <accelerator-arn> \
    --listener-arn <listener-arn> \
    --endpoint-group-region us-east-1 \
    --traffic-dial-percentage 100 \
    --health-check-port 80 \
    --health-check-protocol HTTP \
    --health-check-path /health

# 4. 向组中添加一个端点(例如,一个 ALB)
aws globalaccelerator add-endpoints \
    --endpoint-group-arn <endpoint-group-arn> \
    --endpoint-configurations EndpointId=<your-alb-arn>,Weight=100

提示:始终使用两个静态 IP 地址以确保冗余。Global Accelerator 会自动分配它们。

警告:确保您的安全组和网络 ACL 允许来自 Global Accelerator 健康检查 IP 范围和客户端 IP 的流量到达您的端点。

AWS Global Accelerator 与 Amazon CloudFront 对比

尽管这两项服务都利用 AWS 全球网络和边缘站点来提高性能,但它们服务于不同的主要目的:

特性 AWS Global Accelerator Amazon CloudFront
主要目标 提高应用程序(TCP/UDP)的网络性能可用性 提高内容交付性能(HTTP/HTTPS)
层级 第 4 层(TCP、UDP)和第 7 层(通过 ALB 的 HTTP、HTTPS) 第 7 层(HTTP、HTTPS)
静态 IP 是,两个全局静态任播 IP 地址 否,使用变化的 DNS 记录进行边缘分发
缓存 是,在边缘站点缓存内容
用例 游戏、VoIP、API、持久连接、动态内容 静态网站、视频流、可下载内容
端点类型 ELB、EC2 实例、EIP、VPC S3 存储桶、EC2 实例、ELB、任何 HTTP 服务器

何时使用哪个?

  • 当您需要提高不可缓存内容、API、游戏或任何需要在区域间建立持久连接或低延迟 TCP/UDP 流量的应用程序的性能和可用性时,请使用 Global Accelerator
  • 当您需要以低延迟向用户交付可缓存的静态或动态内容(图像、视频、Web 文件)时,请使用 CloudFront,这通常适用于传统的 Web 应用程序。

两者结合使用也很常见:使用 CloudFront 缓存静态内容,并使用 Global Accelerator 来优化到应用程序动态 API 后端的网络路径。

最佳实践与注意事项

  • 健康检查:配置能够准确反映应用程序端点运行状况的可靠健康检查。这对 Global Accelerator 将流量正确路由到非健康实例之外至关重要。
  • 流量拨盘:利用流量拨盘进行受控部署(例如,将流量逐步转移到一个新区域或版本)和灾难恢复场景。
  • 监控和日志记录:将 Global Accelerator 与 CloudWatch 和 CloudTrail 集成,以监控性能指标、流量和 API 调用。这有助于理解使用模式和进行故障排除。
  • 安全组/NACL:确保后端资源(ALB、EC2)上的网络配置允许来自 Global Accelerator 健康检查探测和来自客户端 IP(如果启用了客户端 IP 保留或受支持,则来自 Global Accelerator 的 IP 范围)的传入流量。
  • 成本管理:了解定价模型,该模型基于预置的加速器数量和数据传出量。优化端点使用以有效管理成本。

结论

AWS Global Accelerator 是一项强大且必不可少的服务,适用于任何旨在向全球用户群提供高性能、高可用性应用程序的组织。它通过抽象化互联网路由的复杂性并利用强大的 AWS 全球网络,以更低的延迟和增强的容错能力,提供了卓越的用户体验。了解其架构、主要优势以及它如何与其他 AWS 服务(如 CloudFront)互补,使架构师和开发人员能够构建更具弹性、响应更快的全球应用程序,确保全球用户始终享有高质量的交互体验。

采用 Global Accelerator,将您应用程序的覆盖范围和性能提升到一个新的水平,确保用户始终连接到最佳体验。