一款低成本大容量的Redis替代数据库

671 阅读2分钟

哈喽,大家好,我是了不起
说到开源分布式键值数据库,大部分程序员们第一个想到的是 Redis 。而 Redis 部署在内存上,成本高——特别是大容量的 Redis 的集群部署成本。
那么有没有一个可替代 Redis 的更廉价的部署方案呢?答案是:Kvrocks,其部署在 SSD ,兼容 Redis 协议。下面给小伙伴儿们介绍下Kvrocks。

Kvrocks 简介

图片

Kvrocks 是一个分布式键值 NoSQL 数据库,使用 RocksDB 作为存储引擎,兼容 Redis 协议。
与 Redis 相比,Kvrocks 旨在降低内存成本并增加功能。复制和存储的设计灵感来自rocksplicator和blackwidow。
目前线上使用的公司包含: 美图、携程、百度、雪球以及白山云等。

Kvrocks 具有以下主要功能:

  • Redis协议,用户可以使用redis客户端访问kvrocks
  • 命名空间,类似于 redis db,但每个命名空间使用令牌
  • 复制,异步复制使用像 MySQL 这样的 binlog
  • 高可用,支持redis sentinel 在主从失败时进行故障转移
  • 集群模式,集中管理但兼容Redis集群客户端访问

Kvrocks 支持以下平台:

  • centos 6/7
  • ubuntu
  • macosx

Kvrocks 快速使用

要求

  • g++(c++11 需要,版本 >= 4.8)
  • autoconf automake libtool snappy

构建和使用

  1. 安装 snappy
# Centos/Redhatsudo yum install -y epel-release && sudo yum install -y git gcc gcc-c++ make snappy snappy-devel autoconf automake libtool which gtest gtest-devel#Ubuntu/Debiansudo apt updatesudo apt-get install gcc g++ make libsnappy-dev autoconf automake libtool#macOsbrew install autoconf automake libtool snappy googletest
  1. 构建
$ git clone --recursive https://github.com/kvrockslabs/kvrocks.git
$ cd kvrocks
$make -j4
  1. 运行 kvrocks
$ ./src/kvrocks -c kvrocks.conf

性能表现

硬件

  • CPU:48 核 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
  • 内存:32 GiB
  • NET:英特尔公司 I350 千兆网络连接
  • 磁盘:2TB NVMe Intel SSD DC P4600

Benchmark Client:多线程redis-benchmark(unstable branch)

  1. 命令的 QPS

kvrocks:worker = 16,基准测试:8 个线程/512 个 conns/128 个有效负载

延迟:99.9% < 10ms

图片

  1. 不同 payload 上的 QPS

kvrocks:worker = 16,基准测试:8 个线程/512 个 conns

延迟:99.9% < 10ms

图片

  1. 不同 worker 上的 QPS

kvrocks:worker = 16,基准测试:8 个线程/512 个 conns/128 个有效负载

延迟:99.9% < 10ms

图片

了不起有话说

Kvrocks 实现了一种兼容 Redis Cluster 客户端的中心化集群管理方案,既节省了硬件费用开销,又能通过中心化的方式让集群管理更简单更轻量。

此外关注公众号【程序员了不起】回复【eee119】可获取IDEA破解版。