首頁 > 遊戲

海量Redis資料庫最佳化,vivo如何實現成本與效能的平衡

由 大資料線上 發表于 遊戲2022-12-31

簡介應用直接訪問模式下PMEMDRAM測試資料打造高性價比、易運維的 Redis 系統透過在 Redis 系統中引入英特爾® 傲騰™ 持久記憶體,vivo 找到了一條擴充套件 Redis 系統規模的經濟可行之道

長期和永久有什麼區別

概述

隨著數字化技術的創新以及時延敏感型應用的持續落地,越來越多的資料需要實現實時或近實時的處理,這推動了 Redis 等記憶體資料庫的廣泛應用。此類資料庫對於記憶體容量有著較高的要求,在資料快速增長的背景下,大記憶體池構建意味著較高的總體擁有成本 (TCO)壓力,需要企業透過記憶體介質創新、儲存架構最佳化等方式,實現成本與容量的平衡。

作為中國知名的智慧終端和智慧服務品牌,vivo 部署了規模龐大的 Redis 系統,以支援 AI 推薦、興趣圖譜分析、網際網路交易等應用的高效執行,為使用者提供穩定、快速響應的服務。為了更好地實現 Redis 系統性能與成本的平衡,vivo 與英特爾合作,在 Redis 系統中採用了英特爾® 傲騰™ 持久記憶體(PMem),藉助其高效能、大容量、高經濟性等特點,幫助 vivo 實現了既定的業務目標。

挑戰:Redis系統帶來巨大的記憶體擴充套件壓力

vivo 已經成為全球具備重要影響力的移動網際網路服務提供商之一。面向新時期的市場發展需求,vivo 釋出了其全新的 AI 智慧服務生態戰略,即打造一個 “全場景、全聯結、全互動” 的智慧引擎,構建滿足消費者期待的智慧手機,以實現與更多開發者合作共贏。vivo 正在聚焦於運動、健康、工作、休閒等移動網際網路業務生態中最具活躍度和顯性價值區域的應用場景,為使用者提供更加智慧的服務。

在 vivo 的智慧服務生態戰略中,基於 AI 的個性化資訊推薦、興趣圖譜分析以及網際網路交易等時延敏感型應用得到了快速發展。為了支援這些應用的高效執行,vivo 部署了規模龐大的 Redis 系統。Redis 是一個可基於記憶體亦可持久化的日誌型 Key-Value 資料庫,透過在記憶體中讀寫資料,Redis 大大提高了讀寫速度,是實現網站高併發不可或缺的一部分。

在原生 Redis 系統的基礎上,vivo 根據其業務需求進行了相應的最佳化,包括最佳化日誌同步機制、最佳化 Cluster slots 指令、AOF 支援非同步寫入等。這些最佳化措施有效提升了 Redis 系統在效能、擴充套件性等方面的表現。

由於 vivo 網際網路使用者規模巨大,應用眾多,因此需要透過 Redis 系統進行處理的資料堪稱海量,這給後端的 IT 基礎設施帶來了巨大的挑戰。其中突出體現在 Redis 所帶來的巨大記憶體需求上:Redis 記憶體消耗通常包括自身記憶體、鍵值物件佔用、緩衝區記憶體佔用及記憶體碎片佔用。如果資料量超過了叢集記憶體能容納的限制,部分資料就會落在相對低速的磁碟上,導致 Redis 效能顯著降低,甚至可能停止響應。因此,為 Redis 資料庫提供足夠大的記憶體成為保障其效能正常發揮的重要因素。

傳統 Redis 系統通常採用高效能 DRAM 記憶體作為緩衝區記憶體, 這種方式能夠滿足 Redis 系統對於效能的要求,但卻在成本上帶來巨大的挑戰:

DRAM 記憶體單位容量成本仍居高不下:在相當長的時間內, 使用者對於記憶體的巨大需求與可供應的記憶體總量之間仍有著巨大的缺口,再加上 DRAM 記憶體介質的工藝特點,導致 DRAM 記憶體的價格長期在高位執行。對於 Redis 系統而言,叢集需要的記憶體容量動輒在數百 TB,導致較高的成本壓力。

DRAM 記憶體單條容量相對較低:目前,市場上普遍應用的 DRAM 記憶體通常在 128 GB 以下,這意味著即使將伺服器的記憶體插槽插滿,單個伺服器節點所能提供的記憶體容量依然相對不足。為了滿足業務需求,擴充套件叢集規模顯然就成為最具可行性的方式,這會進一步加大成本壓力。

高複雜性:Redis 龐大的叢集規模也會帶來複雜的運維問題, 加重運維人員的負擔。因此,vivo 希望找到創新的記憶體擴充套件方案,以解決成本與運維的難題。

解決方案:基於英特爾® 傲騰™持久記憶體的Redis方案

在對 Redis 記憶體方案進行考察時,vivo 考慮到,英特爾® 傲騰™ 持久記憶體在成本上具備顯著優勢,而且在硬體親和度較大的前提下,基於英特爾® 傲騰™ 持久記憶體的伺服器可以近乎無縫地在 Redis 生產環境下投入使用。因此,vivo 決定採用英特爾® 傲騰™ 持久記憶體來作為 Redis 系統的快取介質。

英特爾® 傲騰™ 持久記憶體效能介於 DRAM 記憶體與固態硬碟之間, 但在成本上比 DRAM 記憶體更具優勢。英特爾® 傲騰™ 持久記憶體提供了融合高速、高性價比、大容量、持久資料保護、高階加密等優勢於一體的記憶體選項,可分別支援記憶體模式(Memory Mode)和 App Direct 模式。在記憶體模式中,它提供有 128 GB、256 GB 和 512 GB 容量,與普通的易失性系統儲存器完全一樣,但成本更低,能在穩定的系統預算中實現更高容量。

在記憶體模式下,英特爾® 傲騰™ 持久記憶體可作為經濟高效的 DRAM 替代品。對應用程式而言,英特爾® 傲騰™ 持久記憶體可用作易失性記憶體,由 DRAM 充當最常訪問的資料的快取記憶體, 同時由英特爾® 傲騰™ 持久記憶體提供大容量的儲存容量。與僅使用 DRAM 的系統相比,配備英特爾® 傲騰™ 持久記憶體的系統允許使用更大容量的記憶體,並且更具成本效益。但是,在這種模式下,資料無法持久儲存,這意味著在系統電源關閉時資料會丟失。

海量Redis資料庫最佳化,vivo如何實現成本與效能的平衡

圖 1。 英特爾® 傲騰™ 技術創新—兩級記憶體/儲存

在 App Direct 模式下,應用程式和作業系統會有兩種可用的記憶體。系統將決定是從 DRAM 還是英特爾® 傲騰™ 持久記憶體中寫入或讀取資料。要求低時延且不需要永久資料儲存的操作可以在 DRAM 上執行,必須長期保留的資料將由英特爾® 傲騰™ 持久記憶體進行儲存。

與傳統 DRAM 記憶體相比,英特爾® 傲騰™ 持久記憶體能夠提供更高的容量與更低的 TCO,非常適合於記憶體容量敏感型應用。

為了驗證基於英特爾® 傲騰™ 持久記憶體的 Redis 系統表現,vivo 透過測試進行了驗證。首先,vivo 測試了兩種配置在記憶體模式下的效能差別,測試伺服器配置如表 1 所示。

海量Redis資料庫最佳化,vivo如何實現成本與效能的平衡

測試資料顯示,在記憶體模式下的測試中,英特爾® 傲騰™ 持久記憶體的效能要高於 DRAM 記憶體,這一方面是由於英特爾® 傲騰™ 持久記憶體具備較高的效能,另一方面是由於英特爾® 至強® 金牌 6230 處理器相較於英特爾® 至強® E5-2620 V4 處理器實現了較高的代際效能提升。其中,set 10B 下的測試結果如圖 2 所示。

海量Redis資料庫最佳化,vivo如何實現成本與效能的平衡

圖 2。 記憶體模式下DRAM/PMEM測試資料

隨後,vivo 在應用直接訪問模式下測試了英特爾® 傲騰™ 持久記憶體的效能表現,測試配置如表 2 所示。

海量Redis資料庫最佳化,vivo如何實現成本與效能的平衡

測試資料顯示,當長度超過 64B 後,相較於 redis-server 完全使用 DRAM 儲存資料的情況,英特爾® 傲騰™ 持久記憶體在寫效能上有 10%-15%2 的劣化;在資料讀取的測試中,英特爾® 傲騰™ 持久記憶體的效能與 redis-server 相當,有些情況還優於 redis-server。例如,在 memtier-benchmark list 型別中 lpushs_1024(b)的測試中,英特爾® 傲騰™ 持久記憶體配置即體現了一定的效能優勢。

海量Redis資料庫最佳化,vivo如何實現成本與效能的平衡

圖 3。 應用直接訪問模式下PMEM/DRAM測試資料

打造高性價比、易運維的 Redis 系統

透過在 Redis 系統中引入英特爾® 傲騰™ 持久記憶體,vivo 找到了一條擴充套件 Redis 系統規模的經濟可行之道。具體而言,其發揮瞭如下價值:

高性價比:雖然基於英特爾® 傲騰™ 持久記憶體的 Redis 系統在效能上稍弱於基於 DRAM 記憶體的 Redis 系統,但是在成本上卻有著較大的優勢,考慮到該系統的效能已經能夠滿足業務所需,因此成本的節約無疑顯得至關重要。

簡化運維:英特爾® 傲騰™ 持久記憶體支援更高的單條記憶體容量,能夠有效提升單伺服器節點的記憶體密度,單機提供的記憶體容量遠大於傳統方案。這有助於減少伺服器節點的部署規模,從而簡化運維。

節能減排:基於英特爾® 傲騰™ 持久記憶體的 Redis 系統支援更小的伺服器規模,有助於降低相應的伺服器採購、運維、能耗、空間佔用等成本,同時實現節能減排。

展望

目前,英特爾® 傲騰™ 持久記憶體已經在記憶體資料庫等需要大容量集的應用中得到了廣泛驗證,並證明其在經濟性、擴充套件性、可用性、部署與運維等方面具備突出的優勢,這有助於彌補記憶體供給與需求之間的巨大缺口,幫助企業加速獲取洞察,為制定關鍵業務決策、節約成本和新增收入奠定基礎。

在現階段的合作基礎上,vivo 與英特爾將進一步完善當前的合作成果,充分發揮英特爾® 傲騰™ 持久記憶體的潛能。同時,雙方也將在更多的領域進行探索,協同推進記憶體與儲存創新,為上層業務的智慧化轉型奠定堅實的基礎,為使用者提供更優質的產品與服務體驗。

Tags:記憶體redis傲騰英特爾持久