2020年9月20日,阿里云云數據庫Redis正式上線Tair(又稱阿里云Redis企業(yè)版)持久存儲系列,該系列包含兩種產品形態(tài):持久內存型和容量存儲型。該系列產品是Tair系列繼性能增強型和混合存儲型后又一力作,其兼容原生Redis的數據結構和接口,并具備更大容量規(guī)格、抖動更低且命令級數據持久化的能力。該自研產品打破了傳統(tǒng)Redis中的數據只能在易失性存儲上進行讀寫的刻板印象,針對客戶不同業(yè)務階段的數據存儲要求與服務成本考量,全新實現(xiàn)了持久性更強、成本更低的KV數據庫。
開源Redis的三大痛點
Redis是目前全球最主流的Key-Value數據庫產品,作為高速緩存,在緩解系統(tǒng)大并發(fā)高壓力的場景上已經被無數開發(fā)者和企業(yè)所認可,尤其在各種行業(yè)和場景都有著非常廣泛的應用,可以說Redis是應對高并發(fā)、大流量、低延遲業(yè)務場景的不二選擇。然而,隨著客戶業(yè)務的快速發(fā)展,Redis對業(yè)務的重要性持續(xù)上升的同時系統(tǒng)壓力和數據量也不斷地攀升,這時原生開源Redis便會出現(xiàn)如下的一些矛盾:
1.數據可靠性與在各場景種廣泛使用Redis之間的矛盾。Redis有豐富的數據結構和操作,除了作為后端數據庫的前置高速緩存外,還在諸多實際涉及到數據更改的業(yè)務場景上發(fā)揮著重要的作用,這是用戶往往會關注數據持久化能力。在開源Redis中,用戶可以使用AOF的Always對每條命令都進行fsync刷盤來保證數據可靠性,但是該配置會導致整體性能大幅度下降,因此生產環(huán)境往往采用另一個AOF策略,即Everysecond每秒持久化。即便如此,在一個高吞吐的場景下(例如10萬TPS),一秒的數據丟失可能就意味著數萬條數據記錄的丟失,這是一些對數據可靠性要求很高的用戶無法接受的,這個特點也在本質上直接制約了Redis在更多場景下的深入使用。
2.服務高性能與數據可靠性之間的矛盾。當開源Redis使用AOF得到秒級數據持久化能力的同時,該機制還需要進行定期的BGREWRITEAOF操作,通過fork一個進程在后臺清理持續(xù)增長的AOF文件,在大容量實例下的fork問題會帶來服務明顯的抖動,在一些服務抖動敏感的場景,例如游戲對戰(zhàn),用戶體驗會大打折扣。另外,在大容量Redis啟動時加載持久化文件會耗時很久,緩存無法做到快速恢復??梢哉f,開源版無法同時擁有服務全程高性能和數據持久化。
3.快速攀升的成本與業(yè)務不同階段的服務訪問熱度之間的矛盾。開源Redis的數據讀寫均發(fā)生在內存,隨著數據規(guī)模增大,內存資源占用會隨之遞增,而每臺服務器可使用內存又是一個較小的有限值,因此服務器數量也隨著被迫快速上升,整體服務成本會大幅度攀升。另一方面,隨著業(yè)務的發(fā)展,當業(yè)務進入發(fā)展后期,數據量已經形成一定規(guī)模,而數據的訪問頻度則慢慢降下來,如果在保持現(xiàn)有應用架構和邏輯不變的情況下降低數據存儲的成本便是首位考慮要素。而開源Redis只能使用較為昂貴的內存進行數據存取,沒有平滑的替代方案,客戶往往在這種情況下陷入兩難。
綜上所述,隨著客戶放在Redis中的數據越來越多且愈加重要,開源Redis本身可能在上述三個方面都無法滿足客戶更高的業(yè)務場景與服務成本要求。
Tair完美解決上述三大痛點
基于上述的痛點,阿里云Redis團隊在自研內存數據庫系列Tair中推出了針對不同數據溫度場景的持久內存型和容量存儲型,二者作為持久存儲系列的兩種產品形態(tài),其工作原理均是將數據放置在非易失性存儲介質上,在數據庫啟動時無需進行數據加載,應用直接訪問相關數據,在寫入數據時也能保證命令級的數據可靠性,寫入一條數據即持久化存入非易失性介質,同時也消除了fork帶來的服務抖動,而對業(yè)務應用則保持Redis的通信協(xié)議和數據結構與API,用戶像使用一個原生Redis一樣輕松上手使用它們。在硬件上,利用Intel傲騰(AEP)與阿里云ESSD云盤等先進硬件,在實現(xiàn)命令級持久化的同時有效的為客戶降低了整體服務擁有成本。
圖1.原生Redis與阿里云Tair的持久化機制對比
持久內存型是基于Intel傲騰(AEP)持久內存技術,兼容絕大部分Redis數據結構和命令,并利用AEP的App Direct模式實現(xiàn)了高性能下的命令級持久化能力。在性能測試中其讀寫性能約為開源Redis的90%,而在定價上,由于新硬件帶來的成本紅利,該產品形態(tài)的定價是阿里云社區(qū)版Redis價格的70%左右,整體性價比更高,適用于要求高吞吐、低延遲同時對數據可靠性要求高的熱數據存取場景。
容量存儲型是基于阿里云ESSD云盤技術,兼容Redis核心數據結構與命令,對標市面上基于RocksDB構建的大容量、兼容Redis的數據存儲系統(tǒng),提供了超大容量、平均性能有所妥協(xié)的溫冷數據存取服務。在基準性能測試中其基礎數據類型讀性能中位數約為開源Redis的70%,寫性能中位數約為開源內存版的55%,而服務擁有成本最低可降低至阿里云Redis社區(qū)版的15%左右,適用于高存儲密度、低訪問頻率,對數據持久化要求高,且成本作為首要考慮因素的溫冷數據存取場景。
圖2.阿里云Tair持久內存型與容量存儲型
阿里云產品負責人黃鵬程(花名馬格)表示,隨著Tair持久存儲系列的兩種產品形態(tài)的發(fā)布,Tair的產品系列已經覆蓋了從高訪問強度到高存儲密度的全線企業(yè)級Redis服務。阿里云云數據庫Redis會將Redis作為用戶上云快速接入、體驗原汁原味開源Redis的云上服務,同時重點打造集團自研KV存儲Tair這款企業(yè)級云原生內存數據庫,全面覆蓋客戶不同業(yè)務階段對于Redis性能、功能與成本的更高要求。
圖3.阿里云Tair產品矩陣
隨著云計算的技術發(fā)展,云原生數據庫已取代傳統(tǒng)數據庫成為市場主流。阿里云是國內最早推出云數據庫的廠商之一,至今為止已經形成了完整的產品布局,擁有關系型數據庫、NoSQL數據庫、數據倉庫、數據庫生態(tài)工具和云數據庫專屬集群五大板塊。其中NoSQL數據庫中的阿里云Redis從2015年商用以來,一直是全球領先的云內存數據庫產品,擁有Redis和Tair兩個主要產品,其背后的研發(fā)團隊擁有眾多頂級Redis社區(qū)Committer,并在Redis全球核心團隊(共五人)中擁有一名核心成員,在Redis技術發(fā)展中持續(xù)為社區(qū)做出貢獻。
這是阿里云專為大中型企業(yè)用戶定制優(yōu)化的解決方案,填補了市場空白,具有資源獨享、自主可運維、多數據庫混合部署等特點,讓用戶既享受到云數據庫的靈活性,又滿足了企業(yè)對數據庫合規(guī)性、高性能和安全性要求,最大限度地保留了企業(yè)IDC運維管理模式,減少企業(yè)上云阻力,助力企業(yè)數字化轉型。