Apache Kvrocks一个分布式NoSQL数据库

Apache Kvrocks 是一个分布式键值 NoSQL 数据库,使用 RocksDB 作为存储引擎,兼容 Redis 协议。与 Redis 相比,Kvrocks 旨在降低内存成本并增加容量。Apache Kvrocks一个分布式NoSQL数据库

特性

  • Redis 兼容:用户可以通过任何 Redis 客户端访问 Apache Kvrocks。
  • 命名空间:与 Redis SELECT 类似,但每个命名空间配备有令牌。
  • 复制:像 MySQL 一样使用 binlog 进行异步复制。
  • 高可用:支持 Redis 哨兵在 master 或 slave 故障时进行故障转移。
  • 集群:集中管理,但可通过任何 Redis 集群客户端访问。

维护与监控

完整备份

您可以使用「bgsave」命令触发「Kvrocks」生成备份,并使用「rsync」工具将备份的所有文件复制到远程服务器。

增量备份

如果 Kvrocks 数据库变化不大,可以尝试增量备份,这种方式可以使用更少的网络带宽。此解决方案类似于 Kvrocks 在完全同步时恢复基于损坏的传输的文件。

  • 获取旧的远程备份文件列表,以及当前新的备份文件列表(通过 bgsave 命令和读取 backup 目录)。
  • 通过比较,找出旧远程备份的无效文件,并将其删除。
  • 仅复制旧远程备份没有但新备份有的文件,并存储到远程服务器中。

Grafana 监控

与 Redis 指标监视器一样,Kvrocks 也将内部指标导出到 INFO 命令。Kvrocks Grafana 仪表板模板可在 Grafana.com 上获取。

「下载 JSON 文件」

wget https://grafana.com/api/dashboards/15286 -O kvrocks-dashboard.json

「Grafana 屏幕截图示例」Apache Kvrocks一个分布式NoSQL数据库

命名空间

与 Redis 数据库一样,Kvrocks 使用命名空间来隔离用户之间的数据。但与 Redis 不同的是,每个命名空间都有自己的密码。使用时数据将存储在默认命名空间中 requirepass。当启用集群模式(如 Redis DB)时,命名空间将不起作用。

管理命名空间

添加命名空间,必须设置 requirepass,因为 requirepass 用户视为管理员。

# Auth with the requirepass
redis-cli -p 6666 -a ${REQUIREPASS}

# Add a new namespace with the token, the namespace name must be unique.
127.0.0.1:6666> namespace add ${NEW NAMESPACE} ${NEW TOKEN}

# Update the namespace's token
127.0.0.1:6666> namespace set ${NAMESPACE} ${NEW TOKEN}

# Delete the namespace, the namespace's data WOULD NOT be deleted,
# unless you use the `flushdb` command to flush the DB data.
127.0.0.1:6666> namespace del ${NAMESPACE}

# Get the namespace's token
127.0.0.1:6666> namespace get ${NAMESPACE}

# List namespaces
127.0.0.1:6666> namespace get *

请注意,必须使用该 config rewrite 命令将新命名空间保留到配置文件中。

切换命名空间

首先使用 namespace add 命令创建命名空间 ns1 和 ns2 并使用相应的标记 token1 和 token2。

127.0.0.1:6666> namespace add ns1 token1
127.0.0.1:6666> namespace add ns2 token2

然后可以使用 token1 和 token2,在命名空间之间操作数据不会互相影响,如下所示:


# Use token1 to switch to ns1
127.0.0.1:6666> auth token1
OK
127.0.0.1:6666> set key 100
OK
127.0.0.1:6666> get key
"100"

# Use token2 to switch to ns2
127.0.0.1:6666> auth token2
OK
127.0.0.1:6666> set key 200
OK
127.0.0.1:6666> get key
"200"

# Use token1 to switch to ns1 again, the value is still 100
127.0.0.1:6666> auth token1
OK
127.0.0.1:6666> get key
"100"

使用入门

使用 Docker

拉取最新镜像并启动容器:

docker run -it -p 6666:6666 apache/kvrocks

现在可以使用 redis-cli 在端口上将 kvrocks 服务器作为 Redis 运行 6666:

redis-cli -p 6666

使用 git

git clone https://github.com/apache/kvrocks.git
cd kvrocks
./x.py build
# `./x.py build -h` to check more options;
# especially, `./x.py build --ghproxy` will fetch dependencies via ghproxy.com.

通过以下方式运行 Kvrocks 服务器:

./build/kvrocks

使用 redis-cli 在端口上将 kvrocks 服务器作为 Redis 运行 6666:

redis-cli -p 6666

传送门

开源协议:Apache2.0

开源地址:https://github.com/apache/kvrocks

项目合集:https://github.com/OpenTechCol/OpenTechCol

Apache Kvrocks一个分布式NoSQL数据库

-END-


原文始发于微信公众号(开源技术专栏):Apache Kvrocks一个分布式NoSQL数据库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155278.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!