海量Redis數據庫優(yōu)化,vivo如何實現成本與性能的平衡

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

作為中國知名的智能終端和智慧服務品牌,vivo 部署了規(guī)模龐大的 Redis 系統,以支持 AI 推薦、興趣圖譜分析、互聯網交易等應用的高效運行,為用戶提供穩(wěn)定、快速響應的服務。為了更好地實現 Redis 系統性能與成本的平衡,vivo 與英特爾合作,在 Redis 系統中采用了英特爾? 傲騰? 持久內存(PMem),借助其高性能、大容量、高經濟性等特點,幫助 vivo 實現了既定的業(yè)務目標。

挑戰(zhàn):Redis系統帶來巨大的內存擴展壓力

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

在 vivo 的智慧服務生態(tài)戰(zhàn)略中,基于 AI 的個性化信息推薦、興趣圖譜分析以及互聯網交易等時延敏感型應用得到了快速發(fā)展。為了支持這些應用的高效運行,vivo 部署了規(guī)模龐大的 Redis 系統。Redis 是一個可基于內存亦可持久化的日志型 Key-Value 數據庫,通過在內存中讀寫數據,Redis 大大提高了讀寫速度,是實現網站高并發(fā)不可或缺的一部分。

在原生 Redis 系統的基礎上,vivo 根據其業(yè)務需求進行了相應的優(yōu)化,包括優(yōu)化日志同步機制、優(yōu)化 Cluster slots 指令、AOF 支持異步寫入等。這些優(yōu)化措施有效提升了 Redis 系統在性能、擴展性等方面的表現。

由于 vivo 互聯網用戶規(guī)模巨大,應用眾多,因此需要通過 Redis 系統進行處理的數據堪稱海量,這給后端的 IT 基礎設施帶來了巨大的挑戰(zhàn)。其中突出體現在 Redis 所帶來的巨大內存需求上:Redis 內存消耗通常包括自身內存、鍵值對象占用、緩沖區(qū)內存占用及內存碎片占用。如果數據量超過了集群內存能容納的限制,部分數據就會落在相對低速的磁盤上,導致 Redis 性能顯著降低,甚至可能停止響應。因此,為 Redis 數據庫提供足夠大的內存成為保障其性能正常發(fā)揮的重要因素。

傳統 Redis 系統通常采用高性能 DRAM 內存作為緩沖區(qū)內存, 這種方式能夠滿足 Redis 系統對于性能的要求,但卻在成本上帶來巨大的挑戰(zhàn):

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

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

高復雜性:Redis 龐大的集群規(guī)模也會帶來復雜的運維問題, 加重運維人員的負擔。因此,vivo 希望找到創(chuàng)新的內存擴展方案,以解決成本與運維的難題。

解決方案:基于英特爾? 傲騰?持久內存的Redis方案

在對 Redis 內存方案進行考察時,vivo 考慮到,英特爾? 傲騰? 持久內存在成本上具備顯著優(yōu)勢,而且在硬件親和度較大的前提下,基于英特爾? 傲騰? 持久內存的服務器可以近乎無縫地在 Redis 生產環(huán)境下投入使用。因此,vivo 決定采用英特爾? 傲騰? 持久內存來作為 Redis 系統的緩存介質。

英特爾? 傲騰? 持久內存性能介于 DRAM 內存與固態(tài)硬盤之間, 但在成本上比 DRAM 內存更具優(yōu)勢。英特爾? 傲騰? 持久內存提供了融合高速、高性價比、大容量、持久數據保護、高級加密等優(yōu)勢于一體的內存選項,可分別支持內存模式(Memory Mode)和 App Direct 模式。在內存模式中,它提供有 128 GB、256 GB 和 512 GB 容量,與普通的易失性系統存儲器完全一樣,但成本更低,能在穩(wěn)定的系統預算中實現更高容量。

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

圖 1. 英特爾? 傲騰? 技術創(chuàng)新—兩級內存/存儲

在 App Direct 模式下,應用程序和操作系統會有兩種可用的內存。系統將決定是從 DRAM 還是英特爾? 傲騰? 持久內存中寫入或讀取數據。要求低時延且不需要永久數據存儲的操作可以在 DRAM 上執(zhí)行,必須長期保留的數據將由英特爾? 傲騰? 持久內存進行存儲。

與傳統 DRAM 內存相比,英特爾? 傲騰? 持久內存能夠提供更高的容量與更低的 TCO,非常適合于內存容量敏感型應用。

為了驗證基于英特爾? 傲騰? 持久內存的 Redis 系統表現,vivo 通過測試進行了驗證。首先,vivo 測試了兩種配置在內存模式下的性能差別,測試服務器配置如表 1 所示。

測試數據顯示,在內存模式下的測試中,英特爾? 傲騰? 持久內存的性能要高于 DRAM 內存,這一方面是由于英特爾? 傲騰? 持久內存具備較高的性能,另一方面是由于英特爾? 至強? 金牌 6230 處理器相較于英特爾? 至強? E5-2620 V4 處理器實現了較高的代際性能提升。其中,set 10B 下的測試結果如圖 2 所示。

圖 2. 內存模式下DRAM/PMEM測試數據

隨后,vivo 在應用直接訪問模式下測試了英特爾? 傲騰? 持久內存的性能表現,測試配置如表 2 所示。

測試數據顯示,當長度超過 64B 后,相較于 redis-server 完全使用 DRAM 存儲數據的情況,英特爾? 傲騰? 持久內存在寫性能上有 10%-15%2 的劣化;在數據讀取的測試中,英特爾? 傲騰? 持久內存的性能與 redis-server 相當,有些情況還優(yōu)于 redis-server。例如,在 memtier-benchmark list 類型中 lpushs_1024(b)的測試中,英特爾? 傲騰? 持久內存配置即體現了一定的性能優(yōu)勢。

圖 3. 應用直接訪問模式下PMEM/DRAM測試數據

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

通過在 Redis 系統中引入英特爾? 傲騰? 持久內存,vivo 找到了一條擴展 Redis 系統規(guī)模的經濟可行之道。具體而言,其發(fā)揮了如下價值:

高性價比:雖然基于英特爾? 傲騰? 持久內存的 Redis 系統在性能上稍弱于基于 DRAM 內存的 Redis 系統,但是在成本上卻有著較大的優(yōu)勢,考慮到該系統的性能已經能夠滿足業(yè)務所需,因此成本的節(jié)約無疑顯得至關重要。

簡化運維:英特爾? 傲騰? 持久內存支持更高的單條內存容量,能夠有效提升單服務器節(jié)點的內存密度,單機提供的內存容量遠大于傳統方案。這有助于減少服務器節(jié)點的部署規(guī)模,從而簡化運維。

節(jié)能減排:基于英特爾? 傲騰? 持久內存的 Redis 系統支持更小的服務器規(guī)模,有助于降低相應的服務器采購、運維、能耗、空間占用等成本,同時實現節(jié)能減排。

展望

目前,英特爾? 傲騰? 持久內存已經在內存數據庫等需要大容量集的應用中得到了廣泛驗證,并證明其在經濟性、擴展性、可用性、部署與運維等方面具備突出的優(yōu)勢,這有助于彌補內存供給與需求之間的巨大缺口,幫助企業(yè)加速獲取洞察,為制定關鍵業(yè)務決策、節(jié)約成本和新增收入奠定基礎。

在現階段的合作基礎上,vivo 與英特爾將進一步完善當前的合作成果,充分發(fā)揮英特爾? 傲騰? 持久內存的潛能。同時,雙方也將在更多的領域進行探索,協同推進內存與存儲創(chuàng)新,為上層業(yè)務的智慧化轉型奠定堅實的基礎,為用戶提供更優(yōu)質的產品與服務體驗。

免責聲明:此文內容為第三方自媒體作者發(fā)布的觀察或評論性文章,所有文字和圖片版權歸作者所有,且僅代表作者個人觀點,與極客網無關。文章僅供讀者參考,并請自行核實相關內容。投訴郵箱:editor@fromgeek.com。

免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

2022-11-29
海量Redis數據庫優(yōu)化,vivo如何實現成本與性能的平衡
隨著數字化技術的創(chuàng)新以及時延敏感型應用的持續(xù)落地,越來越多的數據需要實現實時或近實時的處理,這推動了 Redis 等內存數據庫的廣泛應...

長按掃碼 閱讀全文