技術架構+應用場景揭祕,為什麼高斯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系列合集。

 

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