架构
探索RDI的主要组件
概述
RDI 实现了一种变更数据捕获 (CDC) 模式,该模式跟踪非 Redis 源 数据库中的数据更改,并对 Redis 目标 数据库进行相应的更改。您可以将目标用作缓存以提高性能,因为它通常比源处理读取查询要快得多。
要使用RDI,您需要定义一个数据集,该数据集指定您希望从源中捕获哪些数据项以及您希望在目标中如何表示它们。例如,如果源是一个关系数据库,那么您指定要捕获哪些表列,但您不需要将它们存储在目标中的等效表结构中。这意味着您可以选择最适合您的应用程序的目标表示形式。为了从源表示形式转换为目标表示形式,RDI在捕获数据后对数据应用转换。
RDI 使用一个数据管道在源和目标之间同步数据集,该管道按顺序实现多个处理步骤:
-
一个CDC收集器捕获源数据库的更改。RDI 目前使用一个名为 Debezium的开源收集器来完成这一步。
-
收集器使用Redis流在RDI数据库中记录捕获的更改。
-
一个流处理器从流中读取数据并应用您定义的任何转换(如果您不需要任何自定义转换,则使用默认值)。然后它将数据写入目标数据库,供您的应用程序使用。
请注意,RDI控制进程在Redis企业集群之外的专用虚拟机(VMs)上运行,目标数据库保存在该集群中。然而,RDI将其状态和配置数据以及变更数据流保存在与目标相同的Redis数据库中。下图展示了数据从源到目标的管道步骤和数据路径:

当你第一次启动RDI时,目标数据库是空的,因此源数据库中的所有数据基本上都是“变更”数据。RDI在一个称为初始缓存加载的阶段收集这些数据,这个过程可能需要几分钟或几小时才能完成,具体取决于源数据的大小。一旦初始缓存加载完成,目标数据库中就会有一个快照数据集,当从源数据库中捕获新数据时,这个数据集会逐渐变化。此时,RDI会自动进入第二个阶段,称为变更流,在这个阶段,数据的变化会在发生时被捕获。通常在捕获后的几秒钟内,变更就会被添加到目标数据库中。
背压机制
有时,数据记录可能会比RDI处理它们的速度更快地被添加到流中。如果目标变慢或断开连接,或者源快速生成大量变更数据,就可能发生这种情况。如果这种情况持续下去,流最终将占用所有可用内存。当RDI检测到这种情况时,它会应用背压机制来减慢或停止传入数据的流动。变更数据会在源处保持,直到RDI清除积压并有足够的空闲内存来恢复流传输。
支持的来源
RDI 支持使用 Debezium Server 连接器的以下数据库源:
数据库 | 版本 | AWS RDS 版本 | GCP SQL 版本 |
---|---|---|---|
Oracle | 12c, 19c, 21c | 19c, 21c | - |
MariaDB | 10.5, 11.4.3 | 10.4 到 10.11, 11.4.3 | - |
MySQL | 5.7, 8.0.x, 8.2 | 8.0.x | 8.0 |
PostgreSQL | 10, 11, 12, 13, 14, 15, 16 | 11, 12, 13, 14, 15, 16 | 15 |
SQL Server | 2017, 2019, 2022 | 2016, 2017, 2019, 2022 | 2019 |
AlloyDB for PostgreSQL | 14.2, 15.7 | - | 14.2, 15.7 |
AWS Aurora/PostgreSQL | 15 | 15 | - |
RDI 是如何部署的
RDI 设计有两个平面来提供服务。 控制平面包含保持 RDI 活跃的进程。 它包括:
- 一个操作员进程,负责调度CDC收集器和流处理器,以实现管道生命周期的两个阶段(初始缓存加载和变更流处理)
- 一个Prometheus端点,用于提供关于RDI的指标
- 一个用于控制虚拟机的REST API。
管理平面提供了让你与控制平面交互的工具。使用CLI工具来安装和管理RDI,以及部署和管理管道。使用管道编辑器(包含在Redis Insight中)来设计或编辑管道。下图展示了控制平面和管理平面的组件及其之间的连接:

以下部分描述了可用于部署RDI的虚拟机配置。
在您自己的虚拟机上使用RDI
对于此部署,您必须提供两台虚拟机。收集器和流处理器在一台虚拟机上运行,而另一台作为备用以提供高可用性。操作员在两台虚拟机上运行,并使用算法决定哪一台是活动的(“领导者”)。活动虚拟机和备用虚拟机都需要访问RDI用于加密网络流量的认证密钥。下图显示了此配置:

有关更多信息,请参见在虚拟机上安装。
Kubernetes上的RDI
您可以使用RDI Helm chart在Kubernetes (K8s)上安装,包括Red Hat的OpenShift。这将创建:
- 一个名为
rdi
的 K8s namespace。 - Deployments 用于 RDI operator, metrics exporter, 和 API 服务器。
- 一个服务账户以及为RDI操作员提供的角色和角色绑定。
- 一个Configmap用于包含RDI Redis数据库详细信息的不同组件。
- Secrets 包含RDI Redis数据库凭据和TLS证书。
请参阅Install on Kubernetes以获取更多信息。
秘密和安全注意事项
RDI 使用 TLS 或 mTLS 对所有网络连接进行加密。连接的凭证保存为密钥,您可以选择如何将这些密钥提供给 RDI。请注意,RDI 将所有状态和配置数据存储在 Redis Enterprise 集群内,不会在您的 RDI 虚拟机或集群外的任何其他地方存储任何其他数据。