博客 / 用户案例

洞察全局:Shopee 使用 ClickHouse 实现分布式追踪之旅

author avatar
ClickHouse 团队
2024 年 6 月 17 日 - 10 分钟阅读

“采用 ClickHouse 增强了我们的数据分析能力,高效且经济地支持了内部团队不断增长的需求。”

Frank Chen,Shopee OLAP 专家工程师

 

作为东南亚领先的电子商务平台,Shopee 每天处理数百万笔交易和海量数据。为了确保平稳运营和一流的用户体验,了解系统性能并快速诊断问题至关重要。

四年前,Shopee 工程师 Frank Chen 和他的团队认识到其快速增长的平台带来的挑战。他们早些时候引入了 ClickHouse 作为 OLAP 数据库管理系统。在它被广泛采用以满足各种业务需求后,他们决定使用 ClickHouse 来实现一种称为分布式追踪的技术。从那时起,它已支持数百个旨在确保高性能和可靠性的内部项目,从而改变了 Shopee 管理数据和系统可观测性的方法。

“采用 ClickHouse 增强了我们的数据分析能力,高效且经济地支持了内部团队不断增长的需求,”Frank 说。

获得清晰度

在复杂的微服务架构中高效管理数据绝非易事。分布式追踪是一种通过监控和追踪请求在系统中各个服务之间传递的过程来提供可见性的技术。这种可见性对于快速识别和解决性能瓶颈或错误,并确保平稳运营至关重要。

对于 Shopee 而言,分布式追踪提供了数据如何在他们的电子商务平台上流动的深入视图。这些实时洞察使数百名内部用户能够精确定位延迟或故障发生的位置,做出明智的决策,并实施修复措施,从而提高平台的整体性能和可靠性。

日益增长的挑战

2020 年,Shopee 快速发展,部分原因是 COVID-19 大流行。随着每日交易量的激增,平台工程师面临着越来越多的关于延迟、故障和响应不一致的用户查询——如果不加以解决,这些问题可能会严重破坏用户体验和运营效率。

数据工程团队认识到,Shopee 现有的数据管理解决方案不足以应对他们面临的挑战的规模和复杂性。了解根本原因需要详细的诊断,能够有效地管理海量数据和异步流程。他们决定开发更强大、可扩展的解决方案,以维护和提高他们的服务质量——这种解决方案可以全面深入地了解系统性能,并帮助 Shopee 工程师更有效地管理数据。

适合这项工作的工具

在寻找合适的解决方案时,Frank 和他的团队评估了几个数据库管理系统。他们之前依赖过 Druid、Hive 和 Presto 等数据库引擎;但是,虽然这些系统在某些领域具有优势,但它们在支持分布式追踪的细微需求方面存在特定的局限性和不足。

在引入 ClickHouse 作为 OLAP DBMS 并体验其优势后,他们决定进一步探索其潜力。广泛的测试和比较表明,ClickHouse 在三个关键领域优于 Elasticsearch 等其他解决方案:性能、兼容性和大规模运营的成本效益。

“ClickHouse 非常快,并且擅长处理高基数计算,提供快速的查询响应,”Frank 说。“与 Elasticsearch 不同,ClickHouse 支持 MySQL 兼容的 SQL 和 JDBC,降低了熟悉这些数据库的用户的学习曲线。并且它具有较低的硬件要求,优化了内存和磁盘消耗。”

ClickHouse 的开源性质也发挥了作用。它不仅符合 Shopee 的工程理念,而且还允许他们的团队修改和改进数据库以适应他们的特定需求。这种灵活性增强了 Shopee 工程师之间的社区意识和共同创新精神,帮助他们共同解决棘手的数据处理问题。

实施 ClickHouse

实施涉及 Shopee 基础设施的多个组件,包括开发几个完全托管的 ClickHouse 服务,以确保 Shopee 工程师高效的数据处理和系统可观测性

  • ClickHouse 管理器:简化资源分配和集群部署,确保每个服务都具有所需的计算能力和存储。

  • ClickHouse 网关:充当所有传入查询的入口点,有效地将它们路由到适当的集群以进行精确和快速的处理。

  • ClickHouse 控制台:提供基于 Web 的界面来管理查询,允许工程师执行即席查询并轻松管理数据。

  • ClickHouse 监控:为 ClickHouse 基础设施提供实时监控和警报,包括分布式追踪,以跟踪数据流并快速解决性能问题。

shopee-diagram.png

Shopee 的 ClickHouse 基础设施的核心是数十个 ClickHouse 集群,包括每种集群类型,每种集群类型都针对不同的数据处理需求进行了优化

  • K8S 上的 ClickHouse MPP SSD:在 Kubernetes 环境中使用 SSD 存储上的大规模并行处理 (MPP) 来快速处理高优先级任务。
  • K8S 上的 ClickHouse MPP HDD:对时间敏感性较低的任务使用 HDD 存储,在不牺牲功能的情况下利用成本效益。
  • K8S 上的 ClickHouse 计算和存储分离:使用 ClickHouse 的零拷贝功能分离计算和存储资源,以实现可扩展、灵活的资源分配。Shopee 使用 Apache Ozone 作为 S3 兼容的存储服务,利用其 HDFS 集成来实现高效的数据管理。
  • ClickHouse 冷热分离存储:通过将数据分类为频繁访问(热)和较少访问(冷)类型来优化存储,在提高性能的同时降低成本。

实施 ClickHouse 是一个细致的过程,需要仔细的计划和执行。最终,对于 Shopee 的数百名内部用户来说,这是一个强大的系统,它不仅解决了短期需求,而且为未来的可扩展性奠定了坚实的基础。

分布式追踪的实际应用

Shopee 对 ClickHouse 的实施产生了巨大的影响。借助分布式追踪,工程团队可以实时监控和优化数据流,系统运营的可见性使他们能够快速识别和解决瓶颈。

以下是他们的做法

  • 追踪和 Span 管理:Shopee 使用唯一标识符来有效地监控查询。每个追踪由多个 span 组成,span 代表查询中不同的工作单元。通过管理这些追踪和 span,工程团队可以跟踪每个请求的生命周期,识别延迟或错误发生的位置和原因。

  • 上下文传播:在不同的服务和线程之间维护追踪上下文至关重要。Shopee 确保追踪上下文在请求通过各种微服务时保持一致地传播。这种连续性可以全面了解整个请求路径,从而更容易查明问题。

  • 数据存储和处理:Shopee 使用 ClickHouse 的系统表和物化视图来实现高效的数据处理。系统表存储内部状态和日志,而物化视图提供预先计算的结果以加快查询处理速度。这种设置确保数据不仅得到高效存储,而且还可以随时用于实时分析。

“我们现在仅使用 ClickHouse 服务器上的 20 个 CPU 核心即可实现每秒高达 300 万行的摄取速度,实现了 1:8 的压缩比,而无需任何调整,”Frank 说。“对于存储在 SSD 上的数据,从一个 ClickHouse 实例上的超过 300 亿行的数据集中搜索特定追踪 ID 的时间仅需几秒钟。”

现实世界的成功案例

分布式追踪帮助 Shopee 识别和解决了各种挑战,从而显着提高了系统性能和可靠性。

1. 识别瓶颈

在一个实例中,Shopee 发现查询的响应时间为 118 秒。使用分布式追踪,他们确定大部分时间都花在了 ClickHouse 网关端而不是 ClickHouse 端。进一步调查显示,客户端向 ClickHouse 发送数据的速度非常慢。通过在客户端启用数据压缩,他们能够减小负载大小并加快响应时间。

2. 解决网络问题

Shopee 收到了关于查询响应不一致的反馈。在一个示例中,追踪日志帮助他们识别出请求由于 Kubernetes 中的 DNS 缓存问题而被错误路由。修复 DNS 缓存问题确保了查询被正确路由,从而维护了数据处理管道的完整性和准确性。

3. 理解分布式 Join

分布式 Join 的复杂性可能会给系统资源带来压力。分布式追踪清晰地可视化了这些 Join 的执行方式。通过调整设置,Shopee 的工程师能够简化此过程,减少子查询的发布并提高整体性能。这种优化使查询更简单、更高效。

4. 诊断查询超时

分布式追踪帮助 Shopee 团队找到并修复了 DDL 超时问题。例如,追踪日志显示,一台数据库服务器处理查询的时间比其他服务器长。进一步调查发现,延迟是由该特定节点上的阻塞 DDL 操作引起的。解决此瓶颈确保了更流畅、更可靠的数据操作。

5. 排除物化视图故障

用户有时报告说,他们的 INSERT 查询失败,错误似乎与目标表无关。Shopee 的分布式追踪日志显示,这些失败实际上是由物化视图中的问题引起的。通过诊断和修复这些问题,Shopee 使数据插入过程更加可靠和高效。

“ClickHouse 是一款超快且功能强大的分析数据库,可以降低用户的硬件成本,”Frank 说。“它用途广泛,适用于从欺诈检测和用户行为分析到日志和指标存储的各种应用。在许多情况下,它甚至可以替代 MySQL 等传统数据库或 Elasticsearch 等搜索引擎。”

为扩展而构建

随着 Shopee 继续扩展其电子商务平台,为东南亚近十几个国家和地区的数百万笔交易提供支持,分布式追踪使其工程师能够掌握性能问题并确保平稳运营。ClickHouse 一直是该公司数据管理和整体业务成功的关键,使 Shopee 能够在不影响质量的情况下处理更多交易。

“四年前,我们选择 ClickHouse 是因为它的速度和性能,”Frank 说。“从那时起,它已成为我们所有数据应用程序的支柱。”

Shopee 与 ClickHouse 的旅程才刚刚开始。凭借以 ClickHouse 开源数据库为核心的数据管理系统,Shopee 完全有能力继续扩展和创新。要了解有关 ClickHouse 如何提升贵公司数据能力的更多信息,请下载 ClickHouse 并加入我们不断壮大的开发者社区。

演示文稿的幻灯片可以在此处查看

分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云服务!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image