干掉Redis,腾讯Tendis开源


一、腾讯Tendis简介

Tendis存储版是腾讯互娱CROS DBA团队 & 腾讯云数据库团队 自主设计和研发的开源分布式高性能KV存储。Tendis存储版完全兼容redis协议,并使用rocksdb作为存储引擎。用户可以通过redis client访问Tendis存储版,几乎不用修改代码。同时,Tendis存储版支持远超内存的磁盘容量,可以大大降低用户的存储成本。

类似于Redis Cluster, Tendis存储版使用去中心化的集群管理架构。数据节点之间通过gossip协议通讯,用户访问集群中的任意数据节,请求都能路由到正确的节点。并且集群节点支持自动发现、故障探测、自动故障切换、数据搬迁等能力,极大降低运维成本。

注意:部分Redis的命令是支持的

二、安装Tendis

官网文档地址:http://tendis.cn ;我们直接在tendis的github仓库 上下载已经编译好的安装包。

  • 解压
tar zxvf tendisplus-2.1.2-rocksdb-v5.13.4.tgz
  • 修改配置

进入解压后的目录中,修改配置文件scripts/tendisplus.conf;在里面添加一行bind 服务器的IP;之后将里面路径相关改为你想要的; 注意catalog这个目录需要你手动创建,否则将启动失败; 比如: mkdir -p /home/tendis/db/catalog;如果启动失败可以到日志文件里面去查看失败原因。

# tendisplus configuration for testing
port 51002
loglevel notice
logdir /home/tendis/log
dumpdir /home/tendis/dump
dir /home/tendis/db
pidfile /home/tendis/tendisplus.pid
slowlog /home/tendis/log/slowlog
rocks.blockcachemb 4096
executorThreadNum 48
bind 192.168.1.6
  • 启动
bin/tendisplus scripts/tendisplus.conf

三、使用

原来使用redis项目的代码无需更改,只需要修改redis的连接地址和端口号即可,其他无需改变。 注意如果原来的项目中使用一些特殊的命令,需要手动测试下是否支持。比如scan命令就有区别。

vs Redis cluster

优点:

  • 所有数据存储到磁盘,提供更大的容量和更低的成本,数据可靠性更高;
  • 多线程架构,单进程的性能吞吐比redis单进程更高(30wQPS vs 13wQPS)
  • 独立的gossip网络线程,支持更多的节点通讯,支持更大规模的集群
  • 更强大的数据搬迁能力,原redis cluster的搬key实现,如果遇到大key,会导致比较恶劣的全局阻塞
  • 基于rocksdb的镜像和完善的binlog实现,支持任意时间点的回档,社区版redis暂无这个能力
  • 支持增量复制及复制断开断点续传,redis复制断开需要全量复制

缺点:

  • 对比纯内存的redis,Tendis存储版的延时更大
  • 部分命令还不支持(LUA, pubsub, geo等),正在完善中
  • 对于单key更新,由于Tendis存储版内部并发控制,无法发挥多线程的优势,会退化为单线程,性能较低

四、构架说明

集群构架

Tendis存储版使用去中心化集群架构,每个数据节点都拥有全部的路由信息。

  • 用户可以访问集群中的任意节点,并且通过redis的MOVE协议,最终路由到正确的节点。
  • 每个Tendis存储版节点维护属于各自的slot数据,任意两个master节点之间的slot不重复
  • Tendis存储版的主备节点之间通过binlog进行复制
  • 任意两个节点之间通过gossip协议进行通讯
  • master节点之间支持基于slot的数据搬迁

数据分片

类似redis cluster,Tendis存储版使用redis hashslot算法对数据进行划分,默认整个集群的数据划分为16384(2^14)个slot,每个Tendis存储版节点负责一部分slot。

可以通过参数chunksize来修改默认的slot数量,但只允许是Tendis存储版进程第一次启动时候指定。一旦Tendis存储版初始化,chunksize就不能改变。一般情况下,不需要配置和改变这个值。同时需要注意的是,必须保证集群的所有节点都采用相同的chunksize配置。

使用rocksdb来进行数据存储;提高数据的读写性能。


特别提醒:扫码关注微信订阅号'起岸星辰',实时掌握IT业界技术资讯! 转载请保留原文中的链接!
  目录