Skip to main content
OddsPapi 专为基于数据源进行交易的团队而构建,因此可靠性是首要关注点。本页说明平台如何保持可用、如何监控它,以及在出现问题时如何联系我们。
具体的正常运行时间目标、支持响应时间和补偿条款按 B2B 客户协议单独约定。请联系 contact@55-tech.com 讨论适合您用例的 SLA 条款。

实时状态与事件历史

平台的实时状态、正在进行的事件以及历史正常运行时间均发布在我们的状态页上:

OddsPapi 状态页

实时可用性、事件报告和正常运行时间历史 —— 订阅以获取更新。
在状态页订阅,即可在发生事件和计划维护时收到通知。

面向可用性的架构

平台经过设计,任何单点故障都不应中断您的数据流:
  • WebSocket 优先传输 —— 持久网关以最小延迟流式传输更新,避免 REST 轮询的开销与间隙。
  • REST + WebSocket 冗余 —— REST 快照与实时数据流是通往同一数据的两条独立路径。如果数据流中断,REST 可使您的状态保持最新。
  • 恢复与重放 —— 短暂断连后,客户端从其最后游标恢复并重放错过的更新,无需完整刷新。参见恢复和重放。
  • 确定性恢复 —— 当无法重放时,网关发出 snapshot_required,客户端从快速的 REST 快照重建状态。恢复是一条明确的、经过设计的路径 —— 而非错误状态。

延迟与新鲜度

OddsPapi 的核心竞争力是可测量的端到端延迟 —— 而非吞吐量 —— 每条赔率更新都携带可用于验证的时间戳: changedAt − bookmakerChangedAt 即每条更新的观察延迟;将 ts 与您的接收时间对比即可得到传输跳延迟。 各博彩商的新鲜度上限发布在 GET /bookmakers:maxDelayLiveInSec、maxDelayPregameInSec 和 maxDelayPregameMainInSec 给出每个博彩商各交付模式的最大预期刷新延迟 —— 在博彩商提供可用时间戳时基于实测(当前为观察时间与博彩商变更时间差的滚动 p50),否则为估计值。 代表性的滚动 p50 观察延迟(各博彩商的实时数值见 GET /bookmakers): 在观察之后,内部管道到网关发送约增加 30 毫秒(p50);从 ts 到客户端接收的传输跳延迟取决于您的部署位置 —— 同区部署时可低至约 5 毫秒(参见服务器位置指南)。 如何在试用期亲自核验这些数字,参见评估数据源;如何用它们对标您已有的数据源,参见作为第二数据源运行 OddsPapi;如何据此交易,参见 sharp 盘口交易与 CLV。

博彩商陈旧度:staleOdds

可能失效的是两种不同的东西:平台(网关、您的连接),以及我们与各上游博彩商之间的链路。staleOdds 针对的是后者 —— 这个标志的含义是:该博彩商在该赛事上的赔率已不再可信,即便其他一切都正常。这正是一条价格可以同时看上去完美无缺又不可交易的原因 —— 下面是一次 REST 快照(GET /fixtures/odds),同一个响应同时携带两个映射;bookmakers 频道推送的是同样的 meta:
价格行毫无异常;裁决就在旁边的映射里。无论您通过 REST 初始化还是响应数据流,标志与价格总是同时在手。

何时触发

该标志始终是被有意设置的,共有三种情形:
  1. 失去联系 —— 博彩商侧的封锁、维护或宕机。我们完全无法再观察其价格。
  2. 异常静默 —— 每个博彩商都有一个监视器:如果整个博彩商在超过其专属阈值的时间内没有任何赔率变动,出于谨慎会将其全部赛事标记为陈旧。真正安静的时段(例如仅赛前盘的博彩商在深夜)也可能合理地触发它 —— 此时该标志的含义是我们暂时无法区分「安静」与「故障」,而这恰恰是您不应交易它的时刻。
  3. 错误映射 —— 被发现映射到错误博彩商赛事的 fixture 会被标记为陈旧,直到重新映射完成且旧价格被移除。这种情况下价格不是旧了,而是错了 —— 这正是 staleOdds 是硬性阻断而非参考信号的原因。

层级与扩散

只有一条规则:staleOdds 恰好存在于一个层级 —— 赛事 × 博彩商。绝不会是盘口级或选项级(该标志覆盖这家博彩商在该赛事上的全部赔率),也绝不会是一条博彩商级的整体消息(博彩商范围的事件表现为该博彩商每个赛事上的标志)。各成因对应您会收到的消息: 因此请按 fixtureId:bookmaker 键值对存储与判定,与送达形式完全一致。如果您需要博彩商级的视图(例如「singbet 挂了」),请在您这一侧推导 —— 比如该博彩商当前被标记赛事的占比 —— 而不是等待一条永远不会到来的博彩商级消息。

它不是什么

它不是暂停。suspended 是博彩商自己对该赛事采取的动作,赔率行上的 active / marketActive 是博彩商在选项与盘口层面的停止。staleOdds 关乎我们的视野 —— 上述各项全部正常时它也可能为 true,反之亦然。两者各自独立意味着「此刻不要交易这家博彩商」。

处理方式

  • 暂停对该博彩商、该赛事的交易与报价。
  • 将持有价格视为未验证。 不要基于陈旧值重新定价。
  • 待标志恢复 false 后再继续。 恢复是自动的:每条更新都是完整的最新状态,随后的更新会自行重新验证您的存储 —— 无需重放或对账。
  • 或者回退。 如果该博彩商是参考而非交易场所 —— 体育博彩商的风险衡量、做市的定价输入 —— 切换到其他仍在线、锐度相近的博彩商,标志清除后再切回。
另一种做法 —— 默默继续提供最后已知价格 —— 才是真正造成损失的故障模式。一个从不显示陈旧的数据源并不更新鲜,它只是没有告诉您。

为交易级故障转移而设计

恢复是有界且可预测的,而非尽力而为:
  • 网关缓冲一个重放窗口(resumeWindowMs),因此短暂中断可无数据丢失地恢复。
  • 如果您的游标超出该窗口,单次 REST 快照即可一次性恢复完整状态。
  • 博彩公司连接状态通过 staleOdds 标志明确呈现,因此您始终知道某个价格何时可能不再是最新的。
这意味着最坏情况下的恢复是一次快速、明确定义的 REST 快照,而非无限期的中断。完整的恢复流程参见恢复和重放。

监控与运维责任

OddsPapi 为您提供安全运行所需的信号;您的客户端应据此采取行动:

支持与事件响应

报告问题时,请提供您的 apiKey 组、受影响的频道或端点、时间戳(UTC),以及任何 serverEpoch / entryId 值 —— 这些可帮助我们快速追踪您的会话。