Google Cloud Platform 上大量地址验证的设计模式

目标

大批量地址验证教程引导您了解了可使用大批量地址验证的不同场景。在本教程中,我们将向您介绍 Google Cloud Platform 中用于运行高量地址验证的不同设计模式。

首先,我们将简要介绍如何在 Google Cloud Platform 中使用 Cloud Run、Compute Engine 或 Google Kubernetes Engine 运行一次性执行的高量地址验证。然后,我们将了解如何将此功能纳入数据流水线。

在本文结束时,您应该能够充分了解在 Google Cloud 环境中大规模运行地址验证的不同选项。

Google Cloud Platform 上的参考架构

本部分将深入探讨使用 Google Cloud Platform 进行高量地址验证的不同设计模式。通过在 Google Cloud Platform 上运行,您可以与现有流程和数据流水线集成。

在 Google Cloud Platform 上一次性运行高量地址验证

下图展示了如何在 Google Cloud Platform 上构建集成,这种集成更适合一次性操作或测试。

图片

在这种情况下,我们建议您将 CSV 文件上传到 Cloud Storage 存储分区。然后,您就可以从 Cloud Run 环境运行高量地址验证脚本了。不过,您可以在任何其他运行时环境(例如 Compute EngineGoogle Kubernetes Engine)中执行该脚本。输出 CSV 还可以上传到 Cloud Storage 存储分区。

作为 Google Cloud Platform 数据流水线运行

上一部分中显示的部署模式非常适合快速测试一次性使用的高量地址验证。不过,如果您需要在数据流水线中定期使用它,则可以更好地利用 Google Cloud Platform 原生功能来提高其稳健性。您可以进行的更改包括:

图片

  • 在这种情况下,您可以在 Cloud Storage 存储分区中转储 CSV 文件。
  • Dataflow 作业可以提取要处理的地址,然后将其缓存在 BigQuery 中。
  • Dataflow Python 库可以扩展为包含用于大批量地址验证的逻辑,以验证 Dataflow 作业中的地址。

将脚本作为长期重复性流程从数据流水线运行

另一种常见方法是在流式数据流水线中作为周期性流程对一批地址进行验证。您可能还在 BigQuery 数据存储区中拥有地址。在这种方法中,我们将了解如何构建周期性数据流水线(需要每天/每周/每月触发)

图片

  • 将初始 CSV 文件上传到 Cloud Storage 存储分区。
  • 使用 Memorystore 作为持久性数据存储来维护长时间运行的进程的中间状态。
  • 将最终地址缓存在 BigQuery 数据存储区中。
  • 设置 Cloud Scheduler 以定期运行脚本。

此架构具有以下优势:

  • 您可以使用 Cloud Scheduler 定期进行地址验证。您可能需要每月重新验证地址,或者每月/每季度验证所有新地址。此架构有助于解决此用例。
  • 如果客户数据位于 BigQuery 中,则可以直接在该位置缓存已验证的地址或验证标志。注意:“大量地址验证”一文详细介绍了可以缓存的内容以及缓存方式

  • 使用 Memorystore 可提高弹性并能够处理更多地址。此步骤会为整个处理流水线添加状态,这是处理非常大型地址数据集所必需的。您还可以在此处使用其他数据库技术,例如 Cloud SQL[https://cloud.google.com/sql] 或 Google Cloud Platform 提供的任何其他数据库变种。不过,我们认为 Memorystore 完美地平衡了可伸缩性和简单性需求,因此应该是首选。

总结

通过应用此处介绍的模式,您可以在 Google Cloud Platform 上针对不同的用例使用 Address Validation API,也可以在不同的用例中使用该 API。

我们编写了一个开源 Python 库,可帮助您开始使用上述用例。您可以通过计算机上的命令行调用它,也可以通过 Google Cloud Platform 或其他云服务提供商调用它。

如需详细了解如何使用该库,请参阅这篇文章

后续步骤

下载利用可靠的地址改进结账、配送和运营 白皮书,并观看利用地址验证功能改进结账、配送和运营 在线讲座。

建议的补充阅读材料:

贡献者

本文由 Google 维护。以下贡献者最初撰写了这篇文章。
主要作者:

Henrik Valve | 解决方案工程师
Thomas Anglaret | 解决方案工程师
Sarthak Ganguly | 解决方案工程师