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

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

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

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

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

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

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

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

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

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

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

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

解決方案:基于英特爾? 傲騰?持久內(nèi)存的Redis方案

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

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

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

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

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

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

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

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

圖 2. 內(nèi)存模式下DRAM/PMEM測試數(shù)據(jù)

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

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

圖 3. 應用直接訪問模式下PMEM/DRAM測試數(shù)據(jù)

打造高性價比、易運維的 Redis 系統(tǒng)

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

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

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

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

展望

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

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

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

極客網(wǎng)企業(yè)會員

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

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

長按掃碼 閱讀全文