我们很高兴地宣布RedisGears 现已普遍上市,这是 Redis 中提供无限可编程性的无服务器引擎。开发人员可以使用RedisGears改善应用程序性能,实时处理数据,而架构师可以使用它来推动架构简化。
作为用于执行函数的动态框架,这些函数可实现 Redis 中的数据流,RedisGears 抽象了数据的分配和部署,以便使用 Redis 中的多模型加速数据处理。RedisGears 允许您在 Redis 中对所需的一切进行编程,将函数部署到每个环境,简化架构并降低部署成本,在您的数据所在之处运行无服务器引擎。
RedisGears 可用于各种用例
除了宣布 RedisGears 外,我们还发布了它的第一个秘方。一个“秘方”是一组函数(和它们可能具有的任何依赖项),这些函数共同解决高级问题或用例。我们的第一个秘方是rgsync。此功能还称为写后,它可以让您将 Redis 作为前端数据库,而 RedisGears 会保证将所有更改写入现有数据库或数据仓库系统。
为了帮助您了解 RedisGears 的强大之处,我们将从解释 RedisGears 架构及其优势开始。然后,我们将讨论这些优势如何应用于写后,并通过我们创建的演示应用程序展示其行为。
RedisGears 的核心是一个通过可编程接口执行用户提供的流或函数的引擎。引擎可以通过临时 MapReduce 方式执行函数,或由不同事件触发以进行事件驱动的处理。函数可以读取和写入存储在 Redis 中的数据,内置协调器有助于在一个集群中处理分布式数据。
总体而言,此图表描绘了 RedisGears 的组件
RedisGears 有三个主要组件
在这三个核心组件的基础上,RedisGears 还包含一个快速底层 C-API 以便于编程。如今,您可以通过 Python 集成此 C-API,其他语言也已在筹备中。
通过尽可能贴近您的数据来运行您的函数,RedisGears 将执行时间和分片之间的数据流降至最低。通过将您的无服务器引擎置于内存中(这里是您的 Redis 数据驻留的位置),它消除了获取数据所需的时间消耗型行程,加快了事件和流的处理。
RedisGears 允许您“一劳永逸地编写,随时随地部署”。您可以为独立的 Redis 数据库编写您的函数,并将其部署到生产环境,而无需调整脚本以适应群集数据库。
将实时数据与无服务器引擎相结合,您可以处理跨数据结构和数据模型的数据,而无需多个客户端和数据库连接器的开销。这简化了您的架构并降低了部署成本。
应对用户/请求数量突然激增的能力是现代公司和组织必须考虑的事情。例如,黑色星期五和网络星期一的流量可能会倍增于普通日期的流量。
未能规划此类峰值可能会导致性能不佳、意外停机,最终造成收入损失。另一方面,针对这些峰值过度扩展您的解决方案也可能很昂贵。关键是要找到一种经济高效的解决方案来满足您的需求和要求。
传统的关系型/基于磁盘的数据库通常无法应对负载的显着增加。这就是 RedisGears 发挥作用的地方。RedisGears 的后台写入功能依靠 Redis 来处理繁重任务,异步管理更新,减轻后端数据库的负载并减少峰值。RedisGears 还确保所有更改都写入您的现有数据库或数据仓库系统,从而保护您的应用程序免受数据库故障的影响,并将您的应用程序的性能提升到 Redis 的速度。由于现在只须与单个前端数据库(Redis)通信,所以这样大幅简化了您的应用程序逻辑。后台写入功能最初支持 Oracle、MySQL、SQL、SQLite、Snowflake 和 Cassandra。
下图显示了 RedisGears 的写入后台功能的架构:
其操作如下
这两个函数共同组成了我们所说的 RedisGears 的“配方”。(请注意,写入后台的配方已一同捆绑在 rgsync(RedisGears 同步)包中,其中还包含其他一些数据库同步配方。)
如上所述,步骤三仅在事件成功添加到流中后才会发生。这意味着,如果在客户端获得对写操作确认之后出现问题,则 Redis 复制、自动故障转移和数据持久性机制可确保不会丢失更新事件。默认情况下,写入后台 RedisGears 功能对写入提供 至少一次交付属性,这意味着数据将写入目标一次,但在发生故障时可能会写入多次。如果需要,还可以设置 RedisGears 函数,以提供 正好一次的交付语义,确保对目标数据库执行任何给定的写入操作仅一次。
通过写入后台改进应用程序性能
为了展示写入后台的好处,我们开发了一个 演示应用程序,我们已向其中添加了终结点以支持两种场景:
在此示例中,我们使用 MySQL 作为后端数据库,以便于测试和复现。
为了模拟应用中的峰值,我们使用 k6 创建了一个尖峰测试,其中我们模拟了一个从 1 个到 48 个并发用户变化的短暂集中爆发。
为了检查整体系统如何处理尖峰,我们追踪了应用上达到的 HTTP 负载和延迟,以及基础数据库系统性能。下图展示了这两种情况 — 左面的区间展示了仅 MySQL 解决方案的结果,而右面区间展示了具有 RedisGears 的后置写场景的结果。
该图表显示了一些重要发现
我们对 RedisGears 和后置写感到非常兴奋。我们相信后置写用例仅仅是 RedisGears 能解决的无数问题中的一小部分。
我们希望这篇博文能够鼓励您尝试 RedisGears。请查看 RedisGears.io,其中包含许多关于如何开始的示例和提示。您可以在此处找到更多精美的演示:
新版本的 RedisInsight 即将发布,它将包含对 RedisGears 执行函数和查看 RedisGears 中已注册函数的支持。我们在此为您提供一个简短的 GIF,让您了解可以期待的内容
编码愉快!