首页 文章详情

腾讯,干掉 Redis 项目,正式开源、太牛逼啦!

码农突围 | 283 2021-04-06 10:07 0 0 0
UniSMS (合一短信)

点击上方“码农突围”,马上关注

这里是码农充电第一站,回复“666”,获取一份专属大礼包

真爱,请设置“星标”或点个“在看”


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级存储。

去中心化架构

类似于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能力持续增强

 

Tendis期待与您开源共建

Tendis目前已在腾讯内外部包括游戏、视频、社交、电商等多个行业提供数据库支撑。我们期望通过将Tendis开源,能够有助于业界其他相关领域的应用。同时通过Tendis开源项目的平台,打造一个行业标杆级的分布式KV存储数据库产品,期待与您一起共建Tendis项目!


https://github.com/Tencent/Tendis

请给项目 一个 Star !

欢迎提出你的 issue 和 PR!

国内镜像地址:

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


最近有不少老铁在后台留言说,想进大厂,但是算法不好。最近我整理了一份刷题实录,这份刷题实录,也让我进了心仪的大厂。现在开放分享给大家。希望对大家有所帮助。

任何的算法题,如同写作文一样,都有一些模板可以套用的。比如面试常考的DP(动态规划),难的是一些关键点是否能想清楚。比如你能写出动态转移方程,这题基本上就可以AC了。

整个刷题实录内容,包括 双子针、动态规划、二分查找、贪心算法、深度优先搜索、字符串、递归、字典树、排序、链表等相关专题内容。图文并茂,附有刷题答案源码。

他对知识点的讲解非常详细,比如这里的贪心算法,排版非常精美:


目前上述内容已打包成完整电子书,具体获取方式如下:
  1. 点击下面公众号卡片,关注编程技术精选 公众号;

  2. 在「编程技术精选公众号后台回复关键词「115」获取下载地址。

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter