AWS 雲端
開始使用快取

快取是運算中用來存放資料子集的高速資料儲存層,通常是暫時性的,因此未來請求該資料時會比存取資料的主要儲存位置速度更快。快取可讓您有效率地重複使用之前擷取或運算的資料。快取中的資料通常存放在快速存取硬體,例如 RAM (隨機存取記憶體),也可用於與軟體元件相互關聯。快取的主要目的是透過減少存取速度較慢的基礎儲存層的需要,提高資料擷取效能。快取以容量換取速度,通常會短暫地存放資料子集,而資料庫的資料則通常是完整且耐用的。

快取可以應用在各種技術層並發揮其效益,包括作業系統,聯網層包括內容交付網路 (CDN) 和 DNS、Web 應用程式及資料庫。

由於 RAM 和記憶體內引擎支援高請求率或 IOPS (每秒的輸入/輸出操作),快取可大規模提升資料擷取效能和降低成本。若使用傳統資料庫和以磁碟為基礎的硬體支援相同的規模,則需要額外的資源。這些額外的資源不但會提高成本,而且仍無法達到記憶體內快取提供的低延遲效能。

您可以使用快取大幅降低許多高讀取量應用程式工作負載的延遲和改善 IOPS,例如問與答入口網站、遊戲、媒體共享和社交聯網。快取的資訊可以包含資料庫查詢結果、運算密集型計算、API 請求/回應以及 Web 成品,例如 HTML、JavaScript 和映像檔案。操控資料集的運算密集型工作負載 (例如推薦引擎和高效能運算模擬) 也可受益於做為快取的記憶體內資料層。這些應用程式必須能夠在可擴展到數百個節點的機器叢集之間即時存取非常大型的資料集。由於基礎硬體的速度很慢,因此在以磁碟為基礎的存放區操控此資料成為這些應用程式非常大的瓶頸。

在分散式運算環境中,專用快取層可讓系統和應用程式依自己的生命週期與快取分開執行,使其不會對快取造成任何影響。快取可做為中央層,能夠依自己的生命週期和架構拓撲從完全不同的系統進行存取。這非常適合可動態縮減和擴展應用程式節點的系統。如果快取與使用它的應用程式或系統位於相同的節點,擴展可能會影響快取的完整性。此外,使用本機快取時,只有使用該資料的本機應用程式可獲得好處。在分散式快取環境中,資料可以擴展到多個快取伺服器並存放在一個集中的位置,讓使用該資料的所有程式都能獲益。

diagram_cachingmicrosite
層級 用戶端 DNS Web 應用程式 資料庫
使用案例 加快從網站擷取 Web 內容的速度 (瀏覽器或裝置) 網域到 IP 解析 加快從 Web/應用程式伺服器擷取 Web 內容的速度。管理 Web 工作階段 (伺服器端) 加快應用程式效能和資料存取的速度 降低與資料庫查詢請求有關的延遲
技術 HTTP 快取標頭、瀏覽器 DNS 伺服器 HTTP 快取標頭、CDN、反向代理、Web 加速器、鍵值存放區 鍵值資料存放區、本機快取 資料庫緩衝區、鍵值資料存放區
解決方案 瀏覽器特定 Amazon Route 53 Amazon CloudFront適用於 Redis 的 ElastiCache適用於 Memcached 的 ElastiCache合作夥伴解決方案 應用程式架構、適用於 Redis 的 ElastiCache適用於 Memcached 的 ElastiCache合作夥伴解決方案 適用於 Redis 的 ElastiCache適用於 Memcached 的 ElastiCache

實作快取層時,請務必了解快取資料的有效性。成功的快取會產生高命中率,這表示擷取時資料是存在的。當擷取的資料不在快取時,就會發生快取未命中。您可以套用 TTL (存留時間) 等控制以設定資料過期時間。另一個要考慮的項目是快取環境是否需要高可用性,您可以使用 Redis記憶體內引擎滿足這個條件。在某些情況下,可以使用記憶體內層做為獨立資料儲存層,而不是從主要位置快取資料。在這個案例中,請務必針對記憶體內引擎中的資料定義適當的 RTO (復原時間目標 – 從故障復原所花的時間) 和 RPO (復原點目標 – 復原時擷取的最後一個時間點或交易),以判斷是否合適。您可以應用不同記憶體內引擎的設計策略和特點滿足大部分的 RTO 和 RPO 要求。

Amazon ElastiCache 是一種 Web 服務,可在雲端輕鬆地部署、操作和擴展記憶體內資料存放區或快取。這項服務能讓您從快速且受管的記憶體內資料存放區擷取資訊,而不是完全倚賴速度較慢的磁碟型資料庫,從而提高 Web 應用程式的效能。

要了解如何實作有效的快取策略,請參閱這份關於記憶體內快取的技術白皮書。

ElastiCache_Deep_Dive_2016
ElastiCache Deep Dive: Best Practices and Usage Patterns
15
提升應用程式效能

由於記憶體比磁碟 (磁帶或 SSD) 快好幾個數量級,因此從記憶體內快取讀取資料的速度極快 (低於一毫秒)。這個超快速的資料存取功能可提升應用程式的整體效能。

降低資料庫成本

一個快取執行個體可提供數十萬個 IOPS (每秒的輸入/輸出操作),有可能取代多個資料庫執行個體,因此可以降低總成本。如果主要資料庫依輸送量計費,則降低的總成本會更加明顯。在這些情況下,節省的成本幅度可達數十個百分點。

減少負載

透過將大多數讀取負載從後端資料庫重新導向至記憶體內層,快取可減少資料庫的負載,以及避免負載導致的效能降低或甚至是尖峰時刻當機。

可預測的效能

現代應用程式中常見的挑戰是如何處理應用程式用量尖峰。此類範例包括超級盃或選舉期間的社交應用程式、黑色星期五購物節期間的電子商務網站等。增加資料庫負載會導致取得資料的延遲提高,使得應用程式的整體效能無法預測。透過利用高輸送量的記憶體內快取可緩解這個問題。

消除熱點

在許多應用程式中,有一小部分資料子集 (像是名人簡介或熱門產品) 可能存取的頻率比其他資料高。這會導致資料庫出現熱點,而且可能需要依據最常用資料的輸送量需求佈建多餘的資料庫資源。在記憶體內快取存放常用鍵值可減輕過度佈建的需求,而且還可為最常存取的資料提供快速且可預期的效能。

提高輸送量

除了提供較低的延遲,記憶體內系統與效能相當的磁碟資料庫相較之下,還提供相對高出許多的請求率 (IOPS)。做為分散式次要快取的單一執行個體每秒可處理數十萬個請求。

  • 使用案例

    了解各種快取使用案例

    資料庫快取

    資料庫提供的速度和輸送量效能可能是影響應用程式整體效能最大的因素。儘管現在許多資料庫都提供相對優良的效能,但您的應用程式在許多使用案例可能需要的不僅如此。資料庫快取可讓您大幅提高輸送量和降低與後端資料庫相關的資料擷取延遲,進而改善應用程式的整體效能。快取可做為資料庫的鄰接資料存取層,您的應用程式可以使用它來提升效能。資料庫快取層可套用到任何類型的資料庫,包括關聯式資料庫和 NoSQL 資料庫。將資料載入快取的常用技術包括延遲載入和直接寫入方法。如需詳細資訊,按一下這裡。


    CDN

    當您的 Web 流量分散在不同的地理位置時,將整個基礎設施複寫到全球不見得可行,而且絕對不符合經濟效益。CDN 可讓您使用其全球節點網路將 Web 內容的快取副本交付給客戶,像是影片、網頁、影像等。為了縮短回應時間,CDN 會使用離客戶最近的節點或產生請求位置,以縮短回應時間。由於從快取交付 Web 資產,因此可大幅提升輸送量。對於動態資料,可以將許多 CDN 設為從原始伺服器擷取資料。

    Amazon CloudFront 是可加速交付網站、API、影片內容或其他 Web 資產的全球 CDN 服務。這項服務與其他 Amazon Web Services 產品整合,提供開發人員和企業一個簡單的方式加速將內容交付給最終使用者,而且沒有最低使用量限制。要進一步了解有關 CDN 的資訊,按一下這裡。


    DNS

    基本上,網際網路發出的每個網域請求都會查詢 DNS 快取伺服器,以解析與網域名稱關聯的 IP 地址。DNS 快取可在許多層級發生,包括在作業系統上、透過 ISP 和 DNS 伺服器。

    Amazon Route 53 是一種可用性高、可擴展性強的雲端網域名稱系統 (DNS) Web 服務。


    工作階段快取

    HTTP 工作階段包含網站使用者和 Web 應用程式之間交換的使用者資料,例如登入資訊、購物車清單、之前檢視的項目等。透過記住使用者喜好並提供豐富的使用者環境以有效管理 HTTP 工作階段,對提供使用者絕佳的網站體驗至關重要。在現代化應用程式架構使用集中化的工作階段管理資料存放區是理想的解決方案,有以下幾個原因:可在所有 Web 伺服器提供一致的使用者體驗、當您有彈性的 Web 伺服器叢集時可提供更好的工作階段耐久性,以及將工作階段資料複寫到多個快取伺服器時可獲得更高的可用性。

    如需詳細資訊,按一下這裡。


    API

    現在,大多數 Web 應用程式都建置在 API 上。API 通常是可透過 HTTP 存取的 RESTful Web 服務,並可公開資源讓使用者與應用程式互動。設計 API 時,務必要考慮預期的 API 負載、與其相關的授權、版本變更對 API 取用者的影響,以及最重要的 API 易用性等。API 不一定要在每次請求時啟動商業邏輯和/或對資料庫發出後端請求。有時候,提供快取的 API 結果可交付最佳且經濟實惠的回應。如果您能夠以符合基礎資料變更的速率快取 API 回應,則更是如此。舉例來說,您將產品清單 API 公開給使用者,而您的產品類別每天只變更一次。由於每次發出 API 呼叫時一整天的產品類別請求回應都是一樣的,因此只要快取當天的 API 回應就已足夠。透過快取 API 回應,就不會有應用程式伺服器和資料庫等基礎設施的壓力。您也可以從更快的回應時間獲益,以及交付效能更高的 API。

    Amazon API Gateway 是一種全受管的服務,可讓開發人員輕鬆地建立、發佈、維護、監控和保護任何規模的 API。


    混合環境快取

    在混合式雲端環境中,您的應用程式可能在雲端運作,但需要經常存取現場部署資料庫。您可以採用多種網路拓撲來建立雲端和現場部署環境之間的連線能力,包括 VPN 和 Direct Connect。雖然 VPC 與現場部署資料中心之間的延遲可能很低,但在雲端環境快取現場部署資料可能是最佳的選擇,因為可以加速整體資料擷取效能。


    Web 快取

    交付 Web 內容給檢視者時,與擷取 Web 資產 (例如影像、html 文件、影片等) 有關的大部分延遲都可透過快取這些成品和免除磁碟讀取及伺服器負載的方式大幅降低。伺服器和用戶端皆有許多 Web 快取技術可以運用。伺服器端 Web 快取通常和使用 Web 代理有關,它會保留來自其所在 Web 伺服器的 Web 回應,有效地降低負載和延遲。用戶端 Web 快取可包括以瀏覽器為基礎的快取,它會保留先前造訪過的 Web 內容的快取版本。如需有關 Web 快取的詳細資訊,按一下這裡


    一般快取

    從記憶體存取資料的速度比從磁碟或 SSD 存取資料快好幾個數量級,因此利用快取中的資料有許多優點。對於許多不需要交易資料支援或磁碟形式耐久性的使用案例而言,使用記憶體內鍵值存放區做為獨立資料庫是建置高效能應用程式的絕佳方式。除了速度之外,應用程式還可受益於經濟實惠的價格所提供的高輸送量。像是產品分組、類別清單、設定檔資訊等等,都是一般快取的絕佳使用案例。如需一般快取的詳細資訊,按一下這裡


    整合式快取

    整合式快取是一種記憶體內層,會自動從來源資料庫快取經常存取的資料。最常見的是,如果資料位於快取內,基礎資料庫會利用快取提供傳入資料庫請求的回應。這可藉由降低請求延遲和減少資料庫引擎的 CPU 和記憶體使用率,大幅提升資料庫效能。整合式快取的重要特性是,快取的資料與資料庫引擎存放在磁碟上的資料一致。

  • 產業

    了解各種快取使用案例

    行動應用程式

    由於消費者裝置的快速接納和使用傳統電腦設備的意願降低,使得行動應用程式成為一個成長速度驚人的市場區隔。無論是遊戲、商業應用程式、健康維護應用程式等等,幾乎每個市場區隔現在都有方便使用的行動應用程式。從應用程式開發觀點來看,建立行動應用程式和建立任何其他形式的應用程式非常類似。您會有相同的考量範圍,無論是展示層、商業層還是資料層。雖然您的螢幕空間和開發工具有所不同,但是提供最佳的使用者體驗是所有應用程式的共同目標。有了有效快取策略,您的行動應用程式便可提供使用者預期的效能、可大規模擴展,還可降低整體成本。

    AWS Mobile Hub 是一個主控台,可提供探索、設定和存取 AWS 雲端服務的整合體驗,以建置、測試和監控行動應用程式的使用情況。


    IoT

    物聯網的概念是透過裝置感應器從裝置和真實世界收集資訊,並將資訊交付給網際網路或使用此資料的應用程式。IoT 的價值在於能夠以近乎即時的時間間隔了解所擷取的資料,最終可讓使用的系統和應用程式能夠對此資料快速回應。例如,傳輸其 GPS 座標的裝置。您的 IoT 應用程式可以透過建議相對於這些座標附近您感興趣的地點做出回應。此外,如果您已存放與裝置使用者有關的偏好設定,可以針對個人微調這些建議。在這個特殊的範例中,應用程式回應座標的速度對於達成最佳使用者體驗非常重要。快取可以在這裡扮演重要的角色,例如,興趣點和地理座標可以存放在鍵值存放區 (例如 Redis) 以便快速擷取。從應用程式開發的觀點來看,如果有程式設計的方式可實質上編寫 IoT 應用程式的程式碼以回應任何事件,您就可以這麼做。建立 IoT 架構時的重要考量包括,分析導入資料的相關回應時間、架構可擴展 N 倍裝置數量的解決方案,以及交付具成本效益的架構。

    AWS IoT 是一個受管的雲端平台,可讓連線的裝置輕鬆安全地與雲端應用程式及其他裝置進行互動。

    進一步閱讀:Managing IoT and Time Series Data with Amazon ElastiCache for Redis


    廣告技術

    現代化廣告技術應用程式特別講求效能。廣告技術明顯成長的範例領域之一是即時競標 (RTB),這是以最精細的曝光等級即時處理數位展示型廣告的拍賣方法。RTB 在 2015 年是最主要的交易方式,在美國佔自動化購買廣告的 74.0%,也就是 110 億美元的廣告 (根據 eMarketer Analysis 的資料)。建立即時競標應用程式時,在準時提交競價和競價無效之間,只要 1 毫秒就會有很大的不同。這表示從資料庫取得競價資訊的速度必須非常快。資料庫快取能夠以低於一毫秒的速度存取競價詳細資訊,是實現高效能的絕佳解決方案。


    遊戲

    互動是現今絕大多數遊戲的基本需求。沒有什麼比速度緩慢和反應遲鈍的遊戲更讓玩家無法忍受,這些遊戲往往都是以失敗收場。多玩家行動裝置遊戲對於效能的需求更為嚴苛,其中任何一個玩家的動作都必須與他人即時共享。快取在保持遊戲順暢中扮演了重要的角色,可對經常存取的資料提供低於一毫秒的查詢回應。它也有助於減輕多次查詢相同資料的熱門關鍵問題,例如「誰是目前分數前 10 名的玩家?」

    要進一步了解在 AWS 上開發遊戲,按一下這裡



    媒體

    媒體公司經常需要將大量靜態內容傳輸給客戶,而讀者/檢視者的數目也不斷在變化。其中一個範例是視訊串流服務,例如 Netflix 或 Amazon Video,會向檢視者串流大量的影片內容。這非常適合內容交付網路,其中資料存放在全球各地分佈的一組快取伺服器上。另一方面,媒體應用程式的負載通常有高有低而且無法預測。想像一下網站上的部落格有名人剛剛發了推文,或是超級盃賽季的美式足球隊伍網站。這種針對小部分內容的大量尖峰需求對大多數資料庫來說都是一項挑戰,因為會受限於其每一鍵值的輸送量。因為記憶體比磁碟具有更高的輸送量,因此資料庫快取可藉由將讀取重導至記憶體內快取來解決問題。


    電子商務

    現代的電子商務應用程式變得更為複雜,會提供個人化的購物體驗,包括根據使用者資料和購物歷史記錄提供即時建議。通常還包括查看使用者的社交網路,並根據好友的喜好或購物來提供建議。雖然需要處理的資料量增加了,但客戶的耐性並沒有增加。因此,讓應用程式即時執行不是一項豪華功能,而是必要功能;妥善執行的快取策略是應用程式效能的重要一環,而且可能是應用程式的成功或失敗、成功銷售或流失客戶的關鍵因素。

    按一下這裡可參考範例電子商務架構。


    社交媒體

    社交媒體應用程式已席捲全世界。像是 Facebook、Twitter、Instagram 和 Snapchat 等社交網路都有龐大數目的使用者及不斷成長的內容量。當使用者開啟饋送,會希望能近乎即時的看到最新的個人化內容。這不是靜態內容,因為每個使用者會有不同的朋友、影像、興趣等等,大幅增加基礎平台的工程複雜性需求。在重大娛樂、運動和政治事件發生時,也非常容易增加社交媒體應用程式的使用。如此的尖峰彈性和即時效能可透過多層快取來提供,包括內容交付網路用於靜態內容 (例如背景圖片)、工作階段快取用於持續追蹤使用者目前的工作階段資料,以及資料庫快取用於保存經常存取的資料 (例如親近好友的最新消息和最近使用的圖片)。


    醫療保健

    醫療保健產業正在經歷數位革命,讓世界各地越來越多的病患能夠受到照護。有些應用程式可讓病患看到醫生以進行視訊諮詢,而大部分主要供應商的應用程式可讓病患查看他們的檢查結果,並與醫療人員互動。在健康方面有許許多多的應用程式,範圍從追蹤使用者特定感應器活動 (例如 FitBit 和 Jawbone),到綜合的健康指導和資料。由於這些應用程式的互動本質,必須解決快速執行應用程式、商業及資料等層次的需求。運用有效的快取策略可讓您提供快速效能,降低整體基礎設施成本,以及隨著使用量的成長而擴展。

    要進一步了解在 AWS 上建置醫療保健應用程式,按一下這裡


    FinTech

    最近幾年來,我們使用金融服務的方式已有大幅度的演進。應用程式包括存取銀行和保險服務、詐騙偵測、投資服務、透過即時演算法優化資本市場等等。為客戶提供財務資料即時存取,使其能夠進行轉帳或支付費用等交易是一項很大的挑戰。首先,與使用者希望以近乎即時的速度與應用程式互動的其他應用程式一樣有類似的限制。此外,財務應用程式可能需要執行提高安全性和詐騙偵測等其他功能。一個包含多層快取策略的高效架構對達到使用者預期的效能非常重要。根據應用程式的需求,快取層可包含用於存放使用者工作階段資料的工作階段快取、用於提供靜態內容的內容交付網路,以及用於經常存取資料的資料庫快取,例如客戶最近購買的 10 個商品。

    要進一步了解 AWS 上的金融服務應用程式,按一下這裡

使用 Amazon ElastiCache 這類全受管服務可在雲端輕鬆開始使用快取。這些服務能夠免除設定、管理和操控快取的複雜性,讓您將時間花費在對組織最有價值的事物上。立即註冊 Amazon ElastiCache

開始使用 Amazon ElastiCache