加強(qiáng)版 Redis,又一款國(guó)產(chǎn)高性能 KV 存儲(chǔ)數(shù)據(jù)庫(kù)開源了!

來(lái)源:騰訊開源
項(xiàng)目簡(jiǎn)介
Tendis是騰訊互娛CROS DBA團(tuán)隊(duì) & 騰訊云數(shù)據(jù)庫(kù)團(tuán)隊(duì)自主設(shè)計(jì)和研發(fā)的分布式高性能KV存儲(chǔ)數(shù)據(jù)庫(kù),兼容Redis核心數(shù)據(jù)結(jié)構(gòu)與接口。
可提供大容量、低成本、強(qiáng)持久化的數(shù)據(jù)庫(kù)能力,適用于兼容Redis協(xié)議、需要大容量且較高訪問(wèn)性能的溫冷數(shù)據(jù)存儲(chǔ)場(chǎng)景。
Tendis目前已經(jīng)被應(yīng)用到騰訊內(nèi)、外部大型項(xiàng)目中。
集群架構(gòu)

Tendis使用去中心化集群架構(gòu),每個(gè)數(shù)據(jù)節(jié)點(diǎn)都擁有全部的路由信息,用戶可以訪問(wèn)集群中的任意節(jié)點(diǎn),并且通過(guò)redis的move協(xié)議,最終路由到正確的節(jié)點(diǎn)。
每個(gè)Tendis節(jié)點(diǎn)維護(hù)各自的slot數(shù)據(jù),任意兩個(gè)master節(jié)點(diǎn)之間的slot不重復(fù),master節(jié)點(diǎn)之間支持基于slot的數(shù)據(jù)搬遷,主備節(jié)點(diǎn)之間通過(guò)binlog實(shí)現(xiàn)數(shù)據(jù)復(fù)制。
所有節(jié)點(diǎn)之間通過(guò)gossip協(xié)議進(jìn)行通訊,類似于redis cluster的分布式實(shí)現(xiàn),所有節(jié)點(diǎn)通過(guò)gossip協(xié)議通訊,可指定hashtag來(lái)控制數(shù)據(jù)分布和訪問(wèn),使用和運(yùn)維成本極低。
適用場(chǎng)景
兼容Redis協(xié)議,需要大容量且較高訪問(wèn)性能的溫冷數(shù)據(jù)存儲(chǔ)場(chǎng)景 適合成本為主要考慮因素,業(yè)務(wù)數(shù)據(jù)有高持久化要求的業(yè)務(wù)場(chǎng)景 解決原生Redis固有的fork問(wèn)題而預(yù)留部分內(nèi)存問(wèn)題
主要特性
兼容Redis協(xié)議
完全兼容redis協(xié)議,支持redis主要數(shù)據(jù)結(jié)構(gòu)和接口,兼容大部分原生Redis命令。
持久化存儲(chǔ)
使用rocksdb作為存儲(chǔ)引擎,所有數(shù)據(jù)以特定格式存儲(chǔ)在rocksdb中,最大支持PB級(jí)存儲(chǔ)。
去中心化架構(gòu)
類似于redis cluster的分布式實(shí)現(xiàn),所有節(jié)點(diǎn)通過(guò)gossip協(xié)議通訊,可指定hashtag來(lái)控制數(shù)據(jù)分布和訪問(wèn),使用和運(yùn)維成本極低。
水平擴(kuò)展
集群支持增刪節(jié)點(diǎn),并且數(shù)據(jù)可以按照slot在任意兩節(jié)點(diǎn)之間遷移,擴(kuò)容和縮容過(guò)程中對(duì)應(yīng)用運(yùn)維人員透明,支持?jǐn)U展至1000個(gè)節(jié)點(diǎn)。
故障自動(dòng)切換
自動(dòng)檢測(cè)故障節(jié)點(diǎn),當(dāng)故障發(fā)生后,slave會(huì)自動(dòng)提升為master繼續(xù)對(duì)外提供服務(wù)。
Tendis冷熱混合存儲(chǔ)關(guān)鍵組件
得益于Tendis存版的設(shè)計(jì)和內(nèi)部?jī)?yōu)化,Redis和Tendis存儲(chǔ)版可以一起工作成為Tendis冷熱混合存儲(chǔ)。混合存儲(chǔ)區(qū)非常適用于KV存儲(chǔ)場(chǎng)景,并平衡了性能和成本。對(duì)于redis占用大量存儲(chǔ)空間的冷數(shù)據(jù)降冷后可以最多減少80%的成本,同時(shí)保證了熱數(shù)據(jù)在redis的訪問(wèn)性能。
項(xiàng)目規(guī)劃
持續(xù)完善對(duì)Redis的兼容性,包括支持LUA等命令 進(jìn)一步提升Tendis的性能,減少rocksdb本身的性能抖動(dòng)問(wèn)題。 探索更多軟硬結(jié)合方案,基于新硬件特性,發(fā)揮更大的數(shù)據(jù)庫(kù)性能。 支持異構(gòu)數(shù)據(jù)互通能力,降低異構(gòu)數(shù)據(jù)庫(kù)的遷移成本 運(yùn)維管理能力全面提升,PaaS能力持續(xù)增強(qiáng)
Tendis目前已在騰訊內(nèi)外部包括游戲、視頻、社交、電商等多個(gè)行業(yè)提供數(shù)據(jù)庫(kù)支撐。感興趣的童鞋可以去GitHub詳細(xì)了解一下:
https://github.com/Tencent/Tendis
END
有熱門推薦?
1.?介紹一款基于 SpringBoot 開發(fā) OA 開源產(chǎn)品 !
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)

