通过仔细规划迁移到Valkey,您可以确保在增强基础设施以适应未来增长的情况下将中断降至最低。
译自 Navigating the Path From Redis to Valkey,作者 Martin Visser。
无论你对Redis更改其内存数据存储软件许可证的决定有何看法,它无疑对围绕Redis存在的开源社区产生了巨大影响。在一片沮丧声中,Valkey迅速被创建作为一种开源替代方案,考虑到该项目对许多开发人员而言至关重要。
但这同时也代表着依赖Redis作为其内存数据存储和缓存的首选项目的组织的一个重要转折点。你应该坚持你所了解的,如果你决定做出改变,你应该如何规划迁移?
开发人员担心Redis的这一变化,因为它影响了他们对应用程序关键组件的思考方式。Redis是最常用的键值存储,在最近的一项调查中,67%的受访者部署了它。许可证变更已使许多开发人员开始考虑他们的未来方法,因为在我们对部署Redis的受访者的调查中,70%的人表示Redis许可证的转变促使他们寻求替代方案。
Valkey是开源社区的回应,他们不想看到另一个项目被拿走并变成他们不同意的东西,或者社区成员无法按照自己的意愿使用的东西。社区没有忍受这个问题,而是决定从Redis的最后一个开源版本创建自己的分支,然后继续开发以满足用户的需求。
由谷歌、AWS和Oracle等科技巨头共同努力,Valkey不仅仅是一个简单的技术复制品。它代表了关于开源可持续性持续辩论中的一种原则性立场。通过继承Redis的核心功能并承诺持续的社区驱动创新,Valkey旨在提供一个稳定、透明的替代方案,以解决对厂商锁定和专有约束的担忧。这在Valkey最近发布的新主要版本中已经显而易见,其中这些科技巨头和其他公司做出了重大改进。
Redis因其易于使用和可扩展的性能而备受喜爱。Valkey延续了这种方法,为开发人员提供了一套丰富的原生数据结构,简化了复杂的应用程序逻辑。这些数据结构允许开发人员使用最少的代码实现复杂的算法和数据操作。例如,构建实时排行榜或实现强大的任务队列变成了简单、优雅的命令,而不是复杂的数据库查询。
除了作为数据库的原始速度之外,Redis和Valkey还使实现数据的分布式缓存变得非常容易。
Redis和Valkey都有助于开发人员通过加快数据访问来提高应用程序的性能。凭借亚毫秒级的响应时间和每秒处理数百万次操作的能力,使用内存数据存储作为数据库可以改变应用程序处理和检索数据的方式。
除了作为数据库的原始速度之外,Redis和Valkey还使实现数据的分布式缓存变得非常容易。通过将频繁访问的数据存储在内存中,您可以创建一个高性能层,从而减少后端数据库负载并加快应用程序响应时间。
最强大的功能之一是其模块系统,它允许开发人员扩展数据库的核心功能而不会影响性能。这种可扩展性对于金融科技等复杂领域尤其引人注目,在这些领域,标准数据库操作往往无法满足专业需求。
例如,您可能希望构建一个金融交易应用程序,该应用程序可以根据传入的数据进行实时风险计算和复杂的衍生品定价。在自定义模块中构建此功能可以将数据库从简单的键值存储转换为强大的计算引擎,而无需大量的额外数据组件。
因此,像Redis这样的内存数据存储可以成为开发人员工具包中构建高性能、可扩展应用程序的重要组成部分。由于Redis有如此多的潜在用途,因此更改到另一个平台——即使是基于完全相同代码的平台——也可能令人担忧。
对基础设施进行任何更改都可能是一项挑战。但是,对于许多开发人员而言,能够掌控并以最适合其需求的方式使用软件至关重要,且是不可谈判的。对于其他人来说,与自行提供支持相比,迁移成本太高。对于那些过去曾受困于锁定问题的其他人来说,由于许可证变更而受制于任何技术提供商并非他们想再次经历的事情。因此,有效规划您的迁移至关重要。
在启动迁移之前,请对您当前的 Redis 实现进行全面评估。这应该告诉您您的应用程序当前使用 Redis 的所有方式、它们的配置方式以及这些实例的位置。这可能会暴露出一些意外情况,例如运行着较旧且过时的版本的应用程序,而您无论如何都必须对其进行修补。我们多久才能看到 Redis 在数据中心中默默工作而没有任何运维关注?即使某些东西非常可靠,但这并不意味着它应该被忽视,或者您应该始终坚持您当前的方法。
但是,此过程不仅仅是在纸上制定迁移策略。它还可以提供一个机会,在整个项目中识别和实施重大的效率和性能改进。在此过程中,分析应用程序的延迟、操作吞吐量以及一段时间内事务量的任何模式。基于此历史视图,您还可以考虑您预计在应用程序或服务上看到的任何未来需求级别,然后相应地进行规划。
您还可以评估 Redis 实例在整个应用程序中的关键程度以及您的整体性能如何依赖于该组件。如果没有该组件处于活动状态,您的网站延迟是否会飙升?这代表了一个潜在的单点故障,因此您还可以检查是否满足您的正常运行时间和可用性需求。
任何迁移路径都将很大程度上取决于您当前部署的内容以及部署位置。通常,您的主要考虑因素是最大限度地减少应用程序和新的 Valkey 数据存储之间的网络延迟,因为不必要的延迟会严重影响性能。如果您在那里或在云中部署了 Redis,则 Valkey 可以作为本地应用程序的一部分进行部署。简而言之,将新的 Valkey 实例部署在您的应用程序所在位置。
对于使用 Redis 的自管理云部署,您可以采取多种选择。虽然 Valkey 非常新,但支持 Valkey 的多种云服务正在涌现,这表明这是一个健康的生态系统。您可能希望考虑在您自己的数据中心运行您自己的 Valkey 实例,使用托管服务提供商代表您处理它,或者等待“Valkey 作为服务”选项进入市场。参与 Valkey 社区的多数提供商都是云提供商,但也有一些(例如我工作的公司,Percona)专注于本地部署。
即使某些东西非常可靠,但这并不意味着它应该被忽视,或者您应该始终坚持您当前的方法。
对于使用自管理私有云服务的公司,获取有关运行 Valkey 以及迁移规划帮助的建议可以帮助您节省时间并降低任何项目超支的风险。无论您当前在何处托管您的系统,获得专家建议都将大有裨益,特别是如果您打算继续使用您自己的数据中心或自管理环境。
无论您在何处运行您的 IT——或者如果您正在考虑更换提供商——成功的迁移都需要规划,并预测潜在的挑战,包括需要同时升级。成功迁移的黄金法则是尽可能隔离更改,以便您可以逐步执行并回滚任何错误或出现意外问题时。
同样,在开始迁移之前对任何机器或映像进行完整备份可以更容易地恢复,因此减轻压力并确保您可以撤消您的操作。对于某些系统更新,回滚的能力是有限的,因此如果某些事情没有按您预期的那样进行,备份是您的最佳选择。
Valkey 8 具有重大改进,可以免费带来额外的性能、效率和稳定性改进。
迁移过程中最大的问题之一在于最终目标。对于 Redis 和 Valkey,目前目标选择仅限于 Valkey 7 和 8 版本。Valkey 8 具有重大改进,可以免费带来额外的性能、效率和稳定性提升,因此尽可能选择它是有意义的。但是,您可能有多个要迁移的 Redis 版本。当前 Redis 版本和目标 Valkey 版本之间可能存在一些重大差异。
许多应用程序仍在运行 Redis 6,而 Valkey 7 和 8 已经取得了实质性进展,因此您可能需要先更新 Redis 安装,然后再迁移到 Valkey。Redis 的模块化结构意味着您的应用程序可能依赖于某些特定组件或集成,因此您应该测试这些模块是否与 Valkey 兼容。如果 Valkey 目前不支持它们,那么请查看参与维护它们的社区,以及您可能在哪里提供贡献或支持。
大多数 Redis 客户端库都可以与 Valkey 无缝协作,但在迁移之前请进行彻底的测试以确认兼容性。根据您的具体实现,可能需要进行一些小的配置调整。
除了规划迁移的一般方法外,还有一些针对 Valkey 迁移的具体事项需要注意。连接字符串更新(连接应用程序组件到数据库并支持事务)是最大的挑战之一。当您实施新的数据库实例时,您必须修改应用程序配置以指向这些新的 Valkey 端点。
除此之外,您可能需要更新身份验证流程,以便您的应用程序可以管理用户访问。在此过程中,您还可以进行一些清理工作,删除不再需要访问系统的旧帐户。
选择的迁移策略将高度取决于停机时间和应用程序需求以及 Redis 的部署方式。对于更关键的数据库实例,您可能部署了一个集群以实现高可用性,并在服务器故障或实例宕机时保持系统运行。您可能希望在新 Valkey 实例中复制相同的方案。但是,您可能能够在无需大量计划停机时间的情况下执行迁移。
例如,假设您在应用程序的其余部分和当前 Redis 实例之间实现了像 Envoy 这样的代理。在这种情况下,您无需对系统进行任何连接字符串更新,因为代理会为您处理这些连接。
您还可以使用流量镜像来复制写入新 Valkey 集群的操作,以便在迁移期间避免用户额外停机。实施新集群后,您可以将这些事务应用到新的生产系统中,并更快地获得最新的实例。
Valkey 的形成是因为社区希望有一个专注于他们需求并坚持开源理念的项目。与任何主要的数据库实例一样,迁移到 Valkey 也是一个重要的项目,因此提前思考至关重要。通过仔细规划迁移,您可以确保最大限度地减少中断,同时增强基础设施以适应未来的增长。
Percona 将参加 State of Open Con 大会,该大会涵盖开源软件、开源硬件、金融和银行领域的开源以及移动/电信。活动将于 2 月 4 日至 5 日在伦敦举行。The New Stack 的 Alex Williams 也将主持关于开源未来主题的环节。更多信息,请访问 stateofopencon.com.