返回

携程: 将 Dubbo 应用于 10 万 TPS 高并发场景,分享实战心得

见解分享

携程的 Dubbo 之路

本文整理自董艺荃在 Dubbo 社区开发者日上海站的演讲。

携程当初为什么要引入 Dubbo 呢?实际上从 2013 年底起,携程内主要使用的就是基于 HTTP 协议的 SOA 微服务框架。这个框架是携程内部自行研发的,整体架构在这近6年中没有进行大的重构。受到当初设计的限制,这个框架有许多问题亟需解决,例如:

  • 性能瓶颈: 随着业务量的增长,系统性能越来越成为瓶颈,尤其是在大促期间。
  • 扩展性差: 系统扩展性差,无法满足业务快速发展的需要。
  • 稳定性差: 系统稳定性差,经常出现故障,影响业务的正常运行。

为了解决这些问题,携程开始寻找一种新的微服务框架。经过调研和评估,携程最终选择了 Dubbo。

Dubbo 在携程的演进之路

携程于 2016 年将 Dubbo 引入生产环境,现已在多条核心业务线上稳定运行,支撑着每天超过 10 万 TPS 的交易量。在 Dubbo 的应用过程中,携程也遇到了一些挑战,并进行了相应的优化。

核心应用场景

Dubbo 在携程的核心应用场景包括:

  • 订单服务: 处理机票、酒店、度假等产品的订单交易。
  • 商品服务: 管理机票、酒店、度假等产品的商品信息。
  • 搜索服务: 提供机票、酒店、度假的搜索功能。
  • 支付服务: 提供在线支付功能。

架构设计

携程的 Dubbo 架构采用分层设计,主要分为以下几层:

  • 接入层: 提供对 Dubbo 服务的统一接入。
  • 网关层: 负责流量的转发和安全控制。
  • 服务层: 提供具体的业务服务。
  • 注册中心: 负责服务注册和发现。

性能优化

为了提高 Dubbo 的性能,携程进行了以下优化:

  • 线程池优化: 对 Dubbo 的线程池进行优化,提高线程池的利用率。
  • 缓存优化: 对 Dubbo 的缓存进行优化,提高缓存的命中率。
  • 熔断机制: 引入熔断机制,防止服务雪崩。

运维管理

为了保证 Dubbo 的稳定运行,携程建立了一套完善的运维管理体系,包括:

  • 监控系统: 实时监控 Dubbo 服务的运行状态。
  • 报警系统: 当 Dubbo 服务出现故障时,及时发出报警。
  • 应急预案: 制定应急预案,应对 Dubbo 服务的故障。

总结

经过多年的实践,携程已经成为 Dubbo 最大的用户之一。携程在 Dubbo 的应用过程中,积累了丰富的经验,并对 Dubbo 的发展做出了贡献。未来,携程将继续与 Dubbo 社区合作,共同推动 Dubbo 的发展。