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