ITPub博客

首页 > 数据库 > NoSQL > HN 热帖|替换 Redis 的一场赛跑

HN 热帖|替换 Redis 的一场赛跑

翻译 NoSQL 作者:小猿姐聊技术 时间:2024-03-29 17:23:13 0 删除 编辑

3 月 21 日, Redis Ltd. 宣布了一项重大决定:Redis "内存数据存储"项目从 Redis 7.4  版本开始将以非自由的、源代码可用的许可证发布。这一消息并不受欢迎,但也并非完全意外。这次的变化的不同寻常之处是市面上已经有了多个 Redis 替代品可供选择(至少有四个选项可供选择),其中包括已经存在的Redis分支 KeyDB 和 Linux 基金会刚刚发布的新项目 Valkey 等。Fedora和openSUSE这两个Linux发行版已经开始考虑移除Redis了,现在的问题是,Linux 发行版、用户和供应商会选择谁来替代 Redis。


Redis 简史

Redis 背后的故事有点复杂。因为 MySQL 无法满足需求,Salvatore Sanfilippo(就是鼎鼎有名的"antirez")决定为一个名为 LLOOGG 的实时日志分析器应用开发 "一种不同的数据库"。他没有创建一个关系数据库,而是设计了一个简单的字典数据库,将键值对存储在内存中——它的名字是 "remote dictionary server" (远程字典服务器)的缩写。随着时间的推移,Redis 目前已经发展成熟,并积累了许多更多的功能。Redis 很快成为 NoSQL 运动的一部分,2010 年 Sanfilippo 被  VMware 公司聘用来开发 Redis。他在 2013 年转移到了 VMware 的分拆公司 Pivotal,并继续参与该项目的开发。

大约在那个时候,Redis 在 Twitter 和 Pinterest 等知名用户得到采用,知名度开始提高,并开始出现在 Linux 发行版中。Redis也打包在 12.04(2012 年 4 月)版本的 Ubuntu、18(2013 年 1 月)版本的 Fedora 和其他版本中。 2013 年 9 月, Amazon Web Service(AWS)的 ElastiCache 服务中支持了Redis,这个合作使得双方的产品都增加了知名度。

2013 年初,一家名为 Garantia Data 的初创公司开始提供 Redis 服务,说自己是 "开源 Redis" 的更好替代品。Garantia 在 2013 年 11 月进行了第一轮融资,并提出 更改公司名称 为 RedisDB。遭到 Sanfilippo 的反对后,该公司在 2014 年初 改名 为 Redis Labs。Sanfilippo 本人在 2015 年 加入了 Redis Labs ,担任开源开发的负责人。他一直在 Redis Labs 工作到 2020 年。

Redis Labs 在 2018 年为其在核心数据库之上提供功能的插件模块采用了一种新的许可证。公司选择了使用 Apache 许可证 2.0 版的修改版本,其中添加了一个称为 "Commons Clause" 的附加条款。这个条款限制了出售软件或收费服务。公司切换许可证的原因是云服务提供商通过销售基于他们没有开发的开源代码的服务来 "利用开源社区"。当时,公司承诺 Redis "是 BSD 许可的,并且将永远保持 BSD 许可。

不止 Redis Labs 一家公司开始尝试使用限制性许可证。特别是受风险投资支持的数据库公司开始采用新的许可证,以确保他们能够作为市场上仅此一家销售使用该软件服务的供应商。MariaDB 在 2016 年为名为 MaxScale 的产品创建了商业源代码许可证(BSL),而 MongoDB 在 2018 年底推出了服务器端公共许可证(SSPL)。最终,Redis Labs 采用了一种双许可证方案,即 SSPL 和其自己的 Redis 源代码可用许可证(RSAL)。

在 2021 年中,Redis Labs 放弃 了其名称中的 "Labs"。在宣布改名时,Redis 再次承诺开源,并表示公司的重命名 "不会影响开源 Redis 的许可,它一直是并将继续是 BSD 许可的"。同时,他们还建立了一种治理模式,将 Redis 的 "架构、设计或理念" 的主要决策权交给社区的 "核心团队"。如今,治理模式页面已经不再在 Redis 的网站上展示,只能在 Internet Archive 的 Wayback Machine 上 找到 。它列出了五名核心团队成员,其中三名来自 Redis(Yossi Gotlieb、Oran Agra 和 Itamar Haber),以及来自阿里巴巴的赵钊和来自 AWS 的 Madelyn Olson。

Redis 在 3 月 20 日宣布了一项重大决定:"所有未来版本的 Redis 将使用源代码可用许可证发布",具体来说是 SSPL 和  RSAL。Redis CEO Rowan Trollope 写道,继续使用 BSD 许可证与公司成功推动 Redis 未来发展的能力  "不协调"。在这里,"未来版本" 指的是 Redis 7.4  及以后的版本。该公告的常见问题解答部分说明,根据公司的安全政策,安全补丁将被回溯到之前版本,并采用原始的三条款 BSD 许可证。


云计算与开源

对于像 SSPL 和 Redis 的 RSAL 这样的限制性许可证的支持者试图将换许可证这件事定位为巨头云厂商如 AWS 和开源之间的战斗,而使用限制性许可证是合乎逻辑的替代方案,云厂商是输家。在 2019 年,当时的 Redis Labs CEO Ofer Bengal 被引述说,Redis 采用了 Redis 模块的源代码可用许可证后,有 "许多不同的观点",但与云服务提供商竞争是必要的:

一些人谴责了这个[许可证更改]。但在最初的噪音平息后 —— 尤其是在一些其他公司提出类似的概念后 —— 社区现在理解必须改变开源的想法,因为它不再适应这个“云厂商使用其垄断地位采用任何成功的开源项目,却不对其做任何贡献”的时代。

在3月20日的公告中,Trollope写道"云厂商将只有在同意与Redis、Redis代码的维护者的许可条款后,才能提供Redis 7.4",但是,"对于Redis开发者社区来说,一切都不会改变,他们将继续享受双重许可下的宽松许可"。

"宽松许可"这个词有误导性。Redis能够为7.4及以后的版本采用非自由许可证方案,是因为外部开发者已经在宽松的BSD许可下授予了他们的贡献。SSPL和RSAL的条款与开源社区中对"宽松"这个词的理解并不相符。

很难将云厂商不贡献代码的说法与实际对 Redis 代码库的提交相吻合。通过对自 7.0.0 版本发布以来的提交进行快速审查,使用 gitdm 工具显示了在这段时间内有 967 次提交:

腾讯的朱彬彬对该项目的提交贡献了近25%。一些没有明确的雇主身份的贡献者很可能是Redis的员工,但很明显该公司并不是不依赖外部开发者单打独斗的。(注意,省略了一些贡献度较低的贡献者。)


改变分销模式

上面的代码提交示例表明,外部的代码贡献多少并非是修改许可证的关键原因。Redis是一家风投支持的公司,自2011年以来在多轮融资中已经筹集到了3.5亿多美元的资金。这家公司及其投资者似乎已经预判出,他们可以安全地从开源转向商业化,尝试获取更多的收入。

如果以MongoDB的结果为参考的话,这种预判是有可能实现的。MongoDB 在2017年上市,并在一年多后转向SSPL。不久,主要的Linux发行版停止打包该数据库,因为它不再符合他们的许可证标准。但是,那个时候MongoDB已经定位自己是 平台模型 ,鼓励开发者(及其雇主)使用并付费使用MongoDB及其附带的服务模型。分发一个源代码可用的MongoDB版本可以被视为一种 亏损 领导者策略,以免费的产品接触到该公司 并不关心 是否开源的开发者。


注:亏损领导者(也称领导者)是一种定价策略,即以低于市场成本的价格出售产品,以刺激其他利润更高的商品或服务的销售。在这种促销/营销策略下,"领导者 "是指任何受欢迎的商品,即以低价出售以吸引顾客的商品。


Redmonk创始人Stephen O'Grady在2017年 写道 :

随着开发者在技术选择和方向上的控制力量不断增强,即使在专有替代品在技术上更优越的情况下,开源软件由于其极大的可访问性而具有巨大的市场优势。在一个可立即下载的合适的选择 A 和由销售人员限制的理论上更优越的选择 B 之间做出选择实际上并不是一个选择。

Grady也指出的,"与基于服务的替代品相比开源通常并不便利",如果便利性是最采购的重要的因素,开源就有问题。尤其是当像MongoDB这样从专有供应商那里学到"锁定客户对业务有好处"。

锁定对业务真有好处吗?MongoDB一直在增长,并在上一个 财政年度 收入了16.8亿美元。同比增长了30%以上,其Atlas数据库服务的收入也增长了30%以上,这表明很多公司宁愿付费使用该服务,也不愿自己尝试托管它。尽管如此,该公司仍在亏损——同期亏损了超过3.45亿美元。

但是,投资者可能更关心的是股价而非实际利润。MongoDB上市时的股价大约为每股33美元,现在已经超过了每股350美元。如果Redis可以产生类似的结果,投资者会很高兴。


分支和替代品

O'Grady去年 写 道,风险投资支持的企业似乎已经达成了一个脱离开源的共识。特别是在他们并未被其他商业利益、基金会和其他有意参与的行业参与者"积极反对"的情况下。然而,Redis可能对行业情绪估计不准。

开源社区对于采用特定许可证的项目进行分支发展是有可能的,这些分支也很容易被一些大型公司认可。Hashicorp去年为其项目采用BSL时,其Terraform项目的一个分支在几天内出现,并被Linux基金会以 OpenTofu 的名字接纳。3月28日,Linux基金会宣布它正在支持Valkey,这是Redis 7.2.4的直接分支,亚马逊云(AWS)、谷歌云、甲骨文、爱立信和Snap是这件事的支持者。

Valkey分支在Redis许可证更改后的几天内就开始活跃起来了。Olson 写 道,她和"许多前Redis贡献者"开始了一个 分支 ,使用的是原始的BSD三条款许可证,临时名称为 "placeholderkv"。Olson、Zhao、Viktor Söderqvist 和 Ping Xie 被列为维护者。根据 Olson 的说法,这并不是 AWS 对  Redis 的一个分支,而是 "我试图与社区保持连续性"。虽然考虑了 KeyDB,但它已经发散到 "缺少社区习惯的很多功能" 的程度。

KeyDB分支是在2019年出于技术原因而创建的,不是许可证的原因。这个项目自称是"一个更快的Redis替代品",由John Sully和Ben Schermel创建,他们希望有一个 多线程版本 ,但无法说服Redis的维护者朝那个方向发展。Sully和Schermel成立了一家公司,也叫KeyDB,提供专有的企业版本。整个代码库在KeyDB被Snap收购时完全开源,使用BSD三条款许可证。

KeyDB作为替代品的问题在于,自从分支以来,它并没有跟上Redis的步伐,仍然 缺少 Redis 7的许多功能。Sully 表示 他没有太多时间处理"不直接影响Snap"的问题,尽管该项目"当然欢迎外部的帮助,如果社区有兴趣帮助,我们当然可以引入其他的维护者"。3月22日,Sully表示他考虑"可能会"增加维护者,使KeyDB更接近Redis 7。目前还不清楚Valkey是否会取代KeyDB,但Snap的存在使得长期内来看这种可能性是增加的。

SourceHut 的创始人和首席执行官Drew DeVault也创建了一个基于Redis 7.2.4的分支,名为Redict,但选择使用LGPLv3。在他的 公告帖 中,他说选择许可证是"一种权衡多种考虑的有意识的选择"。DeVault希望有一个copyleft的许可证,但"让用户尽可能容易地遵守"许可证,并简化与Redis模块的兼容或可以用来在Redis中执行操作的 Lua插件 的集成。他还指出,Redict不会有贡献者许可协议(CLA),但会要求贡献者用 开发者原创证书 验证贡献。尽管与SourceHut有千丝万缕的联系,DeVault选择了在Codeberg 托管Redict ,"为在Redis的GitHub基础社区中的老用户提供一个舒适和熟悉的用户体验"。

另一个可能的竞争者是3月18日发布的微软的 Garnet 。据称,2021年微软研究部门就开始了开发。它是一个远程缓存存储,可以缓存和管理与Redis相同类型的数据,并与 Redis序列化协议 兼容。Garnet是MIT许可的, 用.NET C#编写,不打算直接替代。然而,它的 API兼容性 页面声称它是一个可以"不做修改就与许多Redis客户端兼容"的"足够接近的起点"。(但不是所有Redis客户端都可以兼容)一位用户试图将NodeJS应用程序切换到Garnet,但 发现 Redis的 FLUSHALL 命令目前是不支持的。在项目的Roadmap上,也能看到增加对缺失API的支持的计划。


寻找替代品

再一次,Linux发行版需要收拾这个烂摊子。Neal Gompa在Fedora开发列表中 发起了一场讨论 ,提到了Redis许可证更改以及从Fedora中移除Redis的需求。Jonathan Wright 回复 说KeyDB可能是一个替代品;在许可证更改之前,他一直在"不紧不慢地进行打包工作"。他后来 说 ,KeyDB可能是"倒退的一步,给那些想要替换Redis后续版本的人带来麻烦"。不过,他在3月23日 写道 ,他已经推出了适用于Fedora和EPEL 8和9的测试版build。

在Valkey发布之后不久,Wright又说,他将在有标记发布的时候进行打包。还表示,他预计Valkey将在"大多数地方成为Redis的实际替代品"。

Gompa也在openSUSE的Factory讨论列表中 提出 了这个问题。Dominique Leuenberger 回复 了一个列表,显示有18个包依赖于redis包,这些包都在Tumbleweed中。那时Valkey还未发布,他们在讨论中提到了Redict和KeyDB作为替代品的可能性。

对于社区发行版来说,需要寻找用来替代 Redis 的替代品并不是他们面临的所有问题。Jacob Michalskie 指出了 openSUSE  项目中使用的几项服务将需要替换 Redis,其中包括 Pagure 代码托管软件(由 Fedora 创建并使用,用于  code.opensuse.org)和 Discourse 论坛软件。

Debian 贡献者 Guillem Jover 提出了一个包请求(Request for Package,RFP),提议将 KeyDB 作为  Redis 的潜在替代品。Jover 表示他不确定自己是否能够独自负责维护,但很乐意提供帮助。在与 Jover  的电子邮件交流中,他告诉我他的公司已经从 Redis 6 迁移到了 KeyDB,而且这次迁移非常顺利。根据 Jover 的说法,"与 Redis  7 相比,KeyDB 可能缺少一些功能,但我们没有发现影响,也没有感觉到我们错过了什么。"

Jover 认为现在来判断这些新的分支是否会继续得到维护还为时过早,而且 Redict 的 LGPLv3 许可可能对生态系统造成问题。在 Valkey 发布后的一封后续电子邮件中,他表示:"我认为我们可能会至少继续为 Debian 打包 KeyDB,如果它死掉了,总是可以从那里删除或进行过渡。"


前方的路

当然,现在预测哪一个或多个分支会获得显著的影响力还为时过早——但看起来Valkey很可能会成为一个可信赖的选择。一个具有广泛社区和行业支持的快速分支的可能性,应该让那些期望在放弃开源后能够顺利前进的供应商们警醒。


End

KubeBlocks 已发布 v0.8.0( KubeBlocks v0.8.0 发布!Component API 让数据库引擎组装更简单! )!KubeBlocks v0.8.0 推出了 Component API,让数据库引擎的组装变得更加简单。Addon 机制也有了重大改进,数据库引擎的 helm chart 从 KubeBlocks repo 中拆分出去,从此数据库引擎或者版本的变动已与 KubeBlocks 发版解绑。v0.8.0 还支持多版本的数据库引擎定义。Pika、Clickhouse、OceanBase、MySQL、PostgreSQL、Redis 等均有功能更新,快来试试看!

小猿姐诚邀各位体验 KubeBlocks,也欢迎您成为产品的使用者和项目的贡献者。跟我们一起构建云原生数据基础设施吧!

💻 官网:
🌟 GitHub: https://github.com/apecloud/kubeblocks
🚀 Get started: https://kubeblocks.io/docs/preview/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop

关注小猿姐,一起学习更多云原生技术干货。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70035809/viewspace-3010959/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-12-05

  • 博文量
    62
  • 访问量
    46589