KeyDB适配华为云&Gaussdb

举报
yd_282553764 发表于 2024/12/12 10:56:13 2024/12/12
【摘要】 文章介绍Keydb适配Gaussdb的主要步骤和问题

什么是 KeyDB?

KeyDB 是一个高性能、多线程、兼容 Redis 的开源数据库。它是在 Redis 的基础上开发的,继承了 Redis 的易用性和强大功能,同时通过多线程架构和其他优化,提供了更高的吞吐量和更低的延迟。

官方网站: KeyDB

KeyDB 的主要特性

1. 多线程架构

KeyDB 使用多线程设计,在多核处理器上能更好地利用硬件资源。相比 Redis 的单线程模型,KeyDB 在高并发场景下具有显著的性能提升。

2. 完全兼容 Redis 协议

KeyDB 支持 Redis 客户端和所有 Redis 命令,用户可以直接将现有 Redis 项目迁移到 KeyDB,而无需修改代码。

3. 内存优化

KeyDB 支持多主架构(Active-Active Replication),允许多个主节点共享数据,提升可用性和性能。

支持混合使用线程内存和共享内存,以最大化利用内存资源。

4. 多主架构 (Active-Active)

KeyDB 提供真正的多主复制,多个主节点可以同时读写,解决了 Redis 单主架构的局限性。

5. 内置 TLS 支持

KeyDB 内置支持 TLS,提升数据传输的安全性。

6. 持久化功能

和 Redis 一样,KeyDB 支持 RDB 和 AOF 的数据持久化机制,保证数据的可靠性。

7. 更多数据结构扩展

KeyDB 支持的扩展数据结构和功能(如 JSON 和多字段操作)比 Redis 更丰富。

8. 自动故障转移和高可用性

KeyDB 支持 Redis Sentinel 的功能,同时它的多主架构可以进一步提升系统的高可用性。

KeyDB 与 Redis 的性能对比

1. 多线程带来的优势

在单线程设计的 Redis 中,所有命令和 IO 都在一个线程中执行,这对多核 CPU 的利用效率较低。

KeyDB 的多线程模型可以并发执行命令和处理 IO,尤其在多核服务器上性能提升显著。

2. 性能测试

官方性能测试表明:

在相同硬件环境下,KeyDB 的 QPS(每秒查询数)通常是 Redis 的 2 倍到 5 倍。

在高并发场景中,KeyDB 更能保持低延迟。

KeyDB 的安装

1. 通过 Docker 安装

docker pull eqalpha/keydb

docker run -d --name keydb -p 6379:6379 eqalpha/keydb

2. 从源码安装

# 安装依赖

sudo apt update

sudo apt install -y build-essential tcl git

# 克隆源码

git clone https://github.com/Snapchat/KeyDB.git

cd KeyDB

# 编译

make -j$(nproc)

# 运行 KeyDB

src/keydb-server

我的安装方式:推荐

wget https://download.keydb.dev/pkg/open_source/rpm/centos8/aarch64/keydb-latest-1.el8.aarch64.rpm
yum -y install ./keydb-latest-1.el8.aarch64.rpm
service keydb start

3. 通过包管理工具安装

KeyDB 提供了一些预编译的二进制包,可以直接从 KeyDB Releases 页面下载适合你的版本。

配置 KeyDB

KeyDB 的配置文件格式和 Redis 非常类似,主要配置项包括:

配置多线程

keydb.conf 文件中设置线程数量:

server-threads 4   # 设置为 CPU 核心数

启用多主架构

active-replica yes

multi-master yes

配置持久化

启用 RDB 和 AOF 持久化:

save 900 1

save 300 10

appendonly yes

appendfilename "appendonly.aof"

使用 KeyDB

KeyDB 的使用方法与 Redis 完全一致。以下是一些常见操作:

启动服务

keydb-server keydb.conf

客户端连接

keydb-cli

常见命令

SET key value     # 设置键值对

GET key           # 获取键的值

DEL key           # 删除键

KEYS *            # 查看所有键

适用场景

1. 高性能、高并发场景

在多线程和多主架构的支持下,KeyDB 在需要处理大量并发请求的应用中表现出色。

2. 需要高可用性和容错的场景

KeyDB 的多主架构和自动故障转移功能非常适合分布式系统和高可用环境。

3. 需要与 Redis 兼容的场景

如果项目中已经使用了 Redis,但希望获得更好的性能,可以无缝迁移到 KeyDB。

步骤1:fork 仓库

本次任务是在欧拉os上部署Keydb,测试是否正常运行。并附有demo,访问Keydb。

fork demo的仓库,demo中有基于servicecomb实现的完整的微服务脚实例,仓库信息如下:

https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava/overview

步骤2:demo本地编译并运行

主要步骤:

  • 执行mvn clean install -DskipTests

安装Keydb:

wget https://download.keydb.dev/pkg/open_source/rpm/centos8/aarch64/keydb-latest-1.el8.aarch64.rpm
yum -y install ./keydb-latest-1.el8.aarch64.rpm
service keydb start

步骤3:demo适配思路

思路比较简单:就是集成redis,因为Keydb就是redis的分支。

我的适配项目:https://gitcode.com/chenzhida/opensource-demo-keydb-241211/overview

分支:dev_czd_keydb

步骤3:适配过程的问题

问题1:因为使用的spring boot3,spring boot3在2的基础上,修改了properties的属性,正确的如下:

spring:
  data:
    redis:
      host: ip         # Redis 服务器地址
      port: 6379               # Redis 端口
      timeout: 5000ms          # 超时时间
      lettuce:
        pool:
          max-active: 8        # 最大连接数
          max-idle: 8          # 最大空闲连接
          min-idle: 0          # 最小空闲连接
          max-wait: 10s        # 最大等待时间

问题2:公网无法访问

解决:在keydb的配置文件中,去掉binding属性即可

步骤4:购买华为云Gaussdb和ECS,上云测试

购买华为云Gaussdb,并且购买公网IP,不然无法访问。配置如下:

产品名称

产品类型

数据库引擎版本

性能规格

实例类型

部署形态

备注

云数据库 GaussDB

基础版

8.201

独享型1:4

集中式

1主2备

推荐


产品名称 CPU架构 实例类型 公共镜像 镜像版本 备注
弹性云服务器 鲲鹏计算 鲲鹏通用计算增强型 Huawei Cloud EulerOS Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) 推荐


步骤5:部署并访问

结果如下:




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。