写点什么

KeyDB 重量发布 6.3.0 开源版

  • 2022 年 5 月 16 日
  • 本文字数:2429 字

    阅读完需:约 8 分钟

本文分享自华为云社区《KeyDB重量发布6.3.0开源版,华为深度参与贡献》,作者: 华为云 PaaS 小助手。


KeyDB 是目前 Redis 分布式缓存生态链产品中唯一实现完全多线程的开源产品。自从今年 4 月 Snapchat 收购 EQAlpha 之后(https://docs.keydb.dev/news/2022/05/12/keydb-joins-snap/ ),Snapchat 及所属的 KeyDB 团队大力推进 KeyDB 的开源社区的发展和建设,团队开始全身投入 KeyDB 社区的推广及影响力活动。5 月 12 日 KeyDB 社区隆重发布了 6.3.0 开源版本,将与华为加拿大研究院 DCS 团队 2021-2022 年合作的成果,深度优化的企业版的能力贡献给了开源社区。


合作优化的能力包括有完全多线程下进一步性能的提升,Async Rehash 的实现, Global lock& snapshot 优化算法的实现,Async 命令,主备集群下的 Fastsync 的能力, 以及 iStorage 接口实现与存储的对接等功能。


在相同的硬件上,KeyDB 可以实现比 Redis5 和 Redis6 IO 多线程条件下高得多的吞吐量。活动复制简化了热备盘故障切换,能够轻松地在副本上分发写入,并使用简单的基于 TCP 的负载平衡/故障切换。KeyDB 的更高的性能允许在更少的硬件上做更多的事情,从而降低了操作成本和复杂性。


下图比较了几个 KeyDB 最新版本和 Redis 设置,包括最新的 Redis6 io-threads 选项和 TLS 基准。在非 TSL 情况下比较最新的 Redis 版本性能有 4-5 倍的提升。在 TSL 安全加密情况下,性能更有超过 9-10 倍的提升。



KeyDB 团队和 Huawei DCS 云服务团队在过去一年中在 KeyDB 社区中积极合作与配合,实现了 KeyDB 在原企业版基础上的又一个飞跃。在性能,性价比和功能竞争力上有了新的突破。Huawei DCS 团队将继续参与 KeyDB 的社区合作,及持续投入参与该社区的核心发展工作中,力争促进在 KeyDB 架构,及生态上的进一步的提升。

KeyDB 6.3.0 开源发布 Release Note(中文翻译)

KeyDB 6.3.0 版是第一个包含以前 KeyDB 企业功能的开源版本!此版本是多年来摆脱 KeyDB 全局锁并实现跨核心更好扩展的工作的最极致产品。

Active Replication PSYNC

Active Replication PsyncKeyDB 的功能在旧的版本中已经实现,但在连接到新对等体时始终需要完全同步。在此版本中,KeyDB 支持部分同步,以实现快速群集愈合。此外,KeyDB 能够根据对等节点的知识更新其复制偏移量,这意味着从一个节点进行完全同步足以允许数据部分同步到网格中的其他节点。


此更改大大减少了将新节点添加到活动复制群集的时间。在我们的测试中,我们看到 12 节点网状群集的时间从 10 分钟以上缩短到 1 分半钟。

异步命令

异步命令是可以在没有全局锁的情况下执行的命令。必须首先在配置文件中通过设置“enable-async-commands yes”启用此功能。启用异步命令时,一致性会略有修改,特别是来自其他客户端的写入可能需要配置的时间才能对其他客户端可见。此时间使用 max-snapshot-slip 配置参数配置。


  • 使用异步命令的排序规则如下:

  • 写入总是在客户端之间完全有序执行写入操作的客户端始终立即可见写入操作


对于大多数应用程序,对复制一致性模型的轻微修改将不可见。如果您的应用程序依赖于不同客户端之间的排序,默认情况下禁用此功能。此外,还为那些确实依赖于客户端之间的一致性但愿意插入围栏以在正确时间断言总排序的客户端提供了一个名为“lfence”的新命令。


以下命令支持异步操作:

  • GET

  • MGET

随着时间的增加,其他只读命令将被添加。如果您特别感兴趣的命令,请发布一个问题,以帮助我们确定您的用例的优先级。

异步重哈希

KeyDB 依赖于自旋锁来同步线程。在 KeyDB 的早期版本中,等待获取锁时消耗的 CPU 时间被浪费了。

KeyDB 现在能够在这段时间内使用浪费的 CPU 时间执行重新哈希,以达到更有用的目的。在许多情况下,这几乎可以完全隐藏重新哈希的开销。启用此功能不需要配置,默认情况下它运行。

过程中后台保存

从历史上看,Redis 使用“fork”系统调用来创建一个执行后台保存的新进程。这使得代码更容易遵循,因为内核在后台保存过程中处理内存写时复制的艰巨任务。然而,这种方法的缺点是,无法准确估计所需的内存总量,包括后台保存。


KeyDB 现在使用新的“快照”系统在特定时间段创建数据库的快照,并在进程中创建写时复制新更改。因此,maxmemory 设置现在是全局设置,并将包括用于后台保存的内存。


为了向后兼容性,在后台保存期间,maxmemory 的语义会稍微修改。当后台保存正在进行时,KeyDB 将允许内存消耗超过 maxmemory 20%。这是为了模拟后台保存内存消耗不计入 maxmemory 设置的旧行为,同时允许轻松计算内存使用的总上限。

IStorage 接口

此版本还不包括 KeyDB 基于 RocksDB 的闪存功能。但是,该版本包括 KeyDB 的 IStorage 接口,这是我们持久存储功能的主干。通过为自定义存储解决方案实施此接口,您将启用所有 KeyDB 功能。

感谢我们的贡献者:

感谢所有为 KeyDB 做出贡献的人,包括错误报告、设计和测试:


Ben Schermel

Firaenix: Bug Report #393 - Crash in sorted sets with long names

Kerog: #401 Error after include *.confg

Gvsafronov: Fedora 35 Compile Failure

Talkabout: Always providing helpful and detailed bug reports, not limited to #378

Inakisoriamrf: #383 crash

Alebcay: #384 macOS build break

Server2245: #379 Install issue on RHEL7

Antiarchitect: #380 , and many others

Tchernomax: #352 missing support for systemd

Heng Kuang: Detailed bug reports and design suggestionsKajaruban Surendran: Detailed performance analysis of async rehash and other features

Paul Chen: Your enthusiasm and willingness to help debug issues has been deeply appreciated.


特别感谢华为加拿大研究团队详细而深入的 Bug 报告、功能设计,验证参与。

Thanks to the EQ Alpha Team that made this release possible: Malavan Sotheeswaran, Vivek Saini, Christian Legge, Peter Liang, Ben Schermel, John Sully


KeyDB 6.3.0 开源发布 Release Note 原文:https://github.com/Snapchat/KeyDB/releases/tag/v6.3.0 


点击关注,第一时间了解华为云新鲜技术~​

发布于: 刚刚阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
KeyDB重量发布6.3.0开源版_redis_华为云开发者社区_InfoQ写作社区