我们如何解决API可靠性与性能提升问题 - Medium

作者:API传播员 · 2026-01-05 · 阅读时间:5分钟
本文分享了通过构建监控工具、优化高影响端点、改善数据库交互以及重新设计API表面来解决API可靠性与性能问题的实践方法,包括使用BigQuery分析指标、批量查询优化和以用户为中心的设计理念,旨在提升客户体验和系统稳定性。

我们如何解决API可靠性与性能提升问题

设计 API 表面,为当前和未来的客户提供更好的体验。


API 现状与挑战

在我们现有的 API 系统中,存在以下几个主要问题:

  • API 定义不一致:不同端点返回的数据可能不匹配。例如,有时需要以 groupId 作为查询参数传递,有时却需要以其他方式传递。此外,一些应该使用 GET 方法的操作却被设计为 POST 方法。
  • 无限制的端点:部分端点缺乏分页功能,允许一次性查询大量数据。这种设计可能导致后端服务过载,进而影响 API 的可靠性和性能。随着客户数量和车队规模的增长,这一问题愈加明显。
  • 缺乏设计指导:内部团队在创建新端点时,缺乏明确的设计模式和指导,导致新端点与现有 API 表面不一致。

这些问题不仅影响了客户的使用体验,也对我们的系统稳定性构成了威胁。


提升现有 API 的性能与可靠性

为了提升现有 API 的性能和可靠性,我们采取了以下措施:

1. 构建监控与测量工具

我们使用 BigQuery 记录 API 请求的详细指标,并基于这些数据分析端点的性能和可靠性。通过从客户的角度评估每个端点的表现,我们能够识别出哪些端点对客户影响最大。例如,即使大多数客户在某个端点上的体验良好,但如果有个别客户在该端点上遇到严重问题,我们也会将其列为优先改进对象。

2. 优化高影响端点

通过分析系统指标,我们针对性能和可靠性影响最大的端点进行了优化。例如:

  • 即时优化:发现某些请求的实现方式低效,例如获取单个司机信息的请求实际上是查询所有司机后再进行过滤。对此,我们重新设计了查询逻辑。
  • 渐进式改进:例如,v1/flete/positions 端点需要调用多个下游服务,虽然返回了丰富的数据,但也增加了故障点。我们通过优化调用流程,减少了潜在的失败风险。

3. 改善数据库交互

我们发现许多请求是序列化的,而数据库本可以进行批量处理。例如,将 100 次单独的司机查询合并为一次批量查询。通过这种方式,我们显著提升了查询效率,并在可能的情况下并行化批量查询。


重新设计 API 表面

仅仅优化现有 API 并不足以满足未来客户的需求。我们决定重新设计 API 表面,以提供更直观、高效的使用体验。

核心设计理念

在重新设计过程中,我们遵循以下核心理念:

  • 以用户为中心:API 的设计应解决用户问题,满足用户需求。
  • 一致性与直观性:API 应遵循行业最佳实践,设计直观且一致。
  • 上下文关联性:端点设计应在整个 API 表面中具有意义,而非孤立存在。
  • 高性能:端点必须通过分页或限制请求范围来确保性能,避免无限制查询导致服务过载。

实施与推广

为了确保新设计的成功,我们采取了以下措施:

  • 设计模板:为新端点创建了特定的设计模板,捕捉核心设计理念。
  • 术语表与规则测试:构建了常见查询参数的术语表,并通过 linting 测试强制执行设计规则。
  • 团队协作:与内部团队密切合作,在设计和实施新端点时提供支持,并定期收集反馈以优化开发流程

持续改进与未来展望

即使完成了第一代新端点的设计,我们的工作仍在继续。通过新的监控工具和定制化视图,我们能够实时识别客户的痛点,并根据反馈进一步优化 API 的设计流程。

未来,我们计划扩展重新设计的 API 表面,覆盖更多客户用例,为客户提供更高效、更可靠的 API 体验。


通过对现有 API 的优化和新 API 的重新设计,我们不仅解决了当前的性能与可靠性问题,还为未来的客户需求奠定了坚实基础。API 的设计与维护是一项长期任务,我们将持续改进,为客户提供更优质的服务。


原文链接: https://medium.com/samsara-engineering/how-we-tackled-improving-api-reliability-performance-ecaa682f7f67