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

首次启动 RDI 时,目标数据库为空,因此所有 的 数据本质上是 “更改” 数据。 RDI 在一个称为初始缓存加载的阶段收集这些数据。 这可能需要几分钟或几小时才能完成,具体取决于大小 的源数据。初始缓存加载完成后, 目标中有一个快照数据集,它将逐渐 更改从源捕获新数据的时间。此时, RDI 会自动进入第二个阶段,称为更改流式处理,其中 数据中的更改是在发生时捕获的。变化通常是 在捕获后的几秒钟内添加到目标中。
背压机制
有时,数据记录添加到流中的速度比 RDI 快 处理它们。如果目标速度变慢或断开连接,则可能会发生这种情况 或者仅仅是源快速生成大量更改数据。 如果这种情况继续下去,那么流最终将占据所有 可用内存。当 RDI 检测到这种情况时,它会应用背压机制来减慢或停止传入数据流。 更改数据将保留在源中,直到 RDI 清除积压工作,并且具有 有足够的可用内存来恢复流式传输。
支持的源
RDI 使用 Debezium Server 连接器支持以下数据库源:
数据库 | 版本 | AWS RDS 版本 | GCP SQL 版本 |
---|---|---|---|
神谕 | 12c、19c、21c | 19c、21c | - |
MariaDB的 | 10.5, 11.4.3 | 10.4 到 10.11、11.4.3 | - |
MySQL (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 服务器 | 2017, 2019, 2022 | 2016, 2017, 2019, 2022 | 2019 |
AlloyDB PostgreSQL 版 | 14.2, 15.7 | - | 14.2, 15.7 |
AWS Aurora/PostgreSQL | 15 | 15 | - |
RDI 的部署方式
RDI 设计有两个提供其服务的平面。 控制平面包含使 RDI 保持活动状态的进程。 它包括:
- 调度 CDC 收集器和 stream processor 实现管道的两个阶段 生命周期(初始缓存加载和更改流式处理)
- 一个 Prometheus 终端节点,用于提供有关 RDI 的指标
- 用于控制 VM 的 REST API。
管理平面提供了让您能够交互的工具 替换为 control plane。使用 CLI 工具安装和管理 RDI 以及部署和管理管道。使用管道编辑器 (包含在 Redis Insight 中)来设计或编辑管道。这 下图显示了 Control and Management 的组件 planes 和它们之间的连接:

以下部分介绍了可用于 部署 RDI。
您自己的 VM 上的 RDI
对于此部署,您必须提供两个 VM。这 收集器和流处理器在一个 VM 上处于活动状态,而另一个 VM 是备用 VM 以提供高可用性。运算符在两个 VM 上运行,并使用算法来确定哪个是活动 VM(“领导者”)。 活动 VM 和备用 VM 需要访问 RDI 用于加密网络的身份验证密钥 交通。下图显示了此配置:

有关详细信息,请参阅在 VM 上安装。
Kubernetes 上的 RDI
您可以使用 RDI Helm Chart 进行安装 在 Kubernetes (K8s) 上,包括 Red Hat OpenShift。这将创建:
- 一个名为
rdi
. - RDI 运算符、指标导出器和 API 服务器的部署。
- 一个服务账户以及 RDI作员的角色和角色绑定。
- 具有 RDI Redis 数据库详细信息的不同组件的 Configmap。
- 具有 RDI Redis 数据库凭证和 TLS 证书的密钥。
有关更多信息,请参阅在 Kubernetes 上安装。
机密和安全注意事项
RDI 使用 TLS 或 mTLS 加密所有网络连接。 连接的凭证保存为 Secret 和您 可以选择如何向 RDI 提供这些密钥。请注意,RDI 存储 Redis Enterprise 集群内的所有状态和配置数据 并且不会在 RDI VM 或其他任何位置存储任何其他数据 群集外。