携程门票交易秒杀场景优化

文化娱乐 旅游 案例ID:229519
lw
5 年经验· 携程旅游信息技术(上海)有限公司
微信扫码沟通,客服可协助直接对接工程师;如当前档期不合,也可继续推荐相似案例作者。

案例介绍

与传统电商相比,携程门票交易系统具有两大特点:
1) 强一致性:用户预 订后保证出票且尽可能快速确认,确保每一笔交易都能履约。
2) 多维度和跨商品组合限购:限购规则复杂多变,例如多维度和跨商品组合限购,保障每位用户有公平购票的机会,避免囤票行为。

当系统遇到洪峰流量时,容易出现页面打开慢、卡顿等问题,主要原因有以下几点:
1) Redis 超负载与缓存热点。
2) 数据库超负载。
3) 供应商系统不稳定。

系统优化:
一、Redis负载与缓存热点优化
a) 缓存热点应对方案:热点识别自动构建多级缓存将单位时间内高频访问的Key ,识别出来。例如:同一个 Key 1 秒内单机访问 10 次。
b) 缓存大key问题:
1. 精简缓存对象:去除缓存中的冗余字段。
2. 压缩缓存对象:采用压缩比更高的压缩方式,缩小缓存对象。
3. 拆分大 Key :若精简和压缩后还是过大,根据业务逻辑,将大 Key 拆分成多个小 Key 。
5. 长期治理:建立长期治理机制,定期扫描 Redis 中的大 Key ,每周跟进,将隐患在日常治理中消除。

二、数据库超载优化
a) 缓存覆盖更新策略:替代直接删除缓存 Key 的做法,采用了缓存覆盖更新策略。当商品信息发生变更时,系统不再删除缓存 Key ,而是直接更新该 Key 对应的缓存值。避免了流量穿透到底层数据库。
b) 消息聚合:针对商品变化消息量过大的问题,引入了消息聚合机制。将商品多次变化消息在一段时间窗口内合并成一个,减少消息处理的频率。
c) 异步更新缓存:为了进一步降低 对数据库的实时压力,采用了异步更新缓存的策略。当商品信息发生变更时,系统不会立即更新缓存,而是将更新任务放入一个异步队列中,由后台线程异步处理。

三、供应商系统不稳定
当供应商系统面临大流量冲击时,往往会出现响应缓慢甚至被限流的情况,这直接影响了我们自身系统的稳定性和用户体验。
为了缓解上述问题,我们采取以下技术策略:
1)削峰填谷 缓冲池:利用消息队列作为订单提交的缓冲池,将订单信息先写入队列,再由后台服务异步处理。这样可以将订单提交的高峰流量削平,减少对供应商系统的瞬时压力。

携程门票交易秒杀场景优化

文化娱乐 · 旅游 案例ID:229519
联系该工程师
微信扫码,建群沟通
作者: lw - 5年经验- 携程旅游信息技术(上海)有限公司

案例介绍

与传统电商相比,携程门票交易系统具有两大特点:
1) 强一致性:用户预 订后保证出票且尽可能快速确认,确保每一笔交易都能履约。
2) 多维度和跨商品组合限购:限购规则复杂多变,例如多维度和跨商品组合限购,保障每位用户有公平购票的机会,避免囤票行为。

当系统遇到洪峰流量时,容易出现页面打开慢、卡顿等问题,主要原因有以下几点:
1) Redis 超负载与缓存热点。
2) 数据库超负载。
3) 供应商系统不稳定。

系统优化:
一、Redis负载与缓存热点优化
a) 缓存热点应对方案:热点识别自动构建多级缓存将单位时间内高频访问的Key ,识别出来。例如:同一个 Key 1 秒内单机访问 10 次。
b) 缓存大key问题:
1. 精简缓存对象:去除缓存中的冗余字段。
2. 压缩缓存对象:采用压缩比更高的压缩方式,缩小缓存对象。
3. 拆分大 Key :若精简和压缩后还是过大,根据业务逻辑,将大 Key 拆分成多个小 Key 。
5. 长期治理:建立长期治理机制,定期扫描 Redis 中的大 Key ,每周跟进,将隐患在日常治理中消除。

二、数据库超载优化
a) 缓存覆盖更新策略:替代直接删除缓存 Key 的做法,采用了缓存覆盖更新策略。当商品信息发生变更时,系统不再删除缓存 Key ,而是直接更新该 Key 对应的缓存值。避免了流量穿透到底层数据库。
b) 消息聚合:针对商品变化消息量过大的问题,引入了消息聚合机制。将商品多次变化消息在一段时间窗口内合并成一个,减少消息处理的频率。
c) 异步更新缓存:为了进一步降低 对数据库的实时压力,采用了异步更新缓存的策略。当商品信息发生变更时,系统不会立即更新缓存,而是将更新任务放入一个异步队列中,由后台线程异步处理。

三、供应商系统不稳定
当供应商系统面临大流量冲击时,往往会出现响应缓慢甚至被限流的情况,这直接影响了我们自身系统的稳定性和用户体验。
为了缓解上述问题,我们采取以下技术策略:
1)削峰填谷 缓冲池:利用消息队列作为订单提交的缓冲池,将订单信息先写入队列,再由后台服务异步处理。这样可以将订单提交的高峰流量削平,减少对供应商系统的瞬时压力。

相似案例推荐

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在 1 小时内与您联系确认。

1小时精推人才

需求方专属客服,免费梳理匹配

需求方客服微信二维码
扫码加微信 · 客服人工对接
更多案例
微信沟通 客服 看中这位工程师了?客服帮你 1 小时对接沟通 → ×