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

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

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

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

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

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

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

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

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

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

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

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

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

在對(duì) Redis 內(nèi)存方案進(jìn)行考察時(shí),vivo 考慮到,英特爾? 傲騰? 持久內(nèi)存在成本上具備顯著優(yōu)勢,而且在硬件親和度較大的前提下,基于英特爾? 傲騰? 持久內(nèi)存的服務(wù)器可以近乎無縫地在 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)存提供了融合高速、高性價(jià)比、大容量、持久數(shù)據(jù)保護(hù)、高級(jí)加密等優(yōu)勢于一體的內(nèi)存選項(xiàng),可分別支持內(nèi)存模式(Memory Mode)和 App Direct 模式。在內(nèi)存模式中,它提供有 128 GB、256 GB 和 512 GB 容量,與普通的易失性系統(tǒng)存儲(chǔ)器完全一樣,但成本更低,能在穩(wěn)定的系統(tǒng)預(yù)算中實(shí)現(xiàn)更高容量。

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

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

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

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

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

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

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

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

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

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

打造高性價(jià)比、易運(yùn)維的 Redis 系統(tǒng)

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

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

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

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

展望

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

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

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

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

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

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

長按掃碼 閱讀全文