天天看點

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

作者:黃鵬程(馬格)

一、Tair背景介紹

(一)什麼是阿裡雲Tair雲原生記憶體資料庫

阿裡雲Tair雲原生記憶體資料庫線上名字為阿裡雲資料庫Redis企業版(又稱阿裡雲Tair),從2009年開始正式承載集團業務,是一款曆經磨練的企業級産品。它完全相容Redis的資料結構和通訊協定,包括API接口,并且在内部逐漸打磨的過程中,基于Tair研發雲上托管雲記憶體資料庫。

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

如上圖所示,Tair産品分為三個類型,從性能到成本效益有不同的産品排布,下面用1.0X表示開源的Redis的性能與價格,從性能和價格上與三個類型的Tair産品進行對比。

  1. Tair性能增強型

    性能約為開源Redis的兩倍,支援多種常見資料結構,在天貓/淘寶/高德/優酷中大規模使用,并擁有任意時間點恢複/全球分布式/熱點散列等特性。

  2. Tair持久記憶體型

    基于Intel傲騰持久記憶體做的資料庫,後文會重點闡述其特點。

  3. Tair容量存儲型

    直接對标社群Pika等開源存儲型Redis産品。然後因為我們會用阿裡雲的高效的高效雲盤,是以說整個的功能和性能都會比Pika強很多。

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

如上圖所示,從記憶體存儲方面,Tair三個類型的産品适應不同的場景。

1)資料讀寫頻繁,要求低延遲,支援大連接配接;

2)成本相對不敏感,以滿足業務性能需求為主。

1)資料讀寫較頻繁,延遲要求可稍微放寬,存儲資料量有一定較大容量要求;

2)成本控制較之熱資料要求更高。

1)資料讀寫密集程度低,延遲要求不高,整體存儲容量要求高;

2)成本是最大考量因素。

(二)阿裡雲Tair面向業務的資料結構讓業務創新更容易

在業務方面,阿裡雲Tair與基于傳統Redis存在許多不一樣的地方,阿裡雲Tair業務結構如下所示。

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

除此之外,阿裡雲Tair有以下優點:

1)高性能

性能增強型,流量上漲淡然處之,性能是開源Redis的2倍。

2)持久化

持久記憶體型,資料可靠,友善業務使用,不再擔心資料丢失。(RPO=0)

3)低成本

多種存儲媒體,選擇最優成本效益,成本效益高于ECS自建。

4)豐富資料模型

在社群Redis上提供了更多面向應用的資料結構,應用開發更簡便。

5)企業級能力

全球多活,資料閃回,混合多雲(熱點散列)。

(三)阿裡雲Tair曆史

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀
Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

上圖為Tair的發展曆史。從Tair1.0開始,團隊就孵化出了雲Redis社群版和雲Memcache,這是線上社群托管的兩個版本。

在Tair1.0的時候,就會整個孵化出來,2.0逐漸上雲,3.0會孵化出來一款叫GDB的産品,是一款線上的圖資料庫。

再往下是Tair(Redis企業版/Tair 3.0),集團和雲上是同一個版本,有很多種形态來支援使用者在各種業務場景下的需求。

二、Tair功能介紹

(一)做一個不丢資料的記憶體資料庫—Tair持久記憶體型

我們希望做一個不丢資料的資料庫,做法是通過新硬體和新軟體來進行。

1.新硬體

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀
  • 引入英特爾® 傲騰™ 資料中心級持久記憶體;
  • 與DRAM記憶體相近的性能表現,而且其大容量和非易失性的特性還可幫助系統獲得更優的可用性;
  • 它相比于DRAM記憶體的成本和容量優勢,也可幫助客戶有效地降低總擁有成本。
Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

上圖為存儲媒體圖,速度延遲從上到下逐漸增大,相反,容量逐漸減少,成本逐漸降低。Storage Class Memory處于中間,成本效益較高。

2.新軟體

  • 模式選擇

新軟體的開發模式方案有兩種,分别是記憶體模式(Memory Mode)與應用程式直接通路模式(App Direct Mode)。

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

在記憶體模式下,應用和OS将其視為易失性記憶體池,雖對應用透明,但掉電即失,是以不采用。

在應用程式直接通路模式下,持久記憶體和 DRAM充當獨立記憶體資源,通過建構符合Redis協定和資料結構的軟體利用兩塊存儲資源建構相容Redis、具備指令級持久化能力的記憶體資料庫。

  • 全新的挑戰
Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

我們選擇重新寫相容Redis的東西,而不是在Redis基礎上進行更改,是因為新軟體有着全新的挑戰:

1)替代原有的記憶體配置設定器,同時要保證記憶體配置設定器中繼資料的持久化;

2)Redis資料結構與索引的持久化要保持一緻性;

3)持久記憶體和易失記憶體如何協同工作,讓整個資料庫高性能工作,同時還具備強大的持久化能力。

3.産品化能力

上文結合軟硬體的能力闡述了如何去建構持久化記憶體的形态,下面可以看一下所帶來的成果。

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀
  • 消除aofrewrite與fsync的無Fork設計,服務更順滑,P95延時較之記憶體版Redis更低更穩定;
  • 讀寫性能吞吐為記憶體版Redis的90%以上。
Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀
  • 原生指令級持久化能力,操作寫入即持久化;
  • 緩存主存合一成為可能,成本更低,架構更優雅。

4.應用場景

應用場景主要分為如下兩種。

場景一:大資料量、高性能、成本的綜合選型考慮

  • 機器學習平台、推薦系統等計算資料對性能和容量的要求很高;
  • 全記憶體又使得成本壓力巨大;
  • 可采用Tair持久記憶體型以有效降低成本,并能夠保持高性能運作;
  • 同時使用者也無需為降本而綜合使用其他資料存儲,有效地平衡了系統複雜度與成本。

場景二:用作持久化資料存儲

  • 遊戲、直播、資料分析中大資料結果集對外提供查詢服務等場景可以使用;
  • 可采用Tair持久記憶體型作為資料最終的存儲;
  • 對比緩存+主存的兩層架構,資料同樣可靠;
  • 成本效益更高,代碼更簡化,架構更優雅。

(二)做一個具備時光機能力的資料庫--資料閃回

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

我們希望這個記憶體資料庫具備有時光機能力。時光機能力表示可以将資料恢複到過去指定的任何時間點,也稱為資料閃回,它有如下兩大特點:

  • 七天内任意時間點的資料恢複

1)Backup/Restore的終極形态

2)支援按秒級的資料恢複(可支援到按條)

3)防止删庫跑路場景

4)Clone & Switching:随時回切

  • 根據按照指定Key或者Key Glob Pattern進行原地資料部分恢複

1)靈活應對部分資料異常

2)其餘未指定資料不變化

3)遊戲資料回檔實作

(三)做一個全球多地寫入的資料庫--全球多活

1.基本概念

我們希望資料庫能夠多地寫入,把多地的記憶體資料庫進行多活操作,使用者可以在多地通路與寫入,我們幫使用者做資料按序同步。

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

2. 三地六向同步

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀
  • 全區全服同時線上,解決漫遊(roaming)和DNS漂移問題。
  • 資料本地通路(locally data access)的流暢性。
  • 單元化:獨立部署,區域容災,按需排程。
  • 資料的高可靠和性能提升。

3. 低延遲時間SLA保障

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀
  • 推送模式(Push),Latency= T1 (binlog落盤時延)+ T2 (Replicator發現時延) + T3 (Apply時延)

1)整體看,T1 + T2 穩定在10ms,最差100ms;T3基本上時延是網絡RTT。

2)忙時下不敏感,replicator具備獨立的資源,點到點同步通道帶寬穩定。

  • 适合寫入量大,對平均時延要求高的客戶。
  • 目前全球分布式緩存隻能做3地6向。
  • 适合跨域多活及單元化業務(阿裡内部經驗)。
  • Tair全球同步時延測試白皮書:
https://help.aliyun.com/document_detail/199010.html

4. Session場景

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

Session的容災至關重要

  • 随着業務擴充,session通路壓力幾何級數增長。
  • 對抖動敏感,遠距離通路體驗差。
  • 單元化部署,全球化部署。
  • 除去容災(跨域備份),還要能就近讀寫(跨域雙活,多活)。

5. 遊戲場景

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

架構特點:玩家可就近接入,本身邏輯就近計算資料讀取,基本不存在資料一緻性問題,靈活調整分布式節點。

可以靈活跨地域部署,資料通過Tair同步延遲根據網絡速度決定通常在100ms以下。

場景:聊天室,彈幕資訊同步;跨服對戰;全球道具商城。

6.出行場景

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

Tair也在高德地圖中深度使用,并解決了出行場景的一些問題。

使用前:導航時地理位置資訊推送問題

  1. DNS漂移是一個邊界效應,通常大概影響邊界上5%-7%的使用者。
  2. 在導航中跨越邊界時,會大量出現交叉通路不同資料區的場景;業務邏輯複雜,可靠性低,使用者體驗差。

使用後:高德交通三地六向同步(Tair only)

  1. Redis-enterprise跨域多活提供百萬OPS每秒的資料同步。
  2. 交通在三地都可高速寫入/通路;極高性能的優勢提供流暢的使用者體驗。
  3. 使用者可以靈活的在SDK層控制讀寫,比例等。

(四)做一個有計算的記憶體資料庫

1. TairCPC高精度計數

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

TairCPC是一種資料的壓縮算法(sketches)的記憶體實作,可以利用很小的空間對采樣資料做高性能的計算,适合在實時和流式計算場景下做高性能的風控和安全場景。

  • 主要特性

1)記憶體占用低

2)增量讀寫,IO最小化

3)毫秒級高性能去重

4)超高去重精度

5)誤差率穩定收斂

  • 适用場景

1)想以較低的記憶體實作對海量資料的去重計算;

2)容忍一定的四舍五入的誤差率;

3)适用于實時計算的滾窗和滑窗去重。

2. TairTS時序資料處理

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

TairTS是基于Redis Module開發的時序資料結構,提供低延遲時間高并發的記憶體讀寫通路,以及快速的過濾聚合查詢功能。将存儲與計算集于一身,極大地簡化使用者處理時序資料的流程,結合Tair持久記憶體型單叢集最大規模可達65T。

1)TairTS相對于TSDB類傳統時序資料庫,可提供更快的寫入性能,并提供數10倍的查詢性能。

2)針對小規模資料場景,TairTS可将批量查詢與聚合計算內建到單條指令中,減少網絡互動,實作毫秒級響應。

3)針對大規模資料場景,可利用索引指令,将大規模資料,分批查詢與聚合,實作秒級響應。

1)監控資料的存儲與計算

2)車聯網、工業網際網路實時IOT資料處理

3)APM秒級監控等

三、面向未來

Beyond the Cache ——阿裡雲Tair雲記憶體資料庫場景解讀

最後談一下未來面對的事情,關注雲産品的人可能都知道存儲計算分離,我們希望在這基礎上能再進行一層分離。将記憶體也分離出來,做一個大的記憶體存儲池。希望我們的再分離一層,就是把記憶體也分離出來,因為現在可能是一個大的存儲池,為使用者提供更加彈性的服務。