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