在現代網路應用程式中,如何提升內容分發效能、優化全球使用者體驗,同時確保高可靠性和安全性,是開發者和架構師必須關注的核心問題。 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 的全球基礎設施為各種場景提供了靈活、可靠的解決方案。結合這些服務,可以顯著提高應用程式的效能、擴展能力和全球可用性,從而滿足現代業務對低延遲、高可用的嚴格要求。