Dual Run 架构

本页面介绍了 Dual Run 的主要组件。 虽然架构的某些部分在批量比较和在线比较之间共享,但其他部分特定于任一工作负载。

Dual Run 组件

Dual Run 组件在 Google Kubernetes Engine (GKE) 集群中以容器形式运行。 Dual Run 还依赖于其他 Google Cloud 产品, 例如 BigQuery、Cloud Storage 以及其他用于 批量比较和在线比较的专用组件。

在线和批量工作负载共享的 Dual Run 集群组件如下:

  • Config Manager:界面和信息中心。
  • Env Checker:安装验证引擎。

Config Manager

Config Manager 是 Dual Run 应用的前端。 您可以使用此组件来管理用户权限、通过端点配置在线工作负载以及修改信息中心。您可以使用 Identity and Access Management 系统设置用户身份验证。

Config Manager 还提供信息中心环境,您可以在其中查看比较结果。借助信息中心,您可以根据应用的过滤条件查看比较结果的摘要,还可以查看每条记录的结果详细信息。

该信息中心基于 Apache Superset,这是一种用于数据可视化和数据探索的开源软件。它还允许您创建自定义报告和查询。

Env Checker

Env Checker 是 Dual Run 组件,用于验证 Dual Run 的安装和部署是否已成功完成。 它会检查所有必要的 Dual Run 组件是否已正确配置并正在运行,否则会报告任何错误或配置错误。

批量比较的架构

下图展示了 Dual Run 批量比较的架构,如以下部分所述。

双重运行架构,可在大型机文件和 Google Cloud 文件之间进行文件比较。

文件比较

借助文件比较,您可以比较 Dual Run 设置的预期文件输出和实际文件输出。执行比较时,您可以设置容差级别,将结果标记为等效。

文件比较使用 Managed Service for Apache Spark(在 Google Cloud上运行的全代管式 Apache Spark 集群)执行比较。您可以根据计划比较的数据大小和基础架构要求,选择两种不同的方法:

  • 在 Managed Service for Apache Spark 上运行的托管式无服务器 Spark 环境,该环境是在 Dual Run 部署期间创建的。它使用固定配置,可让您比较最大几个 GB 的文件。 这是默认方法。
  • 在 Dual Run 部署后创建和配置的 Managed Service for Apache Spark 上的 Spark 集群。在以下情况下,此方法非常有用:
    • 您计划使用自定义虚拟机或磁盘配置。
    • 您需要比较大于几个 GB 的文件。
    • 您想要同时运行多个比较作业。

在线比较的架构

下图展示了 Dual Run 在线比较的架构,如以下部分所述。

用于在线比较大型机文件和 Google Cloud 文件的双重运行架构。

拦截器

拦截器充当主系统(大型机应用)的高度可靠且高性能的代理。它会监听应用流量,并以极低的延迟将请求转发到主系统。它会复制所有请求和响应,以供后续双重化。您可以将拦截器部署在任何基于 Kubernetes 的环境中,包括 Dual Run 项目或本地环境。

即使与 Google Cloud 服务的连接失败, 拦截器也会运行,从而确保主系统的可用性达到最高水平。

Dual Run 支持 HTTP、TN3270 和 MQ 消息的拦截器。

双重化器

双重化器会将捕获的在线事务重播到经过现代化改造的辅助系统。它会从 Pub/Sub 中的双重化队列使用记录的事务,向辅助系统发送请求并检索响应。

主响应和辅助响应使用与批量文件比较相同的底层比较引擎进行比较。请求、响应和比较结果存储在 Cloud Storage 中,而比较结果则流式传输到 BigQuery。配置文件由 Config Manager 管理,并从 Cloud Storage 读取。

会话处理程序

会话处理程序负责维护与辅助系统的活跃会话。对于有状态的通信协议(例如 TN3270),会话处理程序会为每个客户端连接维护一个打开的 TCP 套接字。对于双重化到辅助系统的每个请求,双重化器都会将双重化请求发送到会话处理程序。然后,会话处理程序会使用打开的套接字将其发送到辅助系统,接收辅助响应,并将其发送回双重化器进行处理。

Google Cloud 依赖项

Dual Run 依赖于以下 Google Cloud 产品来运行:

  • Google Kubernetes Engine: Dual Run 使用 GKE 在 pod 中运行 其微服务。
  • Cloud Storage: Dual Run 将环境的配置文件和您提供的比较工件存储在 Cloud Storage 存储分区中。
  • Artifact Registry: Dual Run 将容器映像存储在注册表中,以供 GKE 使用。
  • BigQuery: Dual Run 将批量事务和在线事务的比较输出结果存储在 BigQuery 中。
  • Pub/Sub: Dual Run 使用 Pub/Sub 作为内部消息传递系统,以在其不同的 pod 之间传递配置更改。
  • Cloud SQL: Dual Run 会创建一个 Cloud SQL 数据库实例,以确保与未来的更新兼容。

Dual Run 批量比较依赖于以下其他产品:

  • Managed Service for Apache Spark: Dual Run 使用 Managed Service for Apache Spark 中的无服务器 Spark 集群来运行文件比较。
  • 工作流和 Cloud Run functions: Dual Run 使用 Workflows 来管理执行文件比较作业的 Cloud Run functions。
  • Identity and Access Management: Dual Run 依赖于 Identity and Access Management 进行身份验证和访问权限管理,这让您可以使用 Google 或 SAML 身份提供方来验证用户角色并为其授权。

Dual Run 在线比较依赖于以下其他产品:

  • Secret Manager: Dual Run 使用 Secret Manager 来存储 Secret,例如您为 Dual Run 部署的队列管理器的凭据。
  • Cloud Monitoring: Dual Run 使用 Cloud Monitoring 从 Dual Run 组件和 Google Cloud 资源收集和监控指标、事件和日志。
  • Cloud Trace: Dual Run 使用 Cloud Trace 来提供增强的监控和调试功能。

后续步骤

详细了解 Dual Run 文件比较