本文分享自华为云社区《KeyDB重量发布6.3.0开源版,华为深度参加奉献》,作者:华为云PaaS小帮手
KeyDB是目前Redis 分布式缓存生态链产品中唯一完成彻底多线程的开源产品。自从今年4月Snapchat 收购EQAlpha之后(docs.keydb.dev/news/2022/0… ),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 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 原文:github.com/Snapchat/Ke…
点击关注,第一时刻了解华为云新鲜技术~