博客 / 用户案例

从批处理到流式处理:AMP 的数据之旅,从开源到 ClickHouse Cloud

author avatar
Chris Lawrence
2025 年 1 月 20 日 - 7 分钟阅读


AMP 是一个电商增长平台,为 Shopify 商家提供分析和优化店铺绩效所需的工具。AMP 源于让在线零售商生活更轻松的愿望,这些零售商通常管理着数十个互不关联的应用程序。AMP 为 Shopify 上的一些最大品牌提供支持,包括 Ridge、True Classic、Hydroflask 等。

AMP 的旗舰分析产品 Lifetimely 可以深入了解利润与亏损 (P&L)、客户获取成本 (CAC)、生命周期价值 (LTV) 和客户行为,帮助商家快速做出数据驱动的决策并提高盈利能力。但随着 AMP 用户群和平台的扩展,他们的数据基础设施的需求也随之增加。日益增长的数据复杂性和体量使得提供商家所依赖的实时洞察变得困难,这促使 AMP 寻求更具可扩展性的长期解决方案。

AMP 高级软件工程师 Chris Lawrence 在 2024 年 8 月墨尔本 ClickHouse 聚会上发表了演讲。他分享了公司如何通过实施 ClickHouse Cloud 将其数据管道从批处理转变为实时流式处理,从而提高了其分析平台的速度和可靠性。

对长期解决方案的需求

Chris 说,在实施 ClickHouse 之前,AMP 依赖于“一台小型 Postgres 服务器”。它在早期满足了他们的数据需求,但随着 AMP 平台发展到支持数千家 Shopify 店铺,他们数据的复杂性和规模也随之增长。

Chris 说:“当您达到一定规模时,性能开始变慢,尤其是对于非常实时和动态的报告而言。” “这阻碍了我们进行大量预处理,而我们需要这些预处理来交付商家真正重视的快速、详细的报告。”

为了解决这些问题,AMP 最初添加了 ClickHouse 作为 Postgres 的补充。“我们只是为了查询而将整个 Postgres 实例克隆到 ClickHouse 中,”Chris 说,他称之为“非常棒的数据管道”。这种混合设置使 AMP 能够处理更复杂的查询并减轻 Postgres 的压力,但这并不是一个完美的解决方案。

在批处理工作流程中,Shopify 店铺的数据每隔几个小时被提取到 Postgres 中,并且每天两次,这些数据同步到 ClickHouse 以进行查询。Chris 解释说,这个过程“通常非常缓慢”,在两个系统之间传输和处理大量数据需要几个小时。

diagram_1.png

数据新鲜度成为一个主要问题,尤其是 AMP 的商家期望获得实时洞察。“以客户为中心是我们的核心价值观之一;我们真的希望为客户提供良好的体验,”Chris 说。“而糟糕的体验是,由于从 Postgres 同步数据、通过网络发送数据并将其导入 ClickHouse 需要大量时间,因此您的数据通常会过时 30 个小时。”

Chris 补充说,这个过程也“非常脆弱”——即使在同步过程中出现一次故障也可能导致系统崩溃并需要重新启动。“我们经常会遇到数据过时 48 到 72 小时的情况,”Chris 说。在 Shopify 店铺中安装 AMP 的新客户将不得不等待两到三天才能看到任何报告。

资源使用是另一个挑战。同步过程消耗了大量电力,需要一台具有超过 1.2 TB RAM 的服务器来管理数据负载。这种资源压力,加上持续存在的数据新鲜度问题,促使 AMP 团队寻求更具可扩展性的长期数据解决方案,以支持他们的持续增长。

迁移到 ClickHouse Cloud

AMP 迁移到 ClickHouse Cloud 的主要目标有两个:保持数据的及时性和灵活性,以便客户使用,并构建可扩展的实时数据架构。

对于商家而言,AMP 希望减少报告延迟,并确保数据保持准确。旧系统需要在出现任何不一致时从 Shopify 重新完整提取数据——Chris 将此过程描述为缓慢、手动且令人沮丧地不透明。借助 ClickHouse Cloud 的实时设置,AMP 可以提供有关库存、客户行为和绩效的洞察,使商家能够快速而自信地采取行动。

在技术和“更有趣”的方面,正如 Chris 所说,AMP 旨在通过实时流式处理来加快数据提取速度,实现事件重放和数据备份,并自动化基础设施管理。借助 Shopify 的 Webhook 和 AWS 的事件流功能,他们着手构建一个灵活、可重现的数据环境,并通过基础设施即代码 (IaC) 进行管理。

diagram_2.png

AMP 向 ClickHouse Cloud 的过渡涉及一些巧妙的问题解决和一些关键的 ClickHouse 功能。他们首先使用 Shopify Webhook 接收实时更新,通过 Amazon EventBridge 路由这些更新,并使用 AWS Lambda 进行处理。这种持续的流式处理设置使他们能够摆脱过时的批处理。

对于实时数据更新,AMP 使用了 ClickHouse 的 ReplacingMergeTree 表引擎,这使他们能够直接插入更新,并让 ClickHouse 管理去重——这对于快速、准确的报告很有帮助。他们确实遇到了一个小问题:以较小的批次插入数据会导致瓶颈,因为 ClickHouse 在至少 1,000 行的较大批次中表现最佳。

amp_1.png
他们通过添加 Amazon Kinesis Data Firehose 解决了这个问题,它可以将较小的更新缓冲到 S3 上的 JSON 文件中,从而减少了在将数据发送到 ClickHouse 之前效率低下的情况。他们还添加了[异步插入](https://clickhouse.ac.cn/docs/en/optimize/asynchronous-inserts)——Chris 称之为“非常棒、非常优雅的解决方案”——它在将数据写入磁盘之前将其临时存储在内存中。这减轻了频繁小插入的负载,帮助 AMP 保持效率并保持数据流畅流动。
amp2.png
最后,借助 ClickHouse Cloud Terraform 提供商,他们使基础设施管理变得更加顺畅。Chris 说,借助 IaC,他们可以在“我们所有的环境(开发、测试、暂存、生产,应有尽有)中,只需单击一下”即可创建可重现的实例。借助 ClickHouse Cloud 的监控、自动扩展和自动更新,AMP 现在可以灵活地支持他们的增长,而无需通常的基础设施难题。

面向未来的数据基础

迁移到 Clickhouse Cloud 帮助 AMP 重新定义了其数据平台,并为 Shopify 商家提供了保持竞争力所需的实时洞察。通过从容易出现延迟的批处理设置转向持续的流式处理架构,AMP 可以提供及时的分析,帮助商家做出快速、自信、数据驱动的决策。

对于 Chris 和 AMP 的工程团队而言,此举简化了运营,并为增长创建了强大且可扩展的基础。新设置提供了更直接的基础设施管理,同时保留了灵活性,使 AMP 能够根据需要启动实例并适应波动的数据负载。自动化的监控、更新和扩展意味着团队可以将精力集中在创新而不是维护上。

借助 ClickHouse Cloud,AMP 构建了一个面向未来的数据基础,使其能够信守对客户至上的承诺,为商家提供在当今电子商务环境中蓬勃发展所需的速度、准确性和适应性。

要了解有关 ClickHouse 及其如何提高公司数据基础设施的速度和可扩展性的更多信息,请免费试用 ClickHouse Cloud 30 天

分享此文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云产品信息!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。