本文來自開源云中文社區(qū)。
分布式緩存是基于云的應用程序的一個重要方面,適用于內(nèi)部部署、公共或混合云環(huán)境。它有助于增量擴展,允許緩存增長并合并數(shù)據(jù)增長。在這篇文章中,我們將探討云上的分布式緩存,以及為什么它對有高數(shù)據(jù)量和負載的環(huán)境很有用。這篇文章將涵蓋:
傳統(tǒng)緩存的挑戰(zhàn);
什么是分布式緩存;
云上分布式緩存的好處;
推薦的分布式緩存數(shù)據(jù)庫工具;
在云上部署分布式緩存的方法;
傳統(tǒng)緩存挑戰(zhàn)
傳統(tǒng)的緩存服務(wù)器通常以有限的存儲和CPU速度部署。這些緩存基礎(chǔ)設(shè)施通常駐留在內(nèi)部的數(shù)據(jù)中心上。也就是非分布式緩存服務(wù)器。傳統(tǒng)的分布式緩存帶來了許多挑戰(zhàn),例如:
非云節(jié)點服務(wù)器上難以擴展的緩存存儲和CPU速度。
管理基礎(chǔ)設(shè)施和未使用的硬件資源的高運維成本。
傳統(tǒng)的分布式緩存不是容器化的。這就是為什么它不具備可擴展性、彈性和自我管理能力。
如果客戶端負載高于實際負載,服務(wù)器可能會崩潰。
與多個數(shù)據(jù)中心服務(wù)器進行程序同步期間數(shù)據(jù)過時的可能性。
服務(wù)器和各個數(shù)據(jù)中心之間的數(shù)據(jù)同步慢。
什么是分布式緩存
緩存是一種將數(shù)據(jù)狀態(tài)存儲在主存儲之外并將其存儲在高速內(nèi)存中以提高性能的技術(shù)。在微服務(wù)環(huán)境中,所有應用程序都使用它們的多個實例部署在混合云上的各種服務(wù)器/容器中。在云上的多集群Kubernetes環(huán)境中需要一個緩存源來集中保存數(shù)據(jù)并將其復制到自己的緩存集群上。它將用作在分布式環(huán)境中緩存數(shù)據(jù)的單點存儲。
云上分布式緩存的好處
定期緩存經(jīng)常使用的讀取REST API響應可確保更快的API讀取性能。
通過直接從分布式緩存數(shù)據(jù)庫訪問緩存數(shù)據(jù)來減少數(shù)據(jù)庫網(wǎng)絡(luò)調(diào)用。
通過在集群中的各種緩存數(shù)據(jù)庫中維護多個數(shù)據(jù)副本來實現(xiàn)彈性和容錯。
通過根據(jù)負載或客戶端請求自動縮放緩存數(shù)據(jù)庫來實現(xiàn)高可用性。
存儲會話秘密令牌,例如JSON Web Token(ID/JWT),用于微服務(wù)應用程序容器的身份驗證和授權(quán)。
如果將其用作高負載關(guān)鍵任務(wù)應用程序的專用數(shù)據(jù)庫解決方案,則可以在內(nèi)存中進行更快的讀寫訪問。
避免對持久數(shù)據(jù)庫的不必要的往返數(shù)據(jù)調(diào)用。
可自動擴展的云基礎(chǔ)設(shè)施部署。
分布式緩存庫/解決方案的容器化。
從任何同步連接的緩存數(shù)據(jù)中心一致地讀取數(shù)據(jù)。
緩存數(shù)據(jù)的最小到無中斷高可用性。
緩存數(shù)據(jù)服務(wù)器之間更快的數(shù)據(jù)同步。
推薦的分布式緩存數(shù)據(jù)庫工具
以下是流行的行業(yè)認可的緩存服務(wù)器:
Redis
Memcache
GemFire
Hazelcast databases
Redis:它是最流行的分布式緩存服務(wù)之一,它支持不同的數(shù)據(jù)結(jié)構(gòu)。它是一種開源的內(nèi)存內(nèi)數(shù)據(jù)存儲,被數(shù)百萬開發(fā)人員用作數(shù)據(jù)庫、緩存、流引擎和消息代理。它還有一個企業(yè)版。它可以部署在私有云、公共云和混合云等容器中,并在不同的數(shù)據(jù)中心之間提供一致和更快的數(shù)據(jù)同步。
Hazelcast:Hazelcast是一個分布式計算和存儲平臺,用于針對事件流和傳統(tǒng)數(shù)據(jù)源進行一致的低延遲查詢、聚合和有狀態(tài)計算。它允許你快速構(gòu)建資源高效的實時應用程序。你可以在任何規(guī)模上部署它,從小型邊緣設(shè)備到大型云實例集群。Hazelcast節(jié)點集群共享數(shù)據(jù)存儲和計算負載,可以動態(tài)擴展和縮減。當你向集群添加新節(jié)點時,數(shù)據(jù)會自動在集群中重新平衡。當前處于運行狀態(tài)的計算任務(wù)(作業(yè))對它們的狀態(tài)進行快照,并通過處理保證進行擴展。
Memcached:它是一個開源、高性能、分布式的內(nèi)存對象緩存系統(tǒng)。它本質(zhì)上是通用的,但旨在通過減輕數(shù)據(jù)庫負載來加速動態(tài)Web應用程序。Memcached是一種內(nèi)存鍵值存儲,用于存儲來自數(shù)據(jù)庫調(diào)用、API調(diào)用或頁面渲染結(jié)果的任意數(shù)據(jù)(字符串、對象)的小塊。Memcached簡單但功能強大。其簡單的設(shè)計促進了簡單、快速的部署和開發(fā)。它解決了許多數(shù)據(jù)緩存問題,其API支持各種常用語言。
GemFire:它提供分布式內(nèi)存內(nèi)數(shù)據(jù)網(wǎng)格緩存,由Apache Geode開源提供支持。它按需擴展數(shù)據(jù)服務(wù)以支持高性能。它是一種鍵值存儲,可以快速執(zhí)行讀寫操作。它提供高度可用的并行消息隊列、連續(xù)可用性和事件驅(qū)動的架構(gòu),可在不停機的情況下動態(tài)擴展。
它提供多站點復制。隨著數(shù)據(jù)大小要求的增加以支持高性能的實時應用程序,它可以輕松線性擴展。應用程序獲得對數(shù)據(jù)訪問請求的低延遲響應,并始終返回新數(shù)據(jù)。它維護跨分布式節(jié)點的事務(wù)完整性,并支持應用程序的高并發(fā)、低延遲數(shù)據(jù)操作。它還提供節(jié)點故障轉(zhuǎn)移和跨數(shù)據(jù)中心或多數(shù)據(jù)中心復制,以確保應用程序具有彈性,無論是在內(nèi)部還是在云中。
在混合云上部署分布式緩存的方法
以下是部署和設(shè)置分布式緩存的推薦方法,無論是在公共云還是混合云上:
——傳統(tǒng)VM實例上的開源分布式緩存。
——Kubernetes容器上的開源分布式緩存。筆者建議在Kubernetes容器上部署以獲得高可用性、彈性、可擴展性和更快的性能。
——在VM和容器上部署企業(yè)商業(yè)現(xiàn)成的分布式緩存。筆者會推薦企業(yè)版,因為它們會提供額外的功能和支持。
——公共云為Redis、Hazelcast和Memcache等開源和企業(yè)工具提供分布式緩存托管服務(wù)。
——緩存服務(wù)器可以部署在多個源上,例如本地和公共云、公共服務(wù)器或不同可用區(qū)中的僅一臺公共服務(wù)器。
結(jié)論
分布式緩存現(xiàn)在是混合云上分布式部署環(huán)境中分布式微服務(wù)應用程序的事實上的要求。它解決了重要用例中的問題,例如在Web瀏覽器上禁用cookie時維護用戶會話、提高API查詢讀取性能、避免相同類型請求的操作成本和數(shù)據(jù)庫命中、管理用于身份驗證和授權(quán)的秘密令牌等。
分布式緩存自動同步混合云上的數(shù)據(jù),無需任何手動操作,始終提供最新數(shù)據(jù)。筆者推薦行業(yè)標準的分布式緩存解決方案Redis、Hazelcast、Memcached和GemFire。我們需要根據(jù)用例在云端選擇更好的分布式緩存技術(shù)。