全局视野:Shopee 使用 ClickHouse 实现分布式追踪的历程
Meetup活动 ClickHouse Shanghai User Group第1届 Meetup火热报名中,详见文末海报!
作为东南亚领先的电子商务平台,Shopee 每天处理数百万笔交易和海量数据。为了确保运营顺畅并提供一流的用户体验,了解系统性能并快速诊断问题至关重要。 四年前,Shopee 工程师 Frank Chen 和他的团队意识到他们快速增长的平台所带来的挑战。他们早些时候引入了 ClickHouse 作为 OLAP 数据库管理系统。在 ClickHouse 被广泛采用以满足各种业务需求之后,他们决定使用 ClickHouse 实现一种称为分布式追踪的技术。从那时起,它支持了数百个内部项目,以确保高性能和高可靠性,彻底改变了 Shopee 对数据管理和系统可观测性的方式。 Frank 说:“采用 ClickHouse 增强了我们的数据分析能力,能够高效且经济地支持我们内部团队日益增长的需求。” 在复杂的微服务架构中高效管理数据绝非易事。分布式追踪是一种通过监控和跟踪请求在系统内各个服务间传递来提供可见性的技术。这种可见性对于快速识别和解决性能瓶颈或错误,以及确保运营顺畅是至关重要的。 对于 Shopee 而言,分布式追踪提供了他们电子商务平台上数据流动的深入视图。这些实时洞察使得数百名内部用户能够准确定位延迟或故障发生的位置,做出明智的决策,并实施改进措施,以增强平台的整体性能和可靠性。 在 2020 年,Shopee 迅速发展,部分受到 COVID-19 疫情的推动。随着日常交易激增,平台工程师面临着越来越多的关于延迟、故障和响应不一致的用户查询——这些问题如果不解决,可能会严重破坏用户体验和运营效率。 数据工程团队意识到,Shopee 现有的数据管理解决方案不足以应对他们面临的规模和复杂性挑战。要理解问题的根本原因,需要详细的诊断能力,能够高效管理大量数据和异步流程。他们决定开发一个更强大、可扩展的解决方案,以维护和提高服务质量——一个能够提供对系统性能的全面洞察,并帮助 Shopee 工程师更有效地管理数据的解决方案。 在寻找合适解决方案的过程中,Frank 和他的团队评估了几种数据库管理系统。他们以前依赖于 Druid、Hive 和 Presto 等数据库引擎;尽管这些系统在某些方面具有优势,但在支持分布式追踪方面存在特定的限制。 在引入 ClickHouse 作为 OLAP 数据库管理系统并体验其优势后,他们决定进一步探索其潜力。广泛的测试和比较表明,ClickHouse 在三个关键领域优于其他解决方案,如 Elasticsearch:性能、兼容性和大规模操作的成本效益。 “ClickHouse 非常快,并且擅长处理高基数计算,提供快速的查询响应,”Frank 说。“与 Elasticsearch 不同,ClickHouse 支持 MySQL 兼容的 SQL 和 JDBC,降低了熟悉这些数据库的用户的学习曲线。而且它对硬件的要求较低,优化了内存和磁盘的使用。” ClickHouse 的开源性质也起到了作用。它不仅与 Shopee 的工程理念一致,还允许他们的团队修改和改进数据库,以适应其特定需求。这种灵活性增加了 Shopee 工程师之间的社区感和共同创新感,帮助他们一起解决复杂的数据处理问题。 实施涉及 Shopee 基础设施的多个组件,并开发了多个全托管的 ClickHouse 服务,以确保 Shopee 工程师能够高效地进行数据处理和系统可观测性:
Shopee 的 ClickHouse 基础设施的核心是数十个 ClickHouse 集群,每种集群类型都针对不同的数据处理需求进行了优化:
实现 ClickHouse 是一个需要仔细规划和执行的细致过程。对于 Shopee 数百名内部用户来说,最终结果是一个不仅解决短期需求,而且为未来的可扩展性奠定了坚实基础的强大系统。 Shopee 对 ClickHouse 的实施产生了巨大影响。通过分布式追踪,工程团队可以实时监控和优化数据流,对系统操作有清晰的可见性,能够快速识别和解决瓶颈。 具体做法如下:
Frank 说:“我们现在在 ClickHouse 服务器上使用仅 20 个 CPU 核心,每秒摄取多达 300 万行,压缩比达到 1:8 而无需任何调优。对于存储在 SSD 上的数据,从超过 300 亿行的数据集中搜索特定追踪 ID 的时间仅需几秒。” 分布式追踪帮助 Shopee 识别和解决了各种挑战,从而显著提升了系统性能和可靠性。 1. 识别瓶颈 在一个实例中,Shopee 发现一个查询的响应时间为 118 秒。通过分布式追踪,他们确定大部分时间花费在 ClickHouse 网关端而非 ClickHouse 端。进一步调查显示,客户端向 ClickHouse 发送数据的速度非常慢。通过在客户端启用数据压缩,他们能够减少负载大小并加快响应时间。 2. 解决网络问题 Shopee 收到关于查询响应不一致的反馈。在一个例子中,追踪日志帮助他们发现请求由于 Kubernetes 中的 DNS 缓存问题被错误路由。修复 DNS 缓存问题确保查询正确路由,维护数据处理管道的完整性和准确性。 3. 理解分布式连接 分布式连接的复杂性可能会消耗系统资源。分布式追踪提供了这些连接执行过程的清晰可视化。通过调整设置,Shopee 的工程师能够简化这一过程,发出更少的子查询并提高整体性能。这一优化使查询变得更简单高效。 4. 诊断查询超时 分布式追踪帮助 Shopee 团队发现并解决了 DDL 超时问题。例如,追踪日志显示一个数据库服务器处理查询的时间比其他服务器更长。进一步调查发现,延迟是由该特定节点上的阻塞 DDL 操作引起的。解决这一瓶颈确保了数据操作的顺畅和可靠。 5. 解决物化视图问题 用户有时报告他们的 INSERT 查询失败,并出现与目标表无关的错误。Shopee 的分布式追踪日志显示,这些失败实际上是由物化视图中的问题引起的。通过诊断和解决这些问题,Shopee 使数据插入过程更加可靠和高效。 Frank 说:“ClickHouse 是一个超级快速和强大的分析数据库,可以降低用户的硬件成本。它足够多功能,可以用于各种应用,从欺诈检测和用户行为分析到日志和指标存储。在许多场景中,它甚至可以替代传统数据库如 MySQL 或搜索引擎如 Elasticsearch。” 随着 Shopee 继续扩展其电子商务平台,在东南亚十几个国家和地区处理数百万笔交易,分布式追踪使其工程师能够掌握性能问题并确保运营顺畅。ClickHouse 对公司数据管理和整体业务成功至关重要,使 Shopee 能够处理更多交易而不影响质量。 Frank 说:“我们四年前选择 ClickHouse 是因为它的速度和性能。自那以后,它已成为我们所有数据应用的骨干。” Shopee 与 ClickHouse 的旅程才刚刚开始。以 ClickHouse 的开源数据库为其数据管理系统的核心,Shopee 完全有能力继续扩展和创新。要了解更多关于 ClickHouse 如何提升您公司的数据能力的信息,请下载 ClickHouse 并加入我们不断壮大的开发者社区。 最近 ClickHouse 官方首次推出了 ClickHouse 认证开发人员(点击查看详情)的考试。提升您的职业生涯至行业顶尖水平!报名参加我们的官方 ClickHouse 认证考试,证明您的 ClickHouse 专业技能。 提示:我们正在开通国内购买渠道,请大家积极填写认证考试意愿到场问卷,敬请期待 好消息:ClickHouse Shanghai User Group第1届 Meetup 已经开放报名了,将于2024年7月20日在上海市徐汇区龙耀路8号阿里巴巴徐汇滨江园区X6-304 梅溪书院举行,扫码免费报名 征稿启示 面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com |
版权声明:本文为 clickhouse 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。