在现代互联网应用程序中,如何提升内容分发性能、优化全球用户体验,同时确保高可靠性和安全性,是开发者和架构师必须关注的核心问题。AWS 提供了两项强大的全球服务——CloudFront 和 Global Accelerator,它们通过不同的工作机制满足了多样化的需求。从内容分发网络(CDN)到跨区域的快速流量路由,这两项服务在优化性能和应对灾难恢复方面展现出独特的优势。
AWS CloudFront
- 全球服务。
- AWS CloudFront 是一个CDN(内容分发网络)。
- 提高读取性能,内容缓存在边缘,减少原点的负载。
- 全球 216 个接入点(边缘位置)。
- DDoS 保护(因为是全球性的)、与 Shield、AWS Web 应用程序防火墙集成。
- 边缘位置位于 VPC 之外,因此必须配置原点的 SG 以允许来自所有边缘位置的公共 IP 列表的入站请求。
- 支持HTTP/RTMP协议(不支持UDP协议)。
- 地理限制功能。
- 提高可缓存内容(如图像和视频)和动态内容(如 API 加速和动态站点交付)的性能。
- 要在 CloudFront 级别阻止特定 IP,请在 CloudFront 上部署 WAF。
- 支持服务器名称指示 (SNI)以允许 SSL 流量到多个域。
CloudFront – 起源
S3 存储桶
- 用于分发文件并将其缓存在边缘位置。
- 源访问身份 (OAl) 或源访问控制 (OAC)允许 S3 存储桶仅由 CloudFront 访问
- OAC 正在取代 OIA(原始访问标识)。
- CloudFront 可用作入口(将文件上传到 S3)。
自定义来源 (HTTP)
- 需要通过边缘位置的公共 IP 在 HTTP 上公开访问
- EC2 实例
- 紧急负载平衡
- S3 网站(可能包含客户端脚本)
- 本地后端
CloudFront – 地理限制
- 您可以限制谁可以访问您的分发。
- 允许列表:仅当您的用户位于批准国家/地区列表中的国家/地区之一时才允许您的用户访问您的内容。
- 阻止列表:如果您的用户位于被禁国家/地区列表中的国家/地区,则阻止他们访问您的内容。
- “国家”是使用第三方 Geo-IP 数据库确定的。
- 用例:版权法控制内容访问。
CloudFront 与 S3 跨区域复制
CloudFront
- 全球边缘网络
-
-
- 文件缓存的 TTL(可能是一天)
- 非常适合必须在任何地方都可用的静态内容)
-
S3 跨区域复制
- 必须为要进行复制的每个区域进行设置
-
-
- 文件几乎实时更新
- 只读
- 非常适合需要在少数地区以低延迟提供的动态内容
-
- CloudFront 是一个 CDN,用于缓存世界各地的内容。而 S3 跨区域复制实际上是将整个存储桶复制到另一个区域。
CloudFront – 定价
- CloudFront 边缘站点遍布世界各地。
- 每个边缘位置的数据输出成本各不相同。
CloudFront – 价格类别
- 您可以减少边缘位置的数量以降低成本。
- 三个价格等级:
- 价格等级全部:所有地区 – 最佳表现
- 价格等级 200:大多数地区,但不包括最昂贵的地区。
- 价格等级 100:仅最便宜的地区。
CloudFront – 缓存失效
- 如果您更新后端原点,CloudFront 并不知道这一点,并且仅在 TTL 过期后才会获取刷新的内容。
- 但是,您可以通过执行 CloudFront 失效来强制整个或部分缓存刷新(从而绕过 TTL)。
- 您可以使所有文件 (*) 或特殊路径 (/images/*) 无效。
AWS 全球加速器
单播 IP VS 任播 IP
- 单播IP:一台服务器拥有一个IP地址。
- 任播 IP:所有服务器都拥有相同的 IP 地址,客户端被路由到最近的服务器。
全球加速器
- 全球服务。
- 提高应用程序对全球用户的可用性
- 利用私有 AWS 网络将请求路由到应用程序(更快)
工作机制
- 为您的应用程序在全球范围内创建2 个任播公共 IP(静态) 。来自这些 IP 的客户端的请求将自动路由到最近的边缘站点。边缘站点通过私有 AWS 网络将流量发送到您的应用程序。
- 流量拨号用于控制定向到端点组(部署应用程序的 AWS 区域)的流量百分比
- 端点权重用于确定定向到端点组中端点的流量比例
灾难恢复
- Global Accelerator为应用程序执行健康检查
- 不到 1 分钟即可对不健康端点进行故障转移
安全
- 客户端只需将 2 个静态 IP 列入白名单
- 可以与AWS Shield 集成以实现 DDoS保护
AWS Global Accelerator 与 CloudFront 对比
- 它们都使用 AWS 全球网络及其遍布全球的边缘站点。
- 这两种服务都与 AWS Shield 集成以提供 DDoS 防护。
-
CloudFront
- 提高可缓存内容(如图像和视频)的性能。
- 动态内容(例如 API 加速和动态站点交付)。
- 内容在边缘提供。
-
AWS 全球加速器
- 提高 TCP 或 UDP 上各种应用程序的性能。
- 将边缘数据包代理到在一个或多个 AWS 区域中运行的应用程序。
- 非常适合非 HTTP 用例,例如游戏(UDP)、物联网(MQTT)或 IP 语音。
- 适用于需要静态 IP 地址的 HTTP 用例。
- 适用于需要确定性、快速区域故障转移的 HTTP 用例。
无论是需要高效缓存静态内容的 CloudFront,还是需要快速区域故障转移和静态 IP 地址支持的 Global Accelerator,AWS 的全球基础设施为各种场景提供了灵活、可靠的解决方案。结合这些服务,可以显著提高应用程序的性能、扩展能力和全球可用性,从而满足现代业务对低延迟、高可用的严格要求。


