Tendis:高性能的分布式存储系统

2020-12-24 21:39:32

Tendis是与Redis协议完全兼容的高性能分布式存储系统。中文文档

Tendis是与Redis协议完全兼容的高性能分布式存储系统。它使用RocksDB作为存储引擎,所有数据都通过RocksDB存储到磁盘。用户可以使用Redis客户端访问Tendis,几乎不需要更改应用程序。另外,Tendis支持的存储容量远远超过内存,这可以大大降低用户的存储成本。

与Redis群集类似,Tendis使用分散式分布式解决方案。闲话协议用于节点之间的通信,并且当用户访问时,群集中的所有节点都可以路由到正确的节点。群集节点支持自动发现其他节点,检测故障节点,并确保在主节点发生故障时几乎不影响应用程序。

使用RocksDB作为存储引擎。所有数据都以特定格式存储在RocksDB中,从而支持PB级存储容量。

由于设计和内部优化,Redis和Tendis可以一起成为Hybrid Storage Edition。它适用于KV存储方案,因为它平衡了性能和成本,并且在冷数据占用大量存储空间的方案中将业务运营成本大大降低了80%。

$ git clone https://github.com/Tencent/tendis.git --recursive $ git子模块更新--init --recursive $ mkdir bulid $ cd build& cmake .. $ make -j12

您可以对代码进行一些更改,并确保以下测试脚本通过。

./memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =" set \ _ \ _ key__ \ _ \ _ data __" --key-prefix =" kv _" --key-minimum = 1 --key-maximum = 500000000 --random-data --data-size = 128 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =" get \ _ \ _ key __" --key-prefix =" kv _" --key-minimum = 1 --key-maximum = 500000000 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =& #34; incr \ _ \ _ key __" --key-prefix =" int _" --key-minimum = 1 --key-maximum = 1000000 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =& #34; lpush \ _ \ _ key__ \ _ \ _ data __" --key-prefix =" list _" --key-minimum = 1 --key-maximum = 1000000 --random-data --data-size = 128 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command ="添加\ _ \ _ key__ \ _ \ _ data __" --key-prefix =" set _" --key-minimum = 1 --key-maximum = 1000000 --random-data --data-size = 128 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =" zadd \ _ \ _ key__ \ _ \ _ key__ \ _ \ _ data __" --key-prefix ="" --key-minimum = 1 --key-maximum = 1000000 --random-data --data-size = 128 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =" hset \ _ \ _ key__ \ _ \ _ data__ \ _ \ _ data __" --key-prefix =" hash _" --key-minimum = 1 --key-maximum = 1000000 --random-data --data-size = 128 --test-time = 1800

./memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client-seed --command =" set \ _ \ _ key__ \ _ \ _ data __" --key-prefix =" kv _" --command-key-pattern = R --random-data --data-size = 128 --test-time = 1800. / memtier_benchmark -t 20 -c 50 -s 127.0.0.1 -p 51002 --distinct-client -seed --command ="获取\ _ \ _ key __" --key-prefix =" kv _" --command-key-pattern = R --test-time = 1800

我们测试了半个小时,然后测试了半个小时。因为数据不够大,所以大多数数据都在内存中,因此不同有效负载的get qps几乎相同。

Tendis是根据GNU通用公共许可证3.0版许可的。版权和许可信息可在文件LICENSE.txt中找到。