DoubleCloud 即将停止服务。利用 ClickHouse 限时免费迁移服务进行迁移。立即联系我们 ->->

博客 / 用户案例

纵览全局:Shopee 如何利用 ClickHouse 实现分布式追踪

author avatar
ClickHouse 团队
2024年6月17日

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

Frank Chen,Shopee OLAP 工程师专家

 

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

四年前,Shopee 工程师 Frank Chen 和他的团队意识到了快速发展的平台带来的挑战。他们之前已将 ClickHouse 引入作为 OLAP 数据库管理系统。在 ClickHouse 被广泛采用以满足各种业务需求后,他们决定利用 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 Manager**:简化资源分配和集群部署,确保每个服务都拥有所需的计算能力和存储空间。

  • **ClickHouse Gateway**:充当所有传入查询的入口点,有效地将其路由到相应的集群以进行精确且快速的处理。

  • **ClickHouse Console**:提供基于 Web 的查询管理界面,允许工程师执行 ad hoc 查询并轻松管理数据。

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

shopee-diagram.png

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

  • **ClickHouse MPP SSD on K8S**:在 Kubernetes 环境中使用 SSD 存储上的大规模并行处理 (MPP) 来快速处理高优先级任务的数据。
  • **ClickHouse MPP HDD on K8S**:使用 HDD 存储来处理不太紧急的任务,在不牺牲功能的情况下利用成本效益。
  • **ClickHouse 计算和存储分离 on K8S**:使用 ClickHouse 的零拷贝功能分离计算和存储资源,实现可扩展且灵活的资源分配。Shopee 使用 Apache OZone 作为与 S3 兼容的存储服务,利用其 HDFS 集成来有效地管理数据。
  • **ClickHouse 冷热分离存储**:通过将数据分类为经常访问(热数据)和不太访问(冷数据)类型来优化存储,提高性能并降低成本。

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

分布式追踪的实际应用

Shopee 对 ClickHouse 的实施产生了巨大的影响。通过分布式追踪,工程团队可以实时监控和优化数据流,并能够查看系统操作,从而快速识别和解决瓶颈。

以下是他们如何做到的

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

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

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

“我们现在每秒可以摄取高达 300 万行数据,而 ClickHouse 服务器上只需要 20 个 CPU 内核,并且在没有任何调整的情况下实现了 1:8 的压缩比,”Frank 说。“对于存储在 SSD 上的数据,从一个 ClickHouse 实例上的超过 300 亿行数据集搜索特定追踪 ID 的时间只需几秒钟。”

现实世界的成功案例

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

1. 识别瓶颈

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

2. 解决网络问题

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

3. 理解分布式连接

分布式连接的复杂性可能会消耗系统资源。分布式追踪提供了关于这些连接如何执行的清晰可视化。通过调整设置,Shopee 的工程师能够简化此过程,发出更少的子查询并提高整体性能。这种优化使查询更简单、更高效。

4. 诊断查询超时

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

5. 排查物化视图问题

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

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

构建可扩展性

随着 Shopee 继续扩展其电子商务平台,为东南亚近十个国家和地区的数百万笔交易提供支持,分布式追踪允许其工程师掌握性能问题并确保运营顺畅。ClickHouse 对公司的数据管理和整体业务成功至关重要,使 Shopee 能够处理更多交易而不会影响质量。

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

Shopee 与 ClickHouse 的旅程仅仅是开始。凭借 ClickHouse 开源数据库作为其数据管理系统的核心,Shopee 具备了持续扩展和创新的良好条件。要了解有关 ClickHouse 如何提升贵公司数据能力的更多信息,请下载 ClickHouse并加入我们不断壮大的开发者社区。

演示文稿的幻灯片可以在这里查看

分享此文章

订阅我们的新闻

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