加強版Redis,又一款國產高性能KV存儲數據庫開源了!
項目簡介
Tendis是騰訊互娛CROS DBA團隊 & 騰訊云數據庫團隊自主設計和研發的分布式高性能KV存儲數據庫,兼容Redis核心數據結構與接口。
可提供大容量、低成本、強持久化的數據庫能力,適用于兼容Redis協議、需要大容量且較高訪問性能的溫冷數據存儲場景。
Tendis目前已經被應用到騰訊內、外部大型項目中。
集群架構
圖片
Tendis使用去中心化集群架構,每個數據節點都擁有全部的路由信息,用戶可以訪問集群中的任意節點,并且通過redis的move協議,最終路由到正確的節點。
每個Tendis節點維護各自的slot數據,任意兩個master節點之間的slot不重復,master節點之間支持基于slot的數據搬遷,主備節點之間通過binlog實現數據復制。
所有節點之間通過gossip協議進行通訊,類似于redis cluster的分布式實現,所有節點通過gossip協議通訊,可指定hashtag來控制數據分布和訪問,使用和運維成本極低。
適用場景
- 兼容Redis協議,需要大容量且較高訪問性能的溫冷數據存儲場景
- 適合成本為主要考慮因素,業務數據有高持久化要求的業務場景
- 解決原生Redis固有的fork問題而預留部分內存問題
主要特性
兼容Redis協議
完全兼容redis協議,支持redis主要數據結構和接口,兼容大部分原生Redis命令。
持久化存儲
使用rocksdb作為存儲引擎,所有數據以特定格式存儲在rocksdb中,最大支持PB級存儲。
去中心化架構
類似于redis cluster的分布式實現,所有節點通過gossip協議通訊,可指定hashtag來控制數據分布和訪問,使用和運維成本極低。
水平擴展
集群支持增刪節點,并且數據可以按照slot在任意兩節點之間遷移,擴容和縮容過程中對應用運維人員透明,支持擴展至1000個節點。
故障自動切換
自動檢測故障節點,當故障發生后,slave會自動提升為master繼續對外提供服務。
Tendis冷熱混合存儲關鍵組件
得益于Tendis存版的設計和內部優化,Redis和Tendis存儲版可以一起工作成為Tendis冷熱混合存儲。混合存儲區非常適用于KV存儲場景,并平衡了性能和成本。對于redis占用大量存儲空間的冷數據降冷后可以最多減少80%的成本,同時保證了熱數據在redis的訪問性能。
項目規劃
- 持續完善對Redis的兼容性,包括支持LUA等命令
- 進一步提升Tendis的性能,減少rocksdb本身的性能抖動問題。
- 探索更多軟硬結合方案,基于新硬件特性,發揮更大的數據庫性能。
- 支持異構數據互通能力,降低異構數據庫的遷移成本
- 運維管理能力全面提升,PaaS能力持續增強
Tendis目前已在騰訊內外部包括游戲、視頻、社交、電商等多個行業提供數據庫支撐。感興趣的童鞋可以去GitHub詳細了解一下:
https://github.com/Tencent/Tendis