技術架構+應用場景揭祕,為什麼高斯Redis比開源香?

語言: CN / TW / HK
摘要:高斯Redis即保留了開源Redis的能力,同時憑藉其存算分離的架構,在成本、穩定性、可靠性、一致性等方面做出了新的突破,也更加適用於當下數據規模龐大的互聯網業務。

本文分享自華為雲社區《【大廠內參】第12期:技術架構+應用場景揭祕,為什麼高斯Redis比開源香?》,作者:華為雲社區精選。

點的外賣總能讓離店近的外賣小哥送來,雙11秒殺結束後產品能立刻下架,12306火車票保證從來不超賣,微博下拉就能刷新出好友動態……這些日常碎片的背後都有着Redis的身影。

提起Redis,互聯網從業者無人不知,無人不曉。畢竟,開源Redis作為一款經典的“緩存”產品,能支撐眾多業務架構搭建,在遊戲、電商、社交媒體等行業中發揮着重要的作用,廣受開發者青睞。

然而近年來,隨着各行業規模逐漸擴大,幾乎只能依附於關係型數據庫的傳統“緩存”逐漸難以支撐上層業務,越來越力不從心。

一旦業務規模擴大後數據量逼近內存上線,開源Redis輕則發生重要數據逐出,重則導致節點OOM宕機。而且開源Redis為了訪問快速,全部數據都保存在內存中,其獨有的fork機制,更讓平時的內存使用不得高於50%,使得內存價格一直居高不下,導致部署成本非常高。

為了解決這些難題,華為雲推出了自研的企業級Key-Value數據庫——雲原生分佈式數據庫GaussDB(for Redis)(下文簡稱高斯Redis),讓開發者用更低的成本構建依賴緩存的應用,且性能更高,運行更穩定。本文將從高斯Redis的技術架構和應用場景出發,一一道來為什麼高斯Redis比開源香,以及它是如何做到又快又好的。

開源不夠,自研頂上

開門見山,先看看開發者最關心的性能和成本。如下圖所示,與開源Redis相比,高斯 Redis在成本、可用容量、吞吐、壓縮上都有非常大的優勢:

注:比較相同數據容量(約200G)的成本開銷

核算下來,高斯Redis以1/4的價格擁有10倍以上的可用空間,整體成本相當於是開源Redis自建數據庫的1/40,這裏還不包括自建Redis數據庫需要額外的搭建、運維、監控、升級擴容等各項成本。

同樣,對比高斯Redis和開源Redis集羣在X86架構下的性能測試,結果顯示,它能較開源Redis集羣能提供更高的QPS,更低的訪問延遲,以及更低的數據存儲成本。

  1. 性能優勢:在相同測試條件下,高斯Redis的QPS較開源Redis集羣提高了11%~19%,平均延遲和P99比Redis集羣降低了70%以上,p9999比Redis集羣降低了15%以上。
  2. 抗寫優勢:在數據量大於內存的寫測試中,原生Redis集羣因內存限制而OOM,高斯Redis依然可以提供不俗的性能服務,它的可用的存儲空間由底層SSD大小決定的,相比原生Redis集羣抗寫優勢顯著。
  3. 據存儲成本更低:高斯Redis提供了高效的數據壓縮服務,其佔用的存儲空間只有開源Redis集羣的十分之一,相當於數據存儲成本降低了10倍。

那麼,高斯Redis的優勢源自什麼?從它的架構中或許可以窺見一斑。

存算分離,突破瓶頸

高斯Redis有兩個跟業界完全不一樣的特性,第一個便是獨有的存算分離架構, 計算層實現熱數據緩存,存儲層實現全量數據的落盤,中間通過RDMA高速網絡互連,通過算法預測用户的訪問規律,實現數據的自動冷熱交換,最終達到性能提升。

該架構基於華為內部的自研分佈式共享存儲池, 它也是華為全棧數據服務的基石,比如文件EVS、對象存儲OBS、塊存儲,還有數據庫族、大數據族都依賴於此,可想它的強大及穩定性。

高斯Redis基於共享存儲池實現了一套Shared Everything的雲原生架構,充分發揮了雲原生的彈性伸縮、資源共享的優勢,使得它具備強一致、秒擴容、低成本、超可用等特性,完美避開了開源Redis的主從堆積、主從不一致、fork抖動、內存利用率只有50%、大key阻塞、gossip集羣管理等問題。

至於高斯Redis的存算分離架構的設計和實現原理,在線課程當Redis遇見計算存儲分離中有更詳細的解讀,包括軟件架構的剖析,計算層的模塊的分工,組網的設計以及容災架構等等。

在存算分離的架構下,高斯Redis的優勢可以總結為:強一致、高可用、彈性伸縮、高性能。

強一致

高斯Redis將全量數據下沉到強一致的共享存儲池,得益於共享存儲池的3副本機制,因此寫入高斯Redis的數據,在客户端收到回覆時,數據也將是3副本強一致的,保證宕機的時候數據不會丟失,從而為業務提供前後一致的狀態,再也不用擔心主從切換後的數據一致性和丟失問題。

高可用

其次是高可用,受益於分佈式共享存儲池,高斯Redis的每個計算節點都可以看到並共享所有數據,當某一個計算節點發生故障掛掉,其維護的slot路由信息,會被剩下的節點自動接管。由於不涉及底層數據的遷移,這個接管過程非常快。所以N個節點下,最多可以容忍掛掉N-1個節點。

彈性伸縮

再就是彈性伸縮帶來的秒擴容能力,實現按需擴容計算和存儲。計算資源的擴容只涉及到元數據的修改,把相應的slot路由信息遷移到新的節點上,遷移速度非常快。由於採用的共享存儲,大多數情況下存儲擴容只要進行邏輯擴容,不涉及數據的搬遷,在後台修改存儲配額即可。

高性能

存算分離的架構看似比較重,鏈路比較複雜,實則在硬件採用、軟件優化上,可以做的更大膽更激進,比如RDMA網絡、用户態協議、持久化內存等等。因此受益於這些專屬的存儲設備,加上計算層全負荷分擔架構(不引入從節點,因此性能輕鬆翻倍),對比同類商業數據庫產品,在數據量大於內存的存儲場景下,高斯Redis的性能表現很好。另外,對比開源Redis,在數據小於內存的點查場景下,高斯性能也有很大優勢。

第二個特性是多模架構帶來的產品使用便捷性。高斯Redis是多模數據庫Gauss NoSQL的一員,Gauss NoSQL提供了全棧的分佈式KV引擎、用户態文件系統、存儲池等技術,只需要在接口上封裝Redis協議,即可輕鬆實現一個全新的NoSQL產品。類似的,華為還提供了MongoDB、Cassandra、Influx等NoSQL引擎。

也正是得益於高斯Redis的獨特優勢,使得它在一些典型的應用場景下,能夠應對各種突發情況,最大化發揮出Redis的特性。

互聯網業務神器,支撐海量存儲場景

Redis最常見的應用場景是緩存,用來存放秒殺、熱點事件的數據,比如微博熱搜。同時,憑藉其優異的存儲能力,緩存場景之外的諸多應用Redis也可以輕鬆應對,比如

流: feed、消息隊列、IM聊天、IoT心跳上報;

只讀狀態: 歷史訂單、日誌審計、歸檔信息、歷史軌跡、消費記錄、物流詳情;

可變狀態: BI報表、金融風控、智能客服、廣告推薦、標籤工程、用户畫像、地理位置、路徑規劃、知識圖譜等。

下面,以其中的一些場景為例,具體看看高斯Redis到底有多強大?

Geo

飯點時打開大眾點評查看附近的餐館,外賣小哥根據距離遠近來決定配送的路徑規劃……這些都依靠LBS服務,它的實現又需要Redis來存儲地理位置數據。但開源版本Redis因為內存限制,一直沒有大規模應用支持地理位置信息存儲管理的Geo功能。

高斯Redis使用磁盤替代內存,解決了這些難題,它的Geo功能適用於數據量大、讀寫頻繁的場景,可以應對諸如外賣平台、點評平台、找房平台中,隨着用户增長而對應的地理位置信息的數據量的增長,最高可達TB級別。以下圖為例,可以看到在高斯Redis支持下,外賣系統可以使用Geo的相關命令,讓用户獲取騎手的實時位置,騎手也能找到附近可配送的訂單,最終順利將用户的外賣送到用户。

計數

社交平台每條熱搜記錄的搜索量數值;用户註冊一個帳號後,網站記錄的關注數、粉絲數、動態數;一個接口一分鐘被限制100次請求等。這些數據背後,是一個個計數器在工作。

計數是典型的強一致應用場景,比如電商在秒殺活動中,往往會搭建Redis主從集羣給下層MySQL做緩存,用Redis的計數器功能抵住流量壓力。

所以如果數據發生不一致,計數器就會得到錯誤的信息,整個數據庫可能面臨崩潰的危險。但原生Redis的主從同步是異步的,當主節點寫入數據後,從節點不保證立刻更新數據,如果此時讀取數據,讀到的就是過期的舊數據,產生數據不一致問題。高斯Redis則可以把全量數據下沉到強一致共享存儲池,徹底摒棄了開源Redis的異步複製機制。另外,計算層將海量數據進行分片,在故障場景下,自動進行接管,實現了服務的高可用。

即時通訊

即時通訊(簡稱IM)是一個實時通信系統,允許兩人或多人使用網絡實時的傳遞文字消息、文件、語音與視頻。它最核心的是消息系統,包括聊天消息的同步、存儲和檢索。而消息存儲庫和同步庫又對存儲層的性能有很高的要求:要能支撐海量消息數據的永久存儲,具備極高的寫入吞吐能力,儘可能低的讀取延遲等等。

綜上,存儲層的性能會直接影響到IM系統的用户體驗。高斯Redis在性能和規模上可以滿足IM系統對存儲層的嚴格要求,它作為IM系統的存儲層,可以將大量的隨機寫轉換為順序寫,提升數據寫入性能,再通過讀緩存、bloom filter優化讀取性能。

下圖是一個基於高斯Redis的IM應用案例,使用的是Stream作為基本數據結構。創建一個羣聊時,在Redis中對應地為該羣聊創建一個Stream隊列。在發送消息時,每個用户都將消息按照時間順序添加到Stream隊列中,保證了消息的有序性。

這個應用中涉及到了一種數據類型——Redis Stream,它也是一種消息隊列,提供消息的落地存儲功能,讓每個客户端可以訪問任意時刻的消息,並記錄訪問位置,保證消息不會丟失,以IM中的文字聊天為例,使用Stream作為中間件,實現聊天室的發言和信息查看。高斯Redis可以存儲和處理大規模的Stream數據,魯棒性強的同時成本相對更低,適用於海量消息隊列的場景。所以,相較於原生Redis,是更為理想的Stream隊列承載方案。

Feed流

互聯網時代,微博、抖音、頭條等都在通過Feed流(信息流)將關注的好友或感興趣的內容及時推送給用户,吸引用户的興趣,提高產品的商業價值。Feed流系統是Feed生成者將生產的Feed經過存儲分發系統傳遞給Feed消費者,最終以某種展現形式。

整個系統最關鍵的是同步存儲系統,首先是內容存儲模塊,由它來存儲最原始的內容,比如用户發的一條微博;其次是關聯關係存儲模塊,存儲的是用户之間的關係;最後是信箱模塊,也叫消息傳遞模塊 ,通過它將消息傳遞到每個關聯用户手中。

在Feed流場景下,高斯Redis能夠支撐海量消息內容的存儲和低延遲訪問,以及關聯關係的增刪查改。在同步存儲系統中的信箱存儲模塊,高斯Redis的Stream數據結構可以實現隊列能力,實現Feed流消息讀取。

推薦系統

電商、社交等領域的推薦系統非常發達,追溯其背後技術,不外乎這三個環節:分佈式計算、特徵存儲、推薦算法。其中,特徵數據的存儲起到關鍵的銜接作用,由於KV形式的數據抽象與特徵數據極為接近,因此推薦系統裏往往少不了Redis的身影。

由於開源Redis在大數據場景下的一些固有痛點,高斯Redis是不少客户首選的數據庫選型。由高斯Redis負責核心的特徵數據存儲,提供穩定、可靠的KV存儲能力。加上它的高性能持久化技術和細粒度存儲池,可幫助企業將數據庫使用成本降低75%以上。高斯Redis獨特的多線程設計和全部節點可寫,抗寫能力強,可從容應對Spark灌庫壓力和實時更新。

而且因為高斯Redis完全兼容Redis協議,即開即用,用户可使用熟悉的Spark SQL語法輕鬆訪問,完成特徵數據灌庫、更新、提取等關鍵任務。 與此同時,數據源經過Flink加工後,也可輕鬆存入高斯Redis中。

成為VMALL智能推薦背後的英雄

當電商平台對AI算法模型的需求越來越多,特徵數據平台的統一建設是不少開發團隊頭疼的事情。 只有通過統一的特徵數據存儲,才能改變原有的“數據孤島”,解決生產重複造輪子的窘境。

華為商城(VMALL)就有這樣的困擾,VMALL使用了大量的AI和大數據技術,用來支撐智能推薦、精準營銷、智能搜索、選品投放等業務的高效開展。但因為特徵數據準備階段缺乏通用平台,嚴重影響研發效率。

特徵數據庫需要承擔打通線上/線下多個場景,對接批式/流式多種數據源,滿足訓練/推理多樣消費需求,相應地對存儲也提出了高要求:既能提供低成本的海量數據存儲並方便擴容, 又能保證數據的絕對可靠和服務的高可用;既要滿足低時延的線上推理,又要滿足高吞吐的線下訓練; 既能提供簡潔的KV接口供下游輕鬆消費,又要兼容主流的批式/流式處理引擎(Spark/Flink等)供上游快速接入。

為了滿足這些要求,深入調研後,VMALL大數據團隊最終選擇了高斯Redis作為特徵數據庫。

在線上推理的特徵生產(抽取、處理、存儲)中,特徵平台會定時調度Spark作業,從各種數據倉庫、數據湖中提取數據,進行特徵工程處理後,存入高斯Redis。至於實時特徵,則由Flink消費Kafka,或流式存儲中的數據,持續更新到高斯Redis中。

在特徵消費的推理環節,對於使用實時特徵的場景(如實時推薦系統),由Flink從Kafka中實時取得用户請求記錄,並從高斯Redis查詢取得特徵,將記錄和特徵拼接成訓練樣本,存儲到文件中,供線下訓練使用。

目前VMALL已完成一期的特徵數據遷移,包括“特徵生產”業務中的“Spark離線特徵生產”,以及“特徵消費”業務中的“線下訓練Flink特徵查詢”。遷移後的運行結果顯示,高斯Redis在業務高峯時段時延穩定,能夠滿足VMALL當前業務要求。其中,讀平均時延0.2ms(p99<0.4ms),寫入平均時延0.6ms(P99<2ms)。

費用方面,按照VMALL的特徵體量測算,億級用户,每個用户的特徵數量是數K-數10K,高斯Redis一年的費用僅3W出頭,如果選用社區Redis,費用在20W+

綜上,高斯Redis在VMALL特徵工程平台建設中,起到了關鍵作用。它在成本,可靠性,可擴展性等方面具有優勢,可作為特徵數據存儲的理想方案,提供企業級的穩定可靠的Redis服務能力。

最後

作為一款KV數據庫,高斯Redis即保留了開源Redis的能力,同時憑藉其存算分離的架構,在成本、穩定性、可靠性、一致性等方面做出了新的突破,它也更加適用於當下數據規模龐大的互聯網業務,包括電商平台的秒殺、推薦系統、社交平台的信息流等等。本文只是簡單地解讀了高斯Redis的幾個典型特性,更多技術細節,以及應用案例、遷移指南等可以查看高斯Redis系列合集。

 

點擊關注,第一時間瞭解華為雲新鮮技術~