同程艺龙的工程降级预案实践与挑战

需积分: 10 0 下载量 59 浏览量 更新于2024-07-15 收藏 18.67MB PDF 举报
"降级预案在同程艺龙的工程实践中,主要探讨了在面对系统压力和故障时,如何通过实施降级策略来确保服务的高可用性。该实践由同程艺龙的王俊翔分享,涉及搜索引擎、API网关等多个关键组件,以及支付流程中的多个环节。实践中,他们面临了大量超时、交易故障等问题,发现缺乏熔断设计和降级机制是主要挑战。" 在同程艺龙的工程实践中,降级预案是确保系统稳定性和高可用性的重要手段。降级预案涉及到对系统中的强弱依赖进行区分,弱依赖通常采用熔断和限流的方式,允许部分非核心功能受损,以保护核心业务的正常运行。而强依赖则需要备选服务,通过降级实现,以减少对用户体验的影响。 强弱依赖的判断标准主要看用户是否能明显感知到服务变化以及是否影响核心业务。例如,当serviceA、serviceB和服务C之间存在依赖关系时,如果serviceC出现问题,可以采用降级策略,对于弱依赖的serviceC,可能选择熔断;而对于强依赖的serviceA和serviceB,则需要考虑备用服务或降级实现,以降低对整体服务的影响。 实践中,同程艺龙采用了Netflix的开源容错框架Hystrix,它提供了包括资源隔离、断路器、降级操作、请求合并和请求缓存等多种功能,以应对服务故障和性能问题。然而,Hystrix在实际应用中也暴露出一些问题,如业务改造成本高、策略固化不易调整、缺乏统一管理和治理、无法支持多系统的复合指标计算等。 为解决这些问题,同程艺龙着手构建业务保障平台,包括服务管理、策略管理、预案制定和线上演练等模块。这一平台旨在实现降级服务的统一注册管理,集中化降级策略的配置,根据服务重要性制定分级预案,并通过监控降级链路执行情况来评估系统的可靠性和优化降级策略。 整体架构中,一个关键组件是Agent,它负责服务降级的注册和熔断通知,元数据存储在ETCD中,通过控制中心进行统一管理和调度。这样的设计提升了系统对异常情况的响应能力,同时也提供了对预案有效性的验证手段,从而更好地保证服务的稳定性和用户体验。 通过这些实践和平台建设,同程艺龙在工程中实现了对复杂故障场景的应对,提升了系统的健壮性和容错能力,为其他企业提供了在高并发、高压力环境下的系统优化和容错设计的宝贵经验。