一文讀懂內存數據庫

 

“全球內存數據庫市場,將以19.65%的複合年增長率不斷迅速發展。”分析機構Verified Market Research對內存數據庫市場的發展報以極大的肯定。

潛力巨大,看起來很不錯。

事實上,隨着雲計算、互聯網技術的蓬勃發展,用戶場景變得越來越複雜,數據增長越發明顯,帶來了海量數據訪問處理的新挑戰。然而,傳統數據庫的管理處理能力,已經不能完全勝任新時期的企業發展,也難以應對新數據時代下的新挑戰。

備受業界關注的Key-Value非關係數據庫映入大家眼簾,NoSQL因其高可擴展性、高性能、彈性等優勢,成爲新數據時代的“弄潮兒”

 

01

Redis雖然好,但阿里云爲何還力推Tair

全球雲觀察分析指出,Key-Value數據庫按照鍵值對的形式進行組織、索引和存儲,因而帶來了內存數據庫在具體應用中新的提升。在實際落地的用戶案例中,Key-Value存儲表現雖好,可以非常有效地減少讀寫磁盤的次數,帶來了比SQL數據庫存儲更好的讀寫性能,但也有一定限制,比如適合不涉及過多數據關係業務關係的業務數據。 

 

 

Key-Value數據庫大家可能瞭解還是比較多,比如:

 

Aerospike

LevelDB

Scalaris

Project Voldemort

HyperDex

Berkeley DB

Apache Accumulo

Apache Cassandra

Redis

MongoDB

Memcached

 

其中,在近年來,Redis的表現尤爲突出。這是爲什麼呢?

沒有比較就沒有鑑別。那麼,我們拿Memcached與Redis做一個簡單的對比分析。作爲一個高性能的key-value存儲系統,Redis和Memcached有點類似,爲了保證數據讀寫效率,在內存中實現了數據的緩存。

但是,Redis實現了更好的功能:

一方面針對更新的數據,週期性地寫入磁盤,並且在記錄文件中,追加寫入修改操作日誌;

另一方面,與此同時,還進一步實現了master-slave主從同步功能,帶來主從服務器更高的讀寫效率。此外,在部分場景中,Redis對關係數據庫起到很好的補充作用。

Memcached僅僅支持DataTable或者HashTable簡單數據類型,Redis支持String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)多種數據類型,實現豐富的數據操作。

爲了方便大家使用,Redis爲用戶提供了Python、Ruby、Erlang、PHP客戶端。

這麼優秀的Redis,業界傳說由一位出生在西西里島的意大利人antirez發明。回顧一下Redis的前世今生,你不難有一些新的發現。

作爲系統管理員,在2004到2006年期間,antirez主要從事嵌入式工作。後來接觸到web,2007年與友人共同創立網站LLOOGG,爲了解決網站的負載問題,在2009年開發了Redis內存數據庫。

從2009年誕生至今,Redis已經發展迭代了多個版本,最新的一個主要版本爲Redis 6.0.1,於2020年5月2日正式發佈。如 Redis發明者antirez所言,這個版本有三最,即迄今爲止最能體現企業化、有史以來改動最大、參與開發人數最多。

發展了十年有餘,實屬不易。作爲開源的內存數據庫傑出代表,目前Redis成爲了全球最主流的Key-Value數據庫產品,應對高併發、大流量、低延遲業務場景,備受業界器重,其高速緩存應用方面表現出來了性能優勢。

Redis雖好,然而開源Redis作爲雲內存數據庫,卻有着比較大的侷限性。對此,阿里雲智能數據庫產品事業部高級產品專家黃鵬程分析指出:

其一,在Redis Class下構建大容量服務,成本問題已經出現。在分片數較少,單個分片較大情況下,調用Fork同步操作帶來服務不穩,同時持久化帶來服務恢復緩慢,雖然採用主多從的形式來保證服務的可用性,但在多實例下,其管理成本和內部通信成本的開銷增大。

其二,Redis本身持久化數據的能力有限,最新版本推出了RDB和AOF兩種模式來提升持久化能力。然而在實際應用中,Everysecond每秒持久化的形式十分不利於實際應用,特別是將Redis已經作爲最終存儲數據的數據庫在應用,一旦出現問題,將波及大量的整體數據。“在一個如10萬TPS高吞吐的場景下,一秒的數據丟失可能就意味着數萬條數據記錄的丟失。”對數據可靠性要求很高的用戶來說,這是最大的問題。此外Redis緩存+主存儲方式來提升持久化,也帶來數據一致性、主從數據庫開銷等系列問題。

從實際情況出發進一步分析來看,Redis應對客戶業務快速發展變化上問題頗多。在大容量Redis啓動時,加載持久化文件會耗時很久,緩存無法做到快速恢復。開源版Redis無法同時擁有服務全程高性能和數據持久化。開源Redis的數據讀寫均發生在內存,隨着數據規模增大,內存資源佔用會隨之遞增,而每臺服務器可使用內存又是一個較小的有限值,因此服務器數量也隨着被迫快速上升,整體服務成本會大幅度攀升。

此外,當業務進入發展後期,數據量漸成規模,數據訪問頻度會減少,對於開源Redis現有應用架構和邏輯而言,很難降低數據存儲的成本。 

想要滿足用戶更多的業務場景,以及更優化的服務成本要求,必然需要解決開源Redis本身帶來的弊端。阿里云爲什麼還要推Tair?答案就在此。

 

02

青出於藍而勝於藍,十二年認真錘鍊Tair

Tair的誕生不是一朝一夕,而是歷經了十二年的應用錘鍊。

實際上,阿里雲推出的雲原生內存數據庫Tair,源自阿里巴巴集團重點打造的自研Key-Value數據庫,這是一個完全兼容Redis協議的內存數據庫。

 

 

2004年,淘寶開始應用緩存技術。最先投入應用的是基於前端頁面的緩存技術,採用ESI來標識可以加速和不能加速的網頁內容片段,有效減少了從服務端抓取整個頁面的次數。

隨着淘寶網的流量快速增長,數據庫的壓力與日俱增,基於後端系統的緩存技術應運而生。從服務淘寶詳情和驗證碼等業務的持久化系統TBStore,到初始服務於淘寶用戶中心的TDBM等,後端系統緩存技術經歷了多個系統與階段的演變,以及經驗的積累。到2009年,這些系統、技術經驗經過進一步的研發創新,融合成了Tair。

2009年4月,作爲一款真正的企業級雲內存數據庫產品,Tair正式誕生。隨即應用在淘寶核心業務系統,隨後逐漸進入阿里其他核心業務系統。Tair最早的設計思路源自Redis,很多功能設計也參考了Redis。與此同時,爲了方便用戶應用需求,Tair也完全兼容Redis的數據結構和接口API,原來採用Redis的應用可以無縫遷移到Tair。

2015年3月,Tair正式推出阿里雲的雲數據庫Redis產品。阿里雲 Redis 從 2015 年商用以來,一直是全球領先的雲內存數據庫產品,擁有Redis和Tair兩個主要產品,其背後的研發團隊擁有衆多頂級Redis社區Committer,並在Redis全球核心團隊(共五人)中擁有一名核心成員,在Redis技術發展中持續爲社區做出貢獻。

2017年11月,Tair熱點散列經過雙十一的考驗,解決了業內緩存熱點難題。

2018年,Tair正式開始投入Intel AEP的研究和使用落地。併成功應用於當年雙11的電商商品核心集羣中,大幅降低了成本,成爲中國首個在生產環境正式部署應用Intel AEP的產品。不過,當時的Tair軟件層並沒有在AEP上做相關數據持久化和恢復的特性,僅作爲緩存使用。

2019年4月,阿里雲的雲數據庫Redis產品在Redis開源社區貢獻排名第三。

2020年9月,Tair正式推出持久存儲系統形態,加速進入多存儲引擎時代。隨着雲上環境的成熟,Tair基於AEP,全新研發了數據持久落地的自研引擎,並融入神龍裸金屬服務器和雲原生數據庫管理系統的技術優勢。整體能力上,獲得了近似內存的性能,90%的吞吐能力,而成本降低了30%。同時,從內存的易失性到AEP的持久能力,Tair自研引擎的每個操作都能持久化,大幅降低數據丟失的風險。

2020年10月28日,阿里雲正式發佈雲原生內存數據庫Tair企業級Redis服務,該系列包含兩種產品形態:持久內存型和容量存儲型。這是Tair系列繼性能增強型和混合存儲型後又一力作。

經過多年持續不斷的打磨、完善和改進,如今已經演進到Tair 3.0。Tair全新定位企業級雲原生內存數據庫,全面覆蓋客戶不同業務階段對於Redis性能、功能與成本的更高要求。

Tair兼容原生Redis的數據結構和接口,並具備更大容量規格、fork抖動更低且命令級數據持久化的能力。同時打破了傳統Redis中的數據只能在易失性存儲上進行讀寫的模式,Tair針對客戶不同業務階段的數據存儲要求與服務成本考量,全新實現了持久性更強、成本更低的內存數據庫。

 

特別是在安全風控的應用場景下,像淘寶、天貓、餓了麼等用戶對於在線風控要求實時性非常高,一旦發現異常用戶行爲習慣或異常賬號情況,需要在線實時發現並處理。因而需要將Tair企業級能力和雲原生能力、低成本與彈性能力充分結合,爲應用提供風控實時在線的處理能力。此外,Tair具備全球分佈式能力,數據在任何一個節點寫入了後,在其它可用區AZ可以實時讀取,這對實現風控實時異常監測帶來非常好的幫助,並且在發生區域故障或者異常時Tair提供切換和恢復能力。

此外,通過Tair雲原生內存數據庫的能力,以及多模型計算能力的支撐,比如阿里雲圖數據庫GDB支持屬性圖模型,而Tair GDB更利於快速發現數據關係,對風控帶來顯而易見的幫助作用。

以內存存儲和計算爲基礎,集事務和分析處理於一體,TairGDB、TairCPC等數據模型將實時計算等能力下沉到內存數據庫中,在Tair中實現了多種工作負載,將用戶場景真正在線化、實時化。

全球雲觀察分析指出,Tair經過十二年錘鍊,不僅解決了數據可靠性與各場景中廣泛使用Redis之間的矛盾,同時針對服務高性能與數據可靠性之間的矛盾也得以搞定。更值得一提的是,Tair實現了更經濟的成本,來匹配用戶業務不同階段的服務訪問熱度。

在成交額破3723億元的2020年天貓“雙十一”活動中,訂單創建峯值高達58.3萬筆/秒,雲原生內存數據庫Tair作爲“雙十一”關鍵性的技術支撐,應對訂單高峯時的流量壓力,實現在線訪問加速能力,承受住了最高每秒15億次的調用風暴。

在複雜的應用場景下,Tair持續不斷地進行技術創新,適用於熱點場景的Tair熱點散列創新解決方案讓互聯網應用類似於電商、社交等頻繁出現熱點的場景極大降低了應用的開發成本,而且爲應用節省了至少2/3爲熱點場景預留的資源。

在商品信息等海量熱數據存儲的場景,Tair引入使用密度更高、成本更低的持久內存,使集羣整體TCO下降60%的同時,吞吐和延遲能夠滿足場景需求。

據悉,南瓜電影、CC視頻等用戶,使用阿里雲內存數據庫Tair的企業級功能,實現了數據多地域同步,給終端用戶帶去了更極致的體驗。

Tair應戰多次“雙十一”大考,歷經優酷春晚、菜鳥、高德、南瓜電影、CC視頻等業務場景不同規模的應用錘鍊,相對於開源Redis而言,可謂青出於藍而勝於藍。

 

03

讓數據實時在線,Tair正在撬動一個新時代

當然,作爲新一代內存數據庫的代表,Tair已經超過了Redis,實現了從緩存到一個真正內存數據庫的角色轉變,越來越多核心應用除了使用Tair的緩存模式之外,也使用Tair作爲數據的持久化存儲方案。

“雲原生、持久化、融合計算,這三大元素的加持,讓內存數據庫的發展正式進入一個新階段。”2020年12月13日,阿里雲數據庫負責人李飛飛在雲內存數據庫峯會上表示,讓數據實時在線,阿里雲的Tair正在引領潮流,加速雲原生內存數據庫時代到來。

進一步分析來看,阿里雲Redis團隊在自研內存數據庫系列Tair中,也是基於當前用戶具體應用需求來創新。畢竟在不同應用場景中,數據訪問速度、數據容量都會不同。針對不同數據溫度場景,從訪問延時、持久化需求、整體成本這三個核心維度考量,基於DRAM、NVM、ESSD三種存儲介質,推出了三種不同Tair形態,來滿足用戶不同場景的具體需求。除了最新推出的持久內存型和容量存儲型,Tair還有之前大家比較熟悉的性能增強型。

作爲Tair持久存儲系列的兩種產品形態,持久內存型和容量存儲型的工作原理相同,都是將數據放置在非易失性存儲介質上。在數據庫啓動時無需進行數據加載,應用直接訪問相關數據。在寫入數據時也能保證命令級的數據可靠性,寫入一條數據即持久化存入非易失性介質。同時也消除了fork帶來的服務抖動,而對業務應用則保持Redis的通信協議和數據結構與API,對於熟悉原生Redis的用戶可以輕鬆上手。

 

 

在硬件選擇上,持久內存型採用了Intel 傲騰持久內存(AEP),容量存儲型採用了阿里雲ESSD雲盤。

英特爾傲騰(AEP)持久內存架構的特點突出,在DRAM內存和塊存儲之間,加入大容量持久內存層,數據不會丟失,同時以高性價比提供出色性能。Tair持久內存型採用Intel 傲騰(AEP)持久內存技術後,兼容絕大部分Redis數據結構和命令,藉助AEP的App Direct模式,實現了高性能下的命令級持久化能力。在價格上,Tair持久內存型相當於阿里雲社區版Redis價格的70%左右,適用於要求高吞吐、低延遲同時對數據可靠性要求高的熱數據存取場景。

然而,對於溫冷數據存取場景,用戶要求更高的數據持久化,以及更高的存儲密度,數據訪問頻率也相對較低。基於阿里雲ESSD雲盤技術,推出的Tair容量存儲型,兼容Redis核心數據結構與命令,滿足用戶超大容量、平均性能有所妥協的溫冷數據存取服務。

在基準性能測試中,其基礎數據類型讀性能中位數約爲開源Redis的70%,寫性能中位數約爲開源內存版的55%,而服務擁有成本最低可降低至阿里雲Redis社區版的15%左右。

值得一提的是,在剛結束歷時4個月的數據庫性能大賽上,Tair提煉雙十一熱點場景挑戰和在持久內存上的最佳實踐,攜手衆多業內同行,共同推動持久內存型數據庫的應用和發展。

不過,無論是哪類場景,Tair都支持在線訪問,承擔着超大流量,作爲流量的承接地,對於流量的穿透、擊穿和防止本身系統雪崩上做了非常深入的工作。

目前來看,從高訪問強度,到高存儲密度,Tair的產品系列已經覆蓋了全線企業級Redis服務。

在總結Tair整體優勢上,阿里雲數據庫負責人李飛飛歸納爲三個方面:

優勢一,支持大規格單實例,價格更親民。單進程可以最大支持到256G,實現集羣規模高達64T以上。

優勢二,提供命令級的持久化,架構更簡化。操作寫入即持久存入的過程,遠勝開源Redis秒級持久化的能力。並且可以將原來“緩存加主存”雙重數據存儲架構,實現合二爲一。

優勢三,高性能無抖動,穩定更可靠。用過開源Redis的朋友應該都深有體會,其性能抖動令大家感到困擾。

特別值得關注的是在數據安全方面,針對當前用戶面臨各樣的數據丟失、業務邏輯錯誤帶來的商業風險,傳統的定時或手動備份不足以完美應對。Tair不僅有全量的備份和恢復能力,並且在Tair性能增強版本中提供了數據閃回的功能,幫助用戶在其指定時間點上,精準恢復指定實例數據,在數據安全上爲用戶實現最高級別的保駕護航。

全球雲觀察分析指出,對於數據安全方面的更多考慮,彰顯出了阿里雲在雲數據庫領域的全局思維。當然,對於阿里雲而言,在數據庫領域的耕耘與佈局也非常全面。

作爲國內最早推出雲數據庫的廠商之一,阿里雲已經形成了完整佈局。包括了:關係型數據庫、NoSQL數據庫、數據倉庫、數據庫生態工具和雲數據庫專屬集羣五大產品板塊。

在NoSQL數據庫佈局上,一方面,阿里云云數據庫Redis會將Redis作爲用戶上雲快速接入、體驗原汁原味開源Redis的雲上服務。另一方面,重點打造自研產品Tair,作爲“存算一體化”的企業級雲原生內存數據庫,全面覆蓋客戶不同業務階段對於Redis性能、功能與成本的更高要求。

很顯然,雲計算與大數據的發展勢不可擋,雲原生內存數據庫必然迎來了新的發展機會,在很大程度上將改變原有“應用+緩存+持久存儲”的架構模型,通過採用Tair持久內存型方案,進一步簡化架構降低TCO,Tair也將引領“應用+內存數據庫”的新趨勢。

未來,Tair會持續在成本、彈性、計算、企業級方面進一步優化,通過池化的內存存儲來提供多種計算模型和計算能力的支撐,實現存儲計算在內存層面真正的一體化。

2020年11月份Gartner公佈的2020年度全球數據庫魔力象限評估中,阿里雲首次挺進全球數據庫第一陣營——領導者象限,這也是中國數據庫40年來首次進入全球頂級數據庫行列,標誌着國產數據庫正式進入一線行列。

根據IDC的數據,在公有云市場阿里雲在雲數據庫賽道上營收已經位居全球第三,而就整個數據庫市場而言,在中國市場份額阿里雲位居榜首。

毋庸置疑,雲原生數據庫已經成爲行業發展趨勢。Gartner在去年發佈的名爲《The Future of the Database Management System (DBMS) Market Is Cloud》的報告中就明確提出,傳統的自己部署數據庫的方式已經過時。

雲是未來,所有組織,無論大小,都將越來越多地使用雲數據庫。爲此,阿里雲在雲數據庫產品方面的進一步豐富,正是順應了這一趨勢。就此,在企業級雲原生內存數據庫的發展上,Tair將持續強化雲原生、軟硬件技術結合、數據存儲和計算一體化等核心能力,讓雲原生內存數據庫真正走到大家身邊,不斷滿足用戶數字化轉型過程中的業務發展需要,並貢獻出更大的創新力量。 

(by Aming) 

- END-

 ?

歡迎文末留言評論!

文章來源:Aming,全球雲觀察,著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。本文和作者回復僅代表個人觀點,不構成任何投資建議。

都看到這裏了,加個關注吧!

【阿明】:科技評論專欄作者、科技媒體從業22年、新聞評論年產出上百萬字,用數據說話,帶你看懂科技上市公司


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章