騰訊,幹掉 Redis 項目,正式開源、太牛逼啦!

Python實戰社羣

Java實戰社羣

長按識別下方二維碼,按需求添加

掃碼關注添加客服

進Python社羣▲

掃碼關注添加客服

進Java社羣

來源丨騰訊開源

項目簡介

Tendis是騰訊互娛CROS DBA團隊 & 騰訊雲數據庫團隊自主設計和研發的分佈式高性能KV存儲數據庫,兼容Redis核心數據結構與接口,可提供大容量、低成本、強持久化的數據庫能力,適用於兼容Redis協議、需要大容量且較高訪問性能的溫冷數據存儲場景。

Tendis目前已經被應用到騰訊內、外部大型項目中。

集羣架構

圖片

[Tendis使用去中心化集羣架構,每個數據節點都擁有全部的路由信息,用戶可以訪問集羣中的任意節點,並且通過redis的move協議,最終路由到正確的節點。

[每個Tendis節點維護各自的slot數據,任意兩個master節點之間的slot不重複,master節點之間支持基於slot的數據搬遷,主備節點之間通過binlog實現數據複製。

[所有節點之間通過gossip協議進行通訊,類似於redis cluster的分佈式實現,所有節點通過gossip協議通訊,可指定hashtag來控制數據分佈和訪問,使用和運維成本極低。

適用場景

1、兼容Redis協議,需要大容量且較高訪問性能的溫冷數據存儲場景

2、適合成本爲主要考慮因素,業務數據有高持久化要求的業務場景

3、解決原生Redis固有的fork問題而預留部分內存問題

主要特性

兼容Redis協議

完全兼容redis協議,支持redis主要數據結構和接口,兼容大部分原生Redis命令。

持久化存儲

使用 rocksdb 作爲存儲引擎,所有數據以特定格式存儲在 rocksdb 中,最大支持 PB 級存儲。

良心艿:有精力的胖友,可以研究下 rocksdb 存儲引擎,很多公司在自研低成本的 KV 數據庫時,都採用它!

去中心化架構

類似於redis cluster的分佈式實現,所有節點通過gossip協議通訊,可指定hashtag來控制數據分佈和訪問,使用和運維成本極低。

水平擴展

集羣支持增刪節點,並且數據可以按照slot在任意兩節點之間遷移,擴容和縮容過程中對應用運維人員透明,支持擴展至1000個節點。

故障自動切換

自動檢測故障節點,當故障發生後,slave會自動提升爲master繼續對外提供服務。

Tendis冷熱混合存儲關鍵組件

得益於Tendis存版的設計和內部優化,Redis和Tendis存儲版可以一起工作成爲Tendis冷熱混合存儲 。混合存儲區非常適用於KV存儲場景,並平衡了性能和成本。

對於redis佔用大量存儲空間的冷數據降冷後可以最多減少80%的成本,同時保證了熱數據在redis的訪問性能。

良心艿:技術沒有銀彈,很多時候是一種取捨。在取捨的過程中,找到一個合適的平衡點。

項目規劃

1、持續完善對Redis的兼容性,包括支持LUA等命令

2、進一步提升Tendis的性能,減少rocksdb本身的性能抖動問題。

3、探索更多軟硬結合方案,基於新硬件特性,發揮更大的數據庫性能。

4、支持異構數據互通能力,降低異構數據庫的遷移成本

5、運維管理能力全面提升,PaaS能力持續增強

https://github.com/Tencent/Tendis

國內鏡像地址:

https://git.code.tencent.com/TencentOpenSource/Tendis



程序員專欄 掃碼關注填加客服 長按識別下方二維碼進羣


近期精彩內容推薦:   又一個程序員,被抓捕!(真實事件) 程序員有個可愛女朋友是種什麼體驗? “12306”的架構到底有多牛逼? csv文件讀寫亂碼問題的一個簡單解決方法



在看點這裏好文分享給更多人↓↓
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章