摘要: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. 数据结构:DHUOJ 删除链表的顺数及倒数第N个节点

    删除链表的顺数及倒数第N个节点 作者: turbo时间限制: 1S章节: DS:数组和链表 题目描述: 可使用以下代码,完成其中的removeNth函数,其中形参head指向无头结点单链表,n为要删除 ...

  2. Redis报错:DENIED Redis is running in protected mode

    转:Redis使用认证密码登录   Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis ...

  3. 让IE兼容background-size的方法_background-size ie下使用

    ie6,ie7,ie8下对css background-size并不支持,那么如何在ie下兼容background-size呢?在ie下把图片完整的居中显示在一定范围内在css中添加如下代码: fil ...

  4. Vuet.js规则详解,它是你不知道的强大功能?

    Vuet.js是什么? Vuet.js是给Vue.js提供状态管理的一个工具,与vuex不同,它是一种崇尚规则定制的状态管理模式.事先将状态更新的规则写好,然后将规则注入到组件中,然后状态按照预订的规 ...

  5. HCNP Routing&Switching之组播技术-组播路由协议PIM

    前文我们了解了组播技术中组播分发树相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16019334.html:今天我们来聊一聊组播路由协议PIM相关话题 ...

  6. 【Android开发】Android 颜色透明度换算

    透明度 透明度分为256阶(0-255),计算机上用16进制表示为(00-ff). 透明就是0阶,不透明就是255阶,如果50%透明就是127阶(256的一半当然是128,但因为是从0开始,所以实际上 ...

  7. java中如何使用接口继承(Extending Interfaces)

    5.接口继承(Extending Interfaces)和通话talk的功能.而Moto888更为高级,除了照相和通话功能以外,还有mp3的功能.接口继承到底有什么意义呢?马克-to-win:1)通过 ...

  8. react和react-dom是什么?

    使用react开发网页的话,我们难免会下载两个包,一个是react,一个是react-dom,其中react是react的核心代码.react的核心思想是虚拟Dom,其实虚拟Dom改变没有那么复杂,简 ...

  9. Blazor组件自做五 : 使用JS隔离封装Google地图

    Blazor组件自做五: 使用JS隔离封装Google地图 运行截图 演示地址 正式开始 1. 谷歌地图API 谷歌开发文档 开始学习 Maps JavaScript API 的最简单方法是查看一个简 ...

  10. c++对c的拓展_内联函数

    目的:保持处理宏的高效及安全性 解决的问题:1.c中预处理宏有些难以发现的问题 2.c++ 中预处理不能访问类成员,不能作用类的成员函数 作用:无函数调用时开销,又可像普通函数般进行参数.返回值类型安 ...