摘要: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. 遇到的错误之"Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/velocity/context/Context at"

    问题 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/velocity/context/ ...

  2. C语言泛型编程——泛型冒泡排序

    在实际编程中,常常会需要一些方法(函数),比如排序,它们具体实现基本一致,仅仅只有参数类型不同, 那么可不可以有一种通用的函数,不管是什么类型的参数都可以通用呢? 泛型编程:泛型即是指具有在多种数据类 ...

  3. 顺利通过EMC实验(20)

  4. 一个命令完成[打包+同步七牛cdn+上传服务器]

    webpack+gulp+qshell+npm-scripts实现一个命令完成[打包+同步cdn+上传服务器] 说明 由于我们用的七牛云存储,所以cdn也是走的七牛,所以并不适用于其他的cdn,但是思 ...

  5. 利用angular4和nodejs-express构建一个简单的网站(七)—用户注册之ReactiveForm

    这一节对用户注册组件进行分析.用户注册组件主要涉及angular4表单的操作.Angular提供了两种构建表单的技术:响应式表单和模板驱动表单. 这两项技术都属于@angular/forms库,并且共 ...

  6. Codepen 每日精选(2018-4-28)

    按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以打开原始页面. 页面目录特效https://codepen.io/suez/pen/k... 选单交互效果https:// ...

  7. hdfs对文件的增删改查

    源代码: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  8. 【Android开发】EasyPermissions 请求权限

    安卓6.0以后,开发应用的时候,仅在AndroidManifest.xml中申请权限已经不可以了,需要在代码中动态申请. 现在看一个google推出的机制:EasyPermissions 引入步骤: ...

  9. java中this这个概念初学者非常难理解,请举例说明

    4.this关键字(this key word) 继上一小节,(3.一个对象可能有多个参考)this是当中的一个参考!指向他自己. class MyTestDate {    int year;    ...

  10. 【代码大全2 学习笔记】ADT 抽象与封装

    ADT abstract data type 抽象数据类型 要理解面向对象编程,就要先理解ADT这个概念.不懂ADT的程序员开发出来的类只是名义上的"类"而已--只是单纯的把一些相 ...