摘要: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. Effective Java —— try-with-resources 优先于 try-finally

    本文参考 本篇文章参考自<Effective Java>第三版第九条"Prefer try-with-resources to try-finally" The cod ...

  2. gateway聚合swagger3统一管理api文档

    springboot微服务整合swagger3方法很简单,下文会演示.但是在分布式项目中如果每个微服务都需要单独的分开访问获取接口文档就不方便了,本文将详细讲解springcloud gateway网 ...

  3. -> 在c语言中是什么意思?

    ->在C语言中称为间接引用运算符,是二目运算符,优先级同成员运算符".".用法:p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员.表达式p-> ...

  4. vs code下代码提示图标的含义(c++)

    其实不同的语言这些东西的含义还有不同 但差别也不是很大,比如Python中的那个大括号图标就成了模块(module)了

  5. 探索前端黑科技——通过 png 图的 rgba 值缓存数据

    本文系原创,欢迎转载,转载请注明作者信息项目地址:SphinxJS在线体验地址:https://jrainlau.github.io/sp... 说起前端缓存,大部分人想到的无非是几个常规的方案,比如 ...

  6. 如何监控微信小程序HTTP请求错误

    摘要: Fundebug的微信小程序错误监控插件更新至0.5.0,支持监控HTTP请求错误. 接入插件 接入Fundebug的错误监控插件非常简单,只需要下载fundebug.0.5.0.min.js ...

  7. 如何利用WebSocket实现网页版聊天室

    花了将近一周的时间终于完成了利用WebSocket完成网页版聊天室这个小demo,期间还走过了一段"看似弯曲"的道路,但是我想其实也不算是弯路吧,因为你走过的路必将留下你的足迹.这 ...

  8. ES6-11学习笔记--async,await

    基于Generator异步编程语法糖:async await async默认输出Promise对象 将异步的代码以同步的方式书写,提高代码可阅读性   基本使用: function timeout() ...

  9. JAVA处理Excel表格数据并写入数据库

    package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...

  10. 创建新的servlet一定要记得修改web..xml文件!!!

    创建新的servlet一定要记得修改web..xml文件!!!