17611538698
webmaster@21cto.com

Valkey 开始 Redis 的克隆

数据库 0 941 2024-07-19 11:59:57

导读:Linux 基金会的 Valkey 项目将不再是 Redis 数据库的一个简单克隆。该项目的维护者摆脱了 Redis 多年来“保守又苛刻”的领导,正在认真改进这个键值存储库,以适应当今的工作负载。

图片

不过,如果你认为 Linux 基金会的 Valkey 项目只是 Redis 数据库的一个克隆产品,那就需要再好好看看本文了:)

该项目的主要维护者称,Valkey 已经摆脱了多年来 Redis 的管理,下一步将改进键值存储,以满足当今工作负载与硬件平台的新兴需求。

“之前的 Redis 核心团队实际上在技术上相当保守,”AWS首席工程师、前 Redis 长期维护者与 Valkey 联合发起人之一 Madelyn Olson 在今年的 Linux 基金会开源峰会上如此表示,

“Redis 确实不想破坏任何东西。” Olson 补充说,新团队想要行动得更快一些。

我们如何从 Redis 走向 Valkey

在今年的 3 月份,Redis Labs 出于商业考虑,更改了Redis的开源许可证,未来版本的许可证将变为更具商业限制的双重许可证。

这对许多用户产生了直接影响,包括个人开发者以及企业。而在最近的调查中,DBEngines将 Redis 评为全球第六大最被广泛使用的数据库。

“这种后退对开源社区来说很糟糕。Redis 不能独自承担所有工作,”Olson 谈到 Redis 的许可证决策时说道。后来的好消息是,他团结了很多喜欢贡献的开源开发者,重建了新的云存储数据库基础。

接下来,Linux 基金会介入并支持Redis早先的一个开源分支,新维护者打算将其保留并继续开源,并将该软件重新命名叫做 “Valkey”。

Valkey 采用 Redis v7.2.4 作为基础,并将其置于开源伯克利软件分发 (BSD) 许可证之下,这便是 Valkey 的初始版本 7.25。

Redis 发展史 

Redis 项目由 Salvatore Sanfilippo 于 2009 年创建,它是一种高性能键/值存储数据库,最初采用开源 AGPL 许可,用作实时数据分析的数据存储,但最终它发现自己适合作为快速数据检索的通用型缓存。

此后,数千名开发人员都为该项目做出了贡献。尤其是Ruby 社区对这项技术非常地感兴趣,促使 Sanfilippo 继续扩展 Redis 并支持多服务器集群。

AWS 工程师、后来的 Valkey 开源负责人 Kyle Davis 在一次演讲中表示:“当我开始参与 Ruby 开发者社区时,真正吸引我注意的一点是,当你有结构,或有键指向存储结构中的值,而不是仅仅存储在一系列字节中。”

“这意味着,当你只有一个字节系统时,你就可以很好地控制这些事物。”

Valkey 代表着一种连续性

在 Redis 闭源之后,许多 Redis 分支都相继冒了出来,其中包括微软的 Garnet(这是用 C# 编写的重新实现版本)、Redict、多线程的 KeyDB(已经存在好几年了)以及 DragonflyDB。

图片

Kyle Davis 进一步解释说,Valkey 在这个新生态系统中的最大作用是提供连续性。它从 Redis 接收了不少外部维护者,并将代码库保留为 C 语言式的单线程。

最最重要的是,它维护了开源许可证,并转为 Linux 基金会的项目,这意味着它不再由一家公司控制。Davis 说:“开源许可证的变更让开发者们感到很受打击。”

Valkey 项目的活跃度

RedMonk 分析师 Steve O'Grady 在一篇博客中分享了 Valkey 的一些 GitHub 统计数据,虽然只是初步的数据。他指出,至少在启动阶段,Valkey 比 Redis 本身更加活跃,尤其是以下几个方面:

- 与 Redis 相比,合并请求的数量大约是其 2 倍(过去 30 天内)

- 开放请求数量增加约 3 倍

- 项目作者数量增加约 2 倍

- 代码添加数量增加约 6.5 倍

- 代码删除数量增加约 4 倍

Valkey:今日兼容,明日尖端

最开始的时候,Valkey 团队致力于确保和 Redis 的兼容性。

假设你正在运行 Redis 7.2.4,则可以关闭这个持久性服务器,然后启动 Valkey,将其指向持久性文件或快照,Valkey 就会立即理解它。

Valkey 开发团队仍在确认所有边缘情况的兼容性,其技术文档也正在更新中。

Davis表示,展望此次新的发布之后,Redis 和 Valkey 将成为“两个不同的软件”。

展望未来,任何一个都可能会,也很有可能,破坏与另一个软件的兼容性。

这并不是说 Valkey 核心开发团队为了兼容性而破坏兼容性,而是他们亦非常渴望开始添加一些新功能,尤其是那些一直在 Redis 等待列表中的功能。

下一个主要版本 Valkey 8 的一个主要主题(Topic)为:在扩展集群时,使“槽”的迁移更加可靠。“目前,当节点发生故障时,它们可能会处于不一致的状态,” Madelyn Olson 说道。此外,得益于 AWS 所做的一些工作,集群中的内存密度也将进一步提高。

Valkey 8 除了上述之外,主要的改进主题汇总如下:

- 更好的性能和内存效率

- 更易于管理

- 更好地与云原生和开源技术集成

- 更丰富的扩展性

Madelyn Olson 表示,在性能方面,Valkey 开发团队希望在其下一版本中实现多线程,以改善水平扩展,并提高每个内核的性能。主要原因是自 2009 年以来,CPU 架构发生了相当大的变化,Valkey 可以更好地利用并发友好的芯片。

通过删除指针和其它无关的“技巧”,内存密度也可以得到提高。

此外,Valkey 集群应该可以更容易管理。Olson 说,Redis 的实现是“集群算法的首次良好尝试。尽管如此,它仍然非常难以管理。”

Olson 表示:“我们希望让这一切变得更加可靠。一组选定的节点将只管理所有其他节点的状态,而不是让每个节点都必须协调彼此的状态,复杂且容易出错“。

“我们很久以前就尝试过构建它,但是 Redis 团队拒绝了,”Olson 如是说。

开发团队还将寻找更好地与其他开源项目集成的方法,这是因为项目与 Linux 基金会的关联。比如有一种简单的方法来整合OpenTelemetry,或者让 Valkey 成为其它开源数据库的缓存前端。

Olson说:“我特别希望得到更多开源贡献者的帮助。”

可扩展性是另一个值得探索的领域,尤其是在开发新数据类型方面。Redis 的最新新数据类型是Stream(字符流),它于 2016 年推出。可以通过模块轻松添加新的数据类型。

所有热门的新数据类型都值得考虑,包括JSON、时间序列数据、矢量数据……以及用于速率限制的t-digest。不过公平地说,Redis 也在研发更多的类似这些新兴的数据类型。

Olson说:“如果有其中之一听起来很有趣,希望您告诉我们,以便我们可以将其列为长期开发路线图的优先事项。”

Valkey 项目计划组织一次贡献者峰会,以进一步充实新想法。

分叉后的反应

Redis 的许可证变更紧随 HashiCorp 的类似举措,后者去年也改为采用更加商业友好的许可证。

这一举措导致Terraform分叉为 Linux 基金会的OpenTofu和Vault ,后来统一更名为OpenBao。在历史上看,对开源友好的 IBM 收购了 HashiCorp,这让很多人希望蓝色公司也将这些产品转回开源模式。

换句话说,Valkey 可能是该行业更具流行趋势的一部分。

RedMonk 的 O'Grady 如此写道:“从长远来看,无论项目最终的命运如何,Valkey 都代表着从市场角度对现行重新授权趋势的第一次真正、重大的转变。”

“并非每个重新授权的项目都能够或将被分叉,”他说道。“但推动将重新授权作为核心战略的投资者、董事会和领导层今后必须认真考虑分叉的可能性,因为这是一项可能更有意义的成本。”

与供应商无关的开源许可证也可能帮助 Valkey 吸引到比 Redis 本身所获得的更多的商业机构资助。

目前所有主流云提供商都以某种形式支持 Redis。而 AWS 已经迅速驰援了 Valkey,并为该项目投入了大量研发工程师。

爱立信、Google Cloud、Oracle以及Percona都开始全力支持Valkey项目,Percona的 技术负责人 Schlemmer  如此说:

“随着 Valkey 项目的形成,这是我们乐意参与、共同实现价值观的机会,因为我们相信开放会更好!”

作者:万能的大雄

评论