快手推荐系统及 Redis 升级存储
快手推薦系統(tǒng)及 Redis 升級存儲
借傲騰? 補上 DRAM 短板
內(nèi)容簡介:
·
作為短視頻領(lǐng)域的領(lǐng)先企業(yè),快手需要不斷導入更先進的技術(shù)手段來調(diào)整和優(yōu)化其系統(tǒng)架構(gòu),以應(yīng)對用戶量和短視頻作品數(shù)量的爆炸式增長;
·
這其中,作為短視頻系統(tǒng)存儲、分發(fā)和推薦的核心組件,其存儲系統(tǒng)的優(yōu)化和性能提升,面臨著更為艱巨的挑戰(zhàn);
·
為此,快手引入了英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存產(chǎn)品應(yīng)用于其推薦系統(tǒng)和 Redis 服務(wù),并通過一系列的軟件調(diào)優(yōu)來構(gòu)建新的推薦異構(gòu)存儲系統(tǒng),以及優(yōu)化
Redis 服務(wù),在具備更優(yōu)存儲能力的基礎(chǔ)上,有效降低了 TCO。
·
作為短視頻領(lǐng)域的領(lǐng)先企業(yè),快手正以實時、高效和精準的視頻內(nèi)容博得海量用戶的青睞。隨著用戶量和短視頻作品數(shù)量的爆炸式增長,快手也需要不斷導入更先進的技術(shù)手段,來調(diào)整和優(yōu)化其系統(tǒng)架構(gòu)。作為短視頻系統(tǒng)存儲、分發(fā)和推薦的核心組件,其存儲系統(tǒng)的優(yōu)化和性能提升,也正面臨著非常艱巨的挑戰(zhàn)。
· 為應(yīng)對短視頻應(yīng)用中高吞吐率、大數(shù)據(jù)量請求應(yīng)用場景帶來的挑戰(zhàn),快手與英特爾一起,通過深入的技術(shù)協(xié)作,在國內(nèi)率先將英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存產(chǎn)品應(yīng)用于其推薦系統(tǒng)和 Redis 服務(wù),并通過一系列的軟件調(diào)優(yōu),成功構(gòu)建起全新的推薦異構(gòu)存儲系統(tǒng),并優(yōu)化了
Redis 服務(wù),為其提供了更具優(yōu)勢的存儲能力。
· 來自快手的測試與實踐表明,英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存在新的推薦異構(gòu)存儲系統(tǒng)和升級后的 Redis 服務(wù)中,不僅有著與 DRAM 內(nèi)存相近的性能表現(xiàn),而且其大容量和非易失性的特性還可幫助系統(tǒng)獲得更優(yōu)的可用性。此外,它相比于 DRAM 內(nèi)存的成本和容量優(yōu)勢,也可幫助快手有效地降低其推薦系統(tǒng)和
Redis 服務(wù)的總擁有成本 (Total Cost of Ownership,TCO)。
· 快手實現(xiàn)的解決方案優(yōu)勢:
· ? 引入英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存構(gòu)建的快手推薦異構(gòu)存儲系統(tǒng),除了可以滿足請求量、網(wǎng)絡(luò)帶寬、平均處理時延等推薦系統(tǒng)的核心性能指標,在容量和成本方面相比基于 DRAM 內(nèi)存的方案也更具優(yōu)勢;
· ? 英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存非易失性的特性,讓快手推薦系統(tǒng)具有更強的可用性,其故障恢復(fù)時長可獲得高達百倍的縮短1;
· ? 采用英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的快手異構(gòu)存儲系統(tǒng),在滿足性能需求的同時,還能幫助快手推薦系統(tǒng)的 TCO 降低 30%1。
· ? 采用英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存后,快手單 Redis 實例的內(nèi)存容量獲得了一倍以上的提升,其 Redis 服務(wù)的 TCO 也降低了 30%2。
· 為超大規(guī)模推薦系統(tǒng)重構(gòu)存儲系統(tǒng)
· 互聯(lián)網(wǎng)短視頻的持續(xù)火熱,使得更多民眾可以利用短視頻 APP 普遍參與到短視頻的制作與傳播中。作為國內(nèi)短視頻服務(wù)行業(yè)的佼佼者,快手每天都會迎來 2 億活躍用戶以及千萬級的短視頻上傳量2。如何在海量用戶以及海量短視頻內(nèi)容間構(gòu)建起一個橋梁,既能讓更多用戶在屏幕上實時刷出符合自己喜好的作品,又能隨時對內(nèi)容進行點評,或 “贊” 或 “踩”,無疑是快手在后臺系統(tǒng)構(gòu)建時關(guān)注的一大焦點。
· 針對用戶希望獲取內(nèi)容實時推薦的需求,快手從誕生伊始,就一直持續(xù)、大量地投入于內(nèi)容推薦系統(tǒng)的建設(shè)和技術(shù)更新。隨著用戶和短視頻作品數(shù)量的不斷增長,如何在承載高峰期每秒數(shù)十萬并發(fā)調(diào)用量的同時,從上百億級別的短視頻庫中,通過千億參數(shù)級別的深度模型將合適的內(nèi)容推薦給不同的用戶,就成為了關(guān)鍵的課題。為此,快手結(jié)合最新技術(shù)趨勢,基于異構(gòu)設(shè)備構(gòu)建了計算與存儲分離的推薦系統(tǒng)架構(gòu)。
· 如圖一所示,快手在推薦系統(tǒng)中采用了計算與存儲分離的架構(gòu),其由推薦服務(wù)、預(yù)估服務(wù)和召回服務(wù)等計算型服務(wù),以及用戶畫像、參數(shù)服務(wù)器和分布式索引等存儲型服務(wù)組成。前者承擔了推薦策略計算、模型預(yù)估、視頻檢索等工作,而后者則為推薦系統(tǒng)中上億規(guī)模的用戶畫像、數(shù)十億規(guī)模的短視頻特征以及千億規(guī)模的排序模型參數(shù)提供存儲和實時更新能力。
圖一 計算與存儲分離的快手推薦系統(tǒng)架構(gòu)
眾所周知,短視頻的典型應(yīng)用場景是碎片時間,當用戶在快手 APP 上隨意滑動瀏覽時,留給推薦系統(tǒng)的處理時長往往只有毫秒級。在計算模塊提供高性能策略計算之余,如何讓億級規(guī)模的海量存儲數(shù)據(jù)為推薦系統(tǒng)提供實時支持,無疑更富挑戰(zhàn)。
因此,快手基于異構(gòu)設(shè)備,針對不同應(yīng)用場景,采用了多樣化的技術(shù)實現(xiàn)方式。以分布式索引為例,要在大規(guī)模分布式存儲集群中高速檢索數(shù)據(jù),離不開索引的力量。為提升高并發(fā)下的索引性能,快手采用了基于內(nèi)存的鍵值
(Key Value,KV) 數(shù)據(jù)庫來構(gòu)建分布式索引系統(tǒng)。
而作為推薦系統(tǒng)的另一重要基石,快手 Redis 服務(wù)的性能表現(xiàn)也會對推薦效果產(chǎn)生顯著影響。用戶在短視頻應(yīng)用中的行為軌跡會被存儲在 Redis 數(shù)據(jù)庫中,并最終構(gòu)成對用戶的精準畫像。而 Redis實例能使用的內(nèi)存容量越大,就意味著可被存儲在內(nèi)存之中、能實現(xiàn)高速讀取的信息越多,用戶畫像也就更為具體,對用戶的內(nèi)容推薦也會更為準確。
不僅如此,Redis 服務(wù)還為快手短視頻提供了強有力的社交服務(wù)能力的支撐,例如點贊、發(fā)表評論以及彈屏等功能。Redis 數(shù)據(jù)庫基于內(nèi)存的設(shè)計,保證了這些社交行為能流暢運作,以輸出良好的用戶體驗。
然而,隨著數(shù)據(jù)量的高速增長,快手基于內(nèi)存的推薦系統(tǒng)存儲服務(wù)和
Redis 服務(wù),正在經(jīng)受越來越大的挑戰(zhàn)。一方面受限于物理服務(wù)器 DRAM 內(nèi)存容量規(guī)格的限制,各服務(wù)實例的內(nèi)存容量始終難以大規(guī)模擴展;而另一方面,DRAM 內(nèi)存昂貴的價格,也造成快手 TCO 的急劇提升。同時,DRAM 內(nèi)存易失性的特點,也使系統(tǒng)在故障恢復(fù)時需要耗費更多的時間。
為了破解上述挑戰(zhàn),向用戶持續(xù)提供更優(yōu)質(zhì)的內(nèi)容推薦服務(wù),快手在利用異構(gòu)混合計算方案有效提升計算型服務(wù)性能之余,也通過與英特爾開展的深入技術(shù)合作,引入英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存產(chǎn)品,對推薦存儲系統(tǒng)和 Redis 數(shù)據(jù)庫實施了優(yōu)化改造。
軟硬相濟 實現(xiàn)更強存儲能力
在傳統(tǒng)存儲架構(gòu)中,大容量持久化存儲主要由硬盤 (Hard Disk
Drive,HDD)或固態(tài)盤 (Solid State
Drive, SSD) 來承擔,而隨著1數(shù)據(jù)應(yīng)用場景的日益多樣化,以及對存儲性能提出的更高要求,存儲需求層次也變得越來越復(fù)雜。采用更多的 DRAM 內(nèi)存,無疑可以獲得更強的性能,但也會帶來更高的成本。為此,快手選擇全新的異構(gòu)存儲結(jié)構(gòu),以求在性能、容量和成本三個維度上實現(xiàn)優(yōu)選。
在快手原本的設(shè)計中,高性能的 DRAM 內(nèi)存將承擔性能要求最高,但容量要求最小的那部分存儲需求,而性能要求較低,容量要求高,且要求持久化的存儲任務(wù)則交給固態(tài)盤和硬盤。但與此同時,快手仍需面對另一種可能的場景,即當存儲系統(tǒng)對性能、容量和持久化均有著較高要求時,該如何應(yīng)對?
DRAM內(nèi)存
圖二 英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存是兼顧內(nèi)存級性能和大容量持久化存儲能力的好選擇
如圖二所示,基于 3D XPoint? 存儲介質(zhì)打造的英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存,顯然是快手補上這一環(huán)的理想之選。這一創(chuàng)新的內(nèi)存產(chǎn)品類別,不僅擁有與 DRAM 內(nèi)存相近的讀寫性能、訪問時延和相比 SSD 更強的耐用性,可在高并發(fā)的推薦系統(tǒng)場景中,實現(xiàn)不亞于 DRAM 內(nèi)存的性能表現(xiàn);它還可憑借大容量的特性,幫助快手輕松構(gòu)建起 TB 級的內(nèi)存數(shù)據(jù)庫。更難得的是,它擁有 DRAM 內(nèi)存不具備的數(shù)據(jù)持久性 (或稱非易失性,基于 AppDirect 模式),可為快手的推薦異構(gòu)存儲系統(tǒng)帶來更高的可用性。
為了讓由 DRAM 內(nèi)存、傲騰? 數(shù)據(jù)中心級持久內(nèi)存、固態(tài)盤以及硬盤組成的異構(gòu)存儲系統(tǒng)發(fā)揮更大效能,快手與英特爾等合作伙伴一起,針對推薦系統(tǒng)中的不同場景進行了大量可行性分析和架構(gòu)設(shè)計調(diào)研,并根據(jù)英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的特性,針對分布式索引和參數(shù)服務(wù)器中的 KV 存儲進行了重新設(shè)計。
圖三 引入英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存構(gòu)建的異構(gòu)存儲系統(tǒng)
新的設(shè)計如圖三所示,架構(gòu)中新增了 MemPool 組件。作為一種緩沖池,該組件能讓系統(tǒng)針對不同的訪問類型來決定是使用 DRAM 內(nèi)存,還是使用英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存;例如,在使用參數(shù)服務(wù)器進行推薦模型預(yù)估時,由于模型中的神經(jīng)網(wǎng)絡(luò)大小與嵌入表
(Embedding Table) 相比較小,因此神經(jīng)網(wǎng)絡(luò)可被
MemPool 分配進入 DRAM 內(nèi)存來提高預(yù)估的性能。而在分布式索引使用場景中,系統(tǒng)可根據(jù)所需索引數(shù)據(jù)的大小,為其在英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存中分配不同的 slab (一種內(nèi)存分配機制),從而提升存取性能和效率。
在這些主要的設(shè)計之外,快手還針對英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的特性,實施了多種調(diào)優(yōu)方案。首先在數(shù)據(jù)讀取場景中,通過采用非一致內(nèi)存訪問
(Non-Uniform Memory Access Architecture,NUMA) 節(jié)點綁定的方式,避免英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存在進行數(shù)據(jù)存取時,在不同的 NUMA 節(jié)點間切換,以實現(xiàn)更好的讀寫性能;同時,無鎖和零拷貝 (Zero Copy)
技術(shù)的加入,也避免了臨界區(qū)對英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的頻繁訪問,以及降低數(shù)據(jù)訪問對內(nèi)存帶寬的占用,從而提升存儲系統(tǒng)的整體效能。與此同時,英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的非易失性特性,也能讓新設(shè)計的索引系統(tǒng)獲得分鐘級別的故障恢復(fù)速度,與之前小時級別的恢復(fù)速度相比,提升達百倍之多1。
而在 Redis 服務(wù)中,英特爾?傲騰? 數(shù)據(jù)中心級持久內(nèi)存大容量的特性,令快手單 Redis 服務(wù)器內(nèi)存容量達到了 TB 級,使單 Redis 實例的內(nèi)存容量從 4GB 擴展到 8GB,實例的內(nèi)存容量得以翻番,為業(yè)務(wù)的進一步發(fā)展提供了更強的硬件基石。
滿足性能需求的同時降低 TCO
為驗證全新的快手異構(gòu)存儲結(jié)構(gòu)在采用英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存,并實施了一系列軟件調(diào)優(yōu)后的實際性能表現(xiàn),快手與英特爾一起,使用真實線上請求數(shù)據(jù),對采用了英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的各個相關(guān)系統(tǒng),如推薦系統(tǒng)中所用到的索引系統(tǒng),進行了一系列的模擬壓力測試。
圖四 基于英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的索引系統(tǒng)壓力測試結(jié)果
測試圍繞著推薦系統(tǒng)中核心的請求量、網(wǎng)絡(luò)帶寬、平均處理時延以及 P99 處理時延四大核心性能指標展開。測試結(jié)果如圖四所示,可以看出,在這四個核心指標上,英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存均獲得了與 DRAM 內(nèi)存相近的性能表現(xiàn),尤其是在網(wǎng)絡(luò)帶寬指標上,雙方差值僅為 0.16%2。
在實現(xiàn)相近性能的同時,傲騰? 數(shù)據(jù)中心級持久內(nèi)存大容量和非易失性的特性,以及相比
DRAM 內(nèi)存更為實惠的價格,讓快手的成本得到了有效控制。來自快手的估算顯示,通過引入英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存,快手推薦系統(tǒng)以及 Redis 服務(wù)的 TCO 均獲得了 30% 的降低12。
結(jié)語
作為國內(nèi)率先將英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存引入推薦系統(tǒng)的互聯(lián)網(wǎng)企業(yè),快手以其卓越的技術(shù)創(chuàng)新能力,為異構(gòu)存儲結(jié)構(gòu)在推薦系統(tǒng)中的構(gòu)建和運用,以及大容量 Redis 服務(wù)在短視頻服務(wù)中的運用,進行了有意義的探索,并獲得了豐碩的成果。
著眼未來,快手正與英特爾探討成立聯(lián)合實驗室,以借助英特爾各種創(chuàng)新產(chǎn)品和技術(shù),來驅(qū)動自身業(yè)務(wù)的創(chuàng)新及其數(shù)據(jù)中心的升級和演進。上述英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的應(yīng)用,其實就是雙方在這個聯(lián)合實驗室籌備過程中推進的第一個項目。今后快手還將繼續(xù)攜手英特爾,挖掘英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存在旗下其他業(yè)務(wù)場景或服務(wù)中的應(yīng)用價值,推動對各類數(shù)據(jù)處理和存儲系統(tǒng)實施優(yōu)化和革新。
總結(jié)
以上是生活随笔為你收集整理的快手推荐系统及 Redis 升级存储的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英特尔 i5-9400F,或将成为本年最
- 下一篇: 英特尔内存革新助平安云 Redis 云服