摘要:5月12日 KeyDB 社区隆重发布了 6.3.0开源版本,将与华为加拿大研究院DCS团队2021-2022年合作的成果,深度优化的企业版的能力贡献给了开源社区。

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: #401Error after include *.confg
Gvsafronov: Fedora 35 Compile Failure
Talkabout: Always providing helpful and detailed bug reports, not limited to #378
Inakisoriamrf: #383crash
Alebcay: #384macOS build break
Server2245: #379Install issue on RHEL7
Antiarchitect: #380, and many others
Tchernomax: #352missing support for systemd
Heng Kuang: Detailed bug reports and design suggestions
Kajaruban 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

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

KeyDB重量发布6.3.0开源版的更多相关文章

  1. iView 一周年了,同时发布了 2.0 正式版,但这只是开始...

    两年前,我开始接触 Vue.js 框架,当时就被它的轻量.组件化和友好的 API 所吸引.之后我将 Vue.js 和 Webpack 技术栈引入我的公司(TalkingData)可视化团队,并经过一年 ...

  2. Wonder 1.0正式版发布-----WebGL 3D引擎和编辑器

    介绍 我们很荣幸地向大家发布Wonder 1.0正式版!免费.开源,不用注册,直接打开在线编辑器即可使用! Wonder是web端3D开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态 ...

  3. Python PyQt5 | Hi音乐 v3.0.0 正式版发布

    Hi音乐 两大平台全音乐搜索.收听与下载的简洁网络音乐播放器 中文介绍 | English Description 源码:Gitee 码云 简介 Hi音乐 是基于 Python 开发的简洁网络音乐播放 ...

  4. (Mac OS平台)升级.NetCore1.0正式版小记

    昨天终于发布了.NetCore1.0正式版.昨晚回去就顺手把手里的一个.NetCore项目升级了一下.还是遇到了一些问题,这里记录下吧. 1.Restore问题 这个问题一直都有,一直放那没去解决.主 ...

  5. 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!

    去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...

  6. 【开源】EasyFlash 新年发布 V4.0 beta 版,完全重写(转)

    [开源]EasyFlash 新年发布 V4.0 beta 版,完全重写 EasyFlash V4.0 beta [开源]嵌入式闪存库 EasyFlash for STM32,支持Env和IAP

  7. FineUI(专业版)v1.2.0 和 FineUI(开源版)v4.1.1 同时发布!

    FineUI(开源版)v4.1.1 (建议所有 v4.x 升级到此版本):http://fineui.com/demo/ +2014-08-15 v4.1.1        -修正Form中表单字段设 ...

  8. Redis 3.0正式版发布,正式支持Redis集群

    Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...

  9. Moon.Orm 5.0(MQL版)及之前版本的开源计划

    开源综述:步步开源 Moon.Orm 5.0 (MQL版) 版本维护及下载 (跟踪发布) Moon.Orm 5.0系列文章 Moon.Orm 5.0性能问题,将发言权交给你! 一.5.0目前的情况,步 ...

随机推荐

  1. java弹框

    Java弹窗操作 1.任务简介 本博客介绍两种Java弹窗操作的方法,第一个种是通过弹出对话框显示用户输入的信息,第二种是通过用户输入数字的不同打开不同的程序. 2.弹出对话框的操作 1)任务内容编程 ...

  2. 顺利通过EMC实验(10)

  3. idea 创建maven web项目部署在 tomcat maven plugin中

    前提:1.安装jdk,多数系统使用jdk1.8.xxx,因此选择下载此版本的居多 2.安装Maven 3.部署到tomcat我们可以有两种方式,一种是利用tomcat插件来进行部署,另一种是下载tom ...

  4. CCF201312-2ISBN号码

    问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其中符号"-&qu ...

  5. 使用 ssm 实现登录日志记录

    使用 ssm 实现登录日志记录 学习总结 一.基础准备 1. 实现效果 2. 数据表 2.1 登陆日志信息表 2.3 员工表 二.代码实现 1. SysLogLogin 实体类 2. LogAspec ...

  6. SpringMVC注解环境搭建

    基本步骤 新建Maven项目(Web) 导入依赖 配置web.xml 配置springmvc配置文件 编写Controller 创建view页面 部署并启动Tomcat 开始搭建 新建Maven项目( ...

  7. 在非k8s 环境下 的应用 使用 Dapr Sidekick for .NET

    在k8s 环境下,通过Operator 可以管理Dapr sidecar, 在虚拟机环境下,我们也是非常需要这样的一个管理组件,类似下图:在这张图片中,在上图左面,我们看到了"dapr.ex ...

  8. Conda安装及第一个py程序

    Conda安装及第一个py程序 安装Conda 下载安装 在Anaconda官网下载Anaconda 打开Conda安装程序 设置好安装目录(这个一定要记好,后边要用),比如我的目录就是 D:\Pro ...

  9. 使用 Nginx 实现 URL 的重定向

    1. 概述 老话说的好:取乎上,得其中:取乎中,得其下.因此我们不妨把目标定的高一些,去努力,才能得到更好回报. 言归正传,今天我们来聊聊 使用 Nginx 实现 URL 的重定向. 2. 使用 Ng ...

  10. SSM整合_年轻人的第一个增删改查_查找

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...