L2B 运行机制与客户响应指南
Atlas Look-to-Book(L2B)当前运行机制、控制结果、响应头和状态通知。
Atlas 使用 Look-to-Book(L2B)管理低效、重复或持续超限的航司请求。
系统会提前预警并持续观察。只有确认持续超限后才会进入控制。
L2B 按“客户 + 航司 + API Action”独立评估。
当前运行模型
系统在滑动窗口内计算有效 L2B:
当前 L2B = N / (D + K)
允许请求额度 = T × (D + K)
使用率 = 当前 L2B / T × 100%N 是符合统计口径的实时请求数。D 是支付成功订单数。K 是基础保护额度。
规则使用配置的窗口 W 和上限 T。系统通常每 5 分钟评估一次。
当前策略状态为 NORMAL、WARNING 和 CONTROL。
使用率达到 80% 时进入
WARNING。持续达到 100% 并通过确认后进入
CONTROL。使用率持续低于释放线后退出
CONTROL。
ORDER 参与观察和通知,但 order.do 不会被 L2B 降级或拒绝。
控制结果与响应头
CONTROL 是策略状态,不会直接出现在响应头中。
受控的非 ORDER 请求不会实时发送至航司。Atlas 会返回以下实际结果:
x-l2b-state
含义
NORMAL
本次请求未受 L2B 控制
WARNING
请求仍实时执行
DEGRADED
返回可用的非实时降级结果
REJECTED
没有可用降级结果,请求被拒绝
每次请求都应读取以下响应头:
当数值响应头均为 unknown 时,请求会正常放行。
这不代表系统已确认该维度的 L2B 正常。
无法提供降级结果时,Atlas 返回错误码 907。
状态变化通过 Webhook、邮件或钉钉发送。Webhook 为尽力投递。
请使用 L2B 状态变更通知 对接 Webhook,并以响应头作为实时依据。
适用范围
L2B 按以下维度独立观察和决策:
一个维度的状态不会影响其他航司或 Action。
VERIFY
验价(verify.do)
GET_OFFERS
获取 Offer(getOffers.do)
GET_OFFER_PRICE
获取 Offer Price(getOfferPrice.do)
GET_SEAT
获取座位(seatAvailability.do)
GET_LUGGAGE
获取行李(getLuggage.do)
ORDER
下单(order.do),仅观察和告警
具体客户、航司和 Action 是否启用在线控制,以当前生效配置为准。
L2B 如何计算
每条规则使用持续前移的滑动窗口 W。当前支持 6、12、24 或 48 小时。
系统通常每 5 分钟重新评估最近 W 时间范围内的数据。
N:符合统计口径的成功实时 API 请求数。D:该客户在该航司的支付成功订单数。K:基础保护额度,避免低数据量场景过早触发控制。
控制期间被降级或拒绝的请求不会计入 N。
T 是该规则配置的 L2B 上限。K 不代表真实支付订单。
例如,W 为 24 小时、T 为 80、D 为 3、K 为 2、N 为 320:
此时系统进入 WARNING,但仍会实时请求航司。
状态与转换规则
NORMAL
使用率正常
是
WARNING
接近或达到上限
是
CONTROL
已确认持续超限
除 ORDER 外,按接口能力降级或拒绝
状态转换图
当前策略在使用率达到 80% 时进入 WARNING。持续达到 100% 并完成确认后进入 CONTROL。
使用率持续低于释放线时,CONTROL 返回 WARNING。通常低于 90% 时开始释放判断。
WARNING 持续低于 70% 后返回 NORMAL。状态变更需要持续确认,避免短暂波动频繁切换。
实际使用的上限 T、窗口 W 和状态,以响应头、通知和生效规则为准。
CONTROL 对请求的影响
CONTROL 是策略状态。受控的非 ORDER 请求不会实时发送给航司。
Atlas 根据每个接口的能力,返回以下处理结果:
x-l2b-state
含义
DEGRADED
返回可用的非实时降级结果
REJECTED
没有可用降级结果,请求被拒绝
DEGRADED 结果可能来自缓存。它不是实时航司结果,价格、库存或可售性可能已变化。
REJECTED 返回业务错误码 907:
对 907 使用带退避的有限重试。不要立即进行高频重试。
通知中的 CONTROL 表示策略状态。响应头中的 DEGRADED 和 REJECTED 表示单次请求的实际结果。
API 响应头
x-l2b-current
当前窗口的有效 L2B
83.25
x-l2b-limit
当前规则上限 T
80
x-l2b-window-minutes
观察窗口,单位分钟
1440
x-l2b-state
本次请求状态或处理结果
NORMAL、WARNING、DEGRADED、REJECTED
没有有效决策时,Atlas 按正常流程放行:
这表示本次请求未受控制,不表示该维度已完成有效评估。
如果客户、航司或 Action 无法识别,Atlas 不会返回 L2B 响应头。请求仍会正常处理。
客户端应同时检查业务响应和 x-l2b-state,而非只判断 HTTP 状态。
状态变化通知
Atlas 在以下策略状态变化时发送 Webhook、邮件或钉钉通知:
NORMAL → WARNING
使用率接近上限
WARNING → CONTROL
实时航司请求开始受控
CONTROL → WARNING
控制已解除,但使用率仍高
WARNING → NORMAL
L2B 已恢复正常
通知至少包含航司、Action、当前 L2B、上限、使用率、状态、窗口和评估时间。
Webhook 为尽力投递。它不能作为实时状态的唯一依据。
请以每次 API 响应中的 x-l2b-current、x-l2b-limit、x-l2b-window-minutes 和 x-l2b-state 为准。
客户响应建议
收到 WARNING
API 仍实时请求航司。检查重复调用、无效轮询和未设置退避的自动重试。
优先复用仍有效的 Offer、Session 或查询结果。
收到 CONTROL
记录 DEGRADED 和 REJECTED 响应。将 DEGRADED 视为非实时结果。
对错误码 907 使用退避策略。排查重复验价、重复获取 Offer 和异常重试来源。
若 ORDER 进入 CONTROL,该通知仅表示用量告警。订单请求不受影响。
CONTROL 恢复为 WARNING
实时航司请求已恢复。请逐步恢复流量,避免立即释放全部积压请求。
WARNING 恢复为 NORMAL
可以正常调用 API。请继续保留请求去重、缓存复用和退避重试机制。
Webhook 接收要求
HTTP 方法
POST
Content-Type
application/json; charset=UTF-8
成功响应
精确的 HTTP 200 OK
幂等键
notificationId
使用 notificationId 去重,并按 clientCode + carrier + action 保存状态。
使用 windowEnd 判断事件新旧。较早事件不得覆盖较新状态。
接收端应兼容未知新增字段。先可靠入队或持久化,再返回 200。
有关事件字段,请参阅 L2B 状态变更通知。
常见问题
为什么达到 100% 后不会立刻进入 CONTROL?
系统要求持续超限并完成确认。单次短暂高峰不会直接触发控制。
为什么支付订单增加后没有立即恢复?
系统使用滑动窗口,并要求持续满足释放条件。状态会在后续评估周期更新。
为什么通知显示 CONTROL,响应头显示 DEGRADED?
CONTROL 是策略状态。DEGRADED 是本次请求获得非实时结果的处理结果。
没有收到通知,是否代表没有被控制?
不代表。通知是辅助渠道。请始终使用 API 响应头判断当前请求的实时状态。
使用边界
L2B 是 API 请求与支付转化关系的管理指标。
不同客户、航司和 Action 独立计算。
降级结果不是实时航司结果。
状态变化存在正常统计和确认周期。
Last updated
Was this helpful?

