Tair記憶體型(簡稱記憶體型)適合并發量大、讀寫熱點多,對效能要求超過Redis開源版執行個體的情境。相比Redis開源版,記憶體型重點增強了多線程效能並整合多個自研擴充資料結構。
主要優勢
類別 | 說明 |
相容性 |
|
效能 |
|
部署架構 |
|
資料結構模組整合 | |
企業級特性 |
|
資料安全 |
|
適用情境
適用於ApsaraVideo for Live、電商秒殺和線上教育等情境,下面列舉了記憶體型在4個典型情境中的應用。
情境1:使用Redis開源版執行個體在秒殺情境中構建緩衝,部分熱點Key的QPS要求高達20萬以上,無法滿足業務高峰期的需求。
採用記憶體型(標準架構)執行個體後,熱門商品秒殺過程流暢,未發生效能問題。
情境2:在業務中使用Redis開源版叢集執行個體,但在使用事務和Lua指令碼功能時有一定的限制。
採用記憶體型執行個體後,在滿足效能需求的同時消除了叢集版的命令使用限制。
情境3:自建有一主多備的Redis服務,隨著業務中訪問量的不斷提高,備節點數量也要隨之增加,管理維護成本越來越高。
採用具備一個資料節點五個唯讀副本的記憶體型(讀寫分離架構)執行個體後,可以輕鬆應對百萬級QPS的業務挑戰。
情境4:自建有Redis叢集來承擔線上千萬級QPS的業務壓力。隨著業務的發展,Redis分區數不斷增加,管理維護成本居高不下。
採用記憶體型(叢集架構)執行個體後,叢集規模縮到原來的三分之一,管理維護成本大幅降低。
執行緒模式對比
線程架構 | 說明 |
Redis開源版和原生Redis採用單執行緒模式,資料處理流程為:讀取請求,解析請求,處理資料,發送響應。其中網路IO和請求解析佔用了大部分的資源。 | |
Tair記憶體型將服務各階段的任務進行分離,通過分工明確的多個線程平行處理各階段任務,達到提高效能的目的。
IO線程讀取使用者的請求並進行解析,之後將解析結果以命令的形式放在隊列中發送給Worker線程處理。Worker線程將命令處理完成後產生響應,通過另一條隊列發送給IO線程。 Tair記憶體型最多支援4個IO線程並發運行。為了提高線程的並行度,IO線程和Worker線程之間採用無鎖隊列和管道進行資料交換。 說明
|
區別於Redis 6.0的多線程(效能至多提升2倍,且CPU資源消耗高),記憶體型的Real Multi-IO能夠將IO加速地更徹底,具備更高的抗串連衝擊性,且可以線性地提升吞吐能力。
效能對比
Redis開源版執行個體採用與原生Redis相同的單執行緒模式,每個資料節點支援8萬到10萬的QPS;Tair記憶體型採用多執行緒模式,由IO線程、Worker線程和輔助線程共同完成資料處理,單節點效能為Redis開源版執行個體的3倍左右。下表展示了不同架構下,Redis開源版和Tair記憶體型執行個體的適用情境對比。
架構 | Redis開源版 | Tair記憶體型 |
標準架構 | 不適用於單節點QPS要求超過10萬的情境。 | 可應用於QPS高於10萬的情境。 |
叢集架構 | 包含多個資料節點,每個節點的效能與標準版執行個體相似。當某個節點儲存了熱度較高的資料並面臨大並發量的請求時,該節點中其它資料的讀寫可能受到影響,形成效能瓶頸。 | 能更好地應對熱讀寫,降低維護成本。 |
讀寫分離架構 | 有較高的讀效能,在讀多寫少的情境表現良好,但不適用於大並發寫入的情境。 | 既有較高的讀效能,又能承受大並發寫入,適用於寫請求多而讀請求更多的情境。 |
資料結構模組整合
Redis開源版與開源Redis相同,支援String、List、Hash、Set、Sorted Set、Stream等資料類型,能夠滿足大部分情境下的開發需求,但在一些複雜情境中,原生資料類型無法直接滿足某些業務需求,只能使用通過調整應用資料、使用Lua指令碼等方式來實現。
記憶體型整合多個自研的Tair模組,包括exString(包含Redis String命令增強)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search和Vector,擴充了Tair的適用性,同時降低了複雜情境下業務的開發難度,讓您專註於業務創新。
企業級特性
企業級特性 | 說明 |
開啟Tair的資料閃回功能後,Tair最長可將AOF備份資料保留7天,在此期間您隨時可以指定一個精確到秒的時間點,系統會基於所選時間點的備份資料建立一個新的執行個體,實現精確的資料恢複。 | |
開啟代理查詢快取功能(Proxy Query Cache)後,代理節點會緩衝熱點Key對應的請求和返回資訊,當在有效時間內收到同樣的請求時直接返回結果至用戶端,無需和後端的資料分區互動。更多資訊,請參見通過Proxy Query Cache最佳化熱點Key問題。 | |
Tair全球多活是基於Redis開源版自研的多活資料庫系統,可輕鬆實現異地多個網站同時對外提供服務的業務情境,助力企業快速複製阿里巴巴異地多活架構。 | |
藉助DTS實現雙向資料同步 | 通過Data Transmission Service(Data Transmission Service)實現Tair執行個體間的雙向資料同步,可應用於異地多活、資料容災等多種情境,詳情請參見Tair執行個體間的雙向同步。 |
常見問題
Q:用戶端不支援新模組的命令怎麼辦?
A:您可以先在應用代碼中定義需要使用的新模組命令,然後再使用這些命令,或者通過Tair用戶端直接調用Tair擴充資料結構,更多資訊,請參見Clients說明。