Files
my-vault/airport-wiki/concepts/aodb/开源机场运营数据库(AODB)高层设计文档.md
T
windyboy d61d86633c fix(aodb): harden MVP high-level design
Clarify SSOT authority boundaries, core entity model, event contract and consistency, resource assignment rules, northbound API contract, observability/capacity baselines, and Go/No-Go gates.

Made-with: Cursor
2026-04-13 15:48:37 +08:00

27 KiB
Raw Blame History

开源机场运营数据库(AODB)初步高层设计

1. 目标

本设计给出 AODB 的初步高层方案,重点回答三件事:

  1. 系统由哪些核心模块组成。
  2. 关键业务数据如何流转。
  3. 首期上线应覆盖哪些能力。

适用范围:年旅客吞吐量 500 万至 3000 万机场。

2. 设计原则

  • 单一事实源(SSOT):航班与资源状态统一归口到 AODB。
  • 事件驱动:状态变化通过事件广播,减少系统耦合。
  • 标准优先:优先兼容 AIDX、SSIM、AFTN/SITA。
  • 渐进建设:先实现核心闭环,再扩展高级能力。

3. 总体架构

3.1 架构分层

层级 主要能力 代表组件
接入层 外部系统接入、协议解析、统一北向入口 Kong Gateway、Apache Camel、SSIM 导入器
业务层 航班管理、资源分配、里程碑管理、告警处理 Flight Service、Resource Service、Milestone Service、Alert Service
事件与计算层 事件总线、流处理与预测、规则判定与编排 Kafka、Flink、Drools、Temporal
数据层 事务存储、时序存储、缓存、检索 PostgreSQL、TimescaleDB、Redis、OpenSearch
平台层 身份认证、部署运行、观测与服务治理 Keycloak、Kubernetes、Prometheus/Grafana、Jaeger、Loki、Linkerd

3.2 核心模块职责

  • Flight Service:维护航班计划、动态状态和历史记录。
  • Resource Service:进行机位/登机口/行李转盘/值机柜台等资源分配与冲突检查,支持人工覆盖与审计。
  • Milestone Service:维护 A-CDM 关键里程碑时间点。
  • Alert Service:统一处理延误、冲突等运营告警。
  • ACISP 接口层:向航司、地服、AOC 提供查询与订阅能力。

3.3 核心实体标识约定(最小集)

  • Flightcarrier + flight_number + op_date + leg_no 作为业务唯一标识。
  • Milestoneflight_id + milestone_type + source + event_time 作为幂等写入键。
  • ResourceAssignmentresource_type + resource_id + time_window + flight_id 作为分配唯一键。

3.4 权威边界(SSOT)与写入治理(MVP)

为实现“单一事实源(SSOT)”,AODB 必须对外明确两类信息:

  1. 状态事实(Fact:AODB 对外提供的“当前状态”是唯一权威输出。
  2. 来源与裁决(Provenance:每个关键状态字段必须可追溯其来源、可信度与裁决过程。

3.4.1 状态写入三元信息(最小要求)

所有关键状态写入(航班动态、里程碑、资源分配、告警)必须携带以下最小三元信息并持久化:

  • source:来源系统/组织(如 ANSP/航司/地服/机场运行/人工裁决),并可扩展到具体系统标识。
  • confidence:可信度等级(建议:confirmed/estimated/reported/suspect),用于表示数据质量与可用性。
  • decision:裁决信息(可为空)。若发生冲突或人工覆盖,必须记录:裁决人/系统、裁决原因、裁决时间与裁决依据。

3.4.2 权威边界与冲突裁决原则(MVP)

为避免“多系统同写同字段”导致不可控冲突,MVP 采用以下治理原则:

  • 分层权威:以“字段/里程碑”为粒度定义权威优先级(不同字段可不同)。例如:
    • 到离港实际时间类(如 ALDT:优先 ANSP/机场运行权威源,其次航司上报,最后为人工裁决。
    • 协同计划时间类(如 TOBT:优先航司/地服协同上报,其次机场运行,最后为人工裁决。
    • 资源分配类(机位/登机口/行李转盘/值机柜台):优先机场运行系统计算与人工调度,外部源仅作为建议输入。
  • 可信度优先:在同等来源优先级下,confidence 更高者覆盖更低者。
  • 更正优先:当上游明确发送“更正/撤销”语义(或带更高版本号/序列号)时,允许对既有事实进行修正,但必须保留历史与审计轨迹。
  • 不可判定进入旁路:无法自动裁决的冲突必须进入“人工复核队列”,同时对外输出“冲突标记/数据质量标记”,避免静默覆盖。

3.4.3 审计与可追溯要求(MVP

  • 审计覆盖范围
    • 航班关键状态字段的变更(计划/预计/实际时间、关键里程碑状态)
    • 资源分配变更(分配/释放/人工覆盖/回滚)
    • 告警生命周期变更(触发/确认/关闭/抑制)
  • 审计最小字段who/what/when/why(操作者或系统、变更字段、变更前后值、时间、原因/关联事件)。
  • 对外可见性:对外查询接口必须能返回“当前值 + source/confidence + 最近一次裁决摘要”,以便订阅方正确解读数据质量。

3.5 核心实体与关系(ER 概念级,MVP)

本节定义 AODB 的最小“可落地”概念模型,用于约束后续数据字典与接口契约的一致性。

  • Flight:航班在指定运行日(op_date)的运行对象,包含计划/预计/实际时间与当前态字段集合。
  • Milestone:A-CDM 里程碑事件记录(含来源、可信度、审计信息),与 Flight 关联。
  • Resource:资源主数据,MVP 覆盖:
    • Stand(机位)、Gate(登机口)、Belt(行李转盘)、Counter(值机柜台)
  • ResourceAssignment:资源占用/分配记录(含时间窗口、分配来源、是否人工覆盖),与 Flight 与 Resource 关联。
  • Alert:告警实体(延误/冲突/超阈值),含生命周期(触发、确认、关闭、抑制)与处置轨迹。
  • DataQualityFlag(可选但建议纳入 MVP):对“冲突/不可判定/低可信度”等数据质量问题的结构化标记,便于对外呈现与内部对账。

实体关系(概念级):

  • 一个 Flight 对应多个 Milestone1:N)。
  • 一个 Flight 在同一时间窗口内可占用多个资源(例如 Stand + Gate + Belt + Counter),每类资源对应多个 ResourceAssignment1:N)。
  • 一个 Resource 在时间轴上对应多个 ResourceAssignment1:N),但同一资源的占用窗口不得重叠(冲突即告警)。
  • Alert 可关联到 Flight,亦可关联到具体 Resource/ResourceAssignmentN:1)。

3.5.1 主键与唯一性约束(高层口径)

  • Flight:建议区分
    • flight_key(业务唯一键):carrier + flight_number + op_date + leg_no
    • flight_id(系统主键):内部生成的不可变 ID(推荐 UUID/雪花 ID)。
  • Resourceresource_type + resource_code(或 resource_id)唯一。
  • ResourceAssignment:同一 resource_type + resource_idtime_window 不允许重叠;若发生则必须产生冲突告警并进入人工/规则裁决。

3.6 Flight 状态模型(最小状态机,MVP)

为支撑“当前态查询”和“事件订阅”,AODB 对 Flight 的当前态至少需要统一以下字段口径:

  • 时间类:计划(Scheduled)、预计(Estimated)、实际(Actual)三组时间;MVP 强制覆盖里程碑相关时间(如 EOBT/TOBT/TSAT/ALDT/EIBT)。
  • 资源类:当前生效的 Stand/Gate/Belt/Counter 分配(可为空),并能追溯来源与覆盖原因。
  • 质量类:是否存在冲突/待裁决标记(可由 DataQualityFlag/Alert 汇总而来)。

最小状态机(示意,非穷尽):

  • Planned:已导入计划但无运行动态。
  • Active:已接收运行动态/里程碑并持续更新。
  • Completed:已到达关键收敛里程碑(例如到位/关舱等)并可进入归档策略。
  • Cancelled:取消/无效(保留审计与历史,避免硬删除)。

状态迁移原则:

  • 状态迁移由“里程碑事实”驱动,不直接由单个外部系统声明。
  • 若存在冲突或裁决,状态不回滚到更早阶段,但可产生“更正事件/裁决事件”并更新当前态字段,同时保留历史。

3.7 历史、快照与可追溯(MVP

为兼顾实时查询与审计追溯,MVP 推荐采用以下高层模式:

  • CurrentState(可变):保存 Flight/Resource 的当前态,用于低延迟查询与看板展示。
  • EventLog(追加):保存标准化后的业务事件与关键变更(MilestoneUpserted、ResourceAssigned、AlertRaised 等),用于回放、对账与审计。

要求:

  • CurrentState 的任何关键字段变更都必须能在 EventLog 中找到对应的原因事件(或裁决事件)。
  • 对外“历史回放”能力通过 EventLog/时间范围过滤实现;不要求首期提供全量任意时点快照,但必须支持“关键链路回放与审计抽样”。

为对齐“实时计算引擎为 MVP”以及可追溯与可审计要求,MVP 对计算/规则/编排做明确分工:

  • Flink(流处理/实时计算):
    • 里程碑派生与聚合(例如从多源事件推导统一里程碑视图)。
    • 预测类计算的在线聚合与发布(EIBT/EXIT/EXOT 等的估计值生成/更新)。
    • 复杂事件检测(CEP):异常模式识别与实时指标聚合。
  • Drools(规则判定/可配置/可追溯):
    • 延误/冲突/阈值告警规则与资源分配约束校验规则。
    • 规则版本管理与灰度:规则变更必须可回放验证,避免误报/漏报。
    • 规则执行结果必须可追溯(输出触发条件、命中规则、输入快照摘要)。
  • Temporal(工作流编排/长事务/补偿):
    • DLQ/人工复核闭环:解析失败→任务分派→复核结果→重放/裁决事件输出。
    • 跨系统补偿流程:当外部源延迟/更正导致状态回补时,编排补偿与通知。
    • 关键处置流程:告警处置、资源冲突裁决的状态流转与审计留存。

验收口径(与 6.4 对齐):

  • 对任一预测/告警/裁决结果,能够通过事件链路回放解释“数据从哪来、规则如何命中、流程如何流转”。

4. 关键数据流(初版)

4.1 航班计划导入流

  1. 外部系统提交 SSIM/AIDX 数据。
  2. 接入层完成解析与标准化。
  3. Flight Service 写入 AODB 主库。
  4. 业务层发布航班状态事件给订阅方。

4.2 运行态更新流

  1. 空管/航司发送运行动态(如 ALDT、TOBT)。
  2. Milestone Service 更新关键节点。
  3. Resource Service 根据最新状态重算资源占用。
  4. Alert Service 在冲突或延误时触发通知。

4.3 事件一致性与异常处理约束

4.3.1 事件类型清单(MVP,建议最小集)

  • FlightImported:航班计划已导入并标准化。
  • FlightUpdated:航班关键字段(计划/预计/实际/取消等)发生变更。
  • MilestoneUpserted:里程碑写入/更正(含来源、可信度与裁决)。
  • ResourceAssigned:资源已分配(Stand/Gate/Belt/Counter)。
  • ResourceUnassigned:资源已释放/撤销分配。
  • ResourceConflictDetected:资源占用冲突被检测到(需人工/规则裁决)。
  • AlertRaised:告警触发(延误/冲突/超阈值)。
  • AlertAcknowledged:告警已确认(进入处置中)。
  • AlertCleared:告警已关闭或解除。
  • DataQualityFlagged:产生数据质量标记(冲突、不可判定、低可信度等)。
  • ManualDecisionRecorded:人工裁决已记录(覆盖原因与证据)。

4.3.2 事件最小字段(Envelope

所有业务事件必须具备统一事件信封,确保可追溯、可回放、可演进:

  • event_id:全局唯一 ID(用于去重与审计)。
  • event_type:事件类型(见 4.3.1)。
  • schema_version:事件 schema 版本(向后兼容为原则)。
  • occurred_at:业务发生时间(来自上游或由系统推断)。
  • produced_atAODB 产生该事件的时间。
  • source:来源(与 3.4 一致)。
  • idempotency_key:幂等键(见 4.3.3)。
  • correlation_id:关联 ID(用于串联同一业务链路,如同一条 AFTN 报文/同一次导入批次)。
  • flight_id:关联航班(若适用)。
  • payload:事件负载(各事件类型自定义)。

4.3.3 幂等与更正语义(MVP

  1. 所有写入事件必须携带 idempotency_key,重复事件不得产生重复副作用(至少做到 at-least-once 输入下的“结果幂等”)。
  2. 幂等键的生成原则:尽量使用上游“不可变消息标识/序列号”(如报文 ID、批次+行号),避免仅用 event_time 作为幂等锚点。
  3. 更正(Correction)必须显式:
    • 若上游具备更正/撤销语义,则映射为 MilestoneUpserted(含更正标记或更高序列),同时保留旧值审计。
    • 若上游无更正语义,则 AODB 只能通过“裁决事件(ManualDecisionRecorded)”修正当前态,并保留冲突与裁决轨迹。

4.3.4 顺序保证边界与乱序处理(MVP)

  1. 顺序保证以 flight_id 为最小粒度:同一 flight_id 的事件按分区键落到同一顺序通道(例如 Kafka 分区),确保消费端可按序处理。
  2. 同一 flight_id 内部的处理顺序以 occurred_at 优先,其次以 source_sequence(若上游提供)或 AODB 生成的 ingest_sequence 作为并列消歧。
  3. 过旧/乱序事件处理策略:
    • 允许在可配置“乱序窗口”内重排;超窗事件进入旁路审计并生成 DataQualityFlag。
    • 不允许静默覆盖已确认事实;需触发冲突标记或进入人工复核。

4.3.5 写库与发事件一致性(Outbox/CDC,高层约束)

为避免“写库成功但没发事件/发了事件但没落库”的不可审计空洞,MVP 必须采用可验证的一致性策略之一:

  • 主选:Outbox Pattern + CDC
    • 业务服务在同一数据库事务内:更新 CurrentState,并写入 Outbox 表。
    • CDC/发布器将 Outbox 可靠发布到 Kafka,并在成功后标记已发布。
  • 约束:
    • 事件发布必须可重试;失败不得丢失,且必须可回放。
    • 对外订阅以 Kafka 事件为事实流(或由 Kafka 驱动 Hasura 订阅层的投影),避免多路源头。

4.3.6 解析失败、DLQ 与人工复核闭环(MVP)

  1. 解析失败或校验失败消息进入 DLQ,并生成“人工复核任务”(可由工作流编排系统承接)。
  2. 人工复核结果必须形成结构化输出:要么生成可重放的标准化事件,要么生成裁决事件(ManualDecisionRecorded)。

4.3.7 一致性口径(对齐需求)

  • 关键实体(Flight 当前态、ResourceAssignment 生效集、Alert 生命周期)在同一服务内采用强一致事务写入。
  • 跨服务/跨投影(例如检索、订阅投影、指标聚合)采用最终一致,目标:最终一致收敛 <= 30 秒
  • 验收方式:对账任务 + 抽检回放,必须能解释每一次不一致的根因(延迟、乱序、裁决、外部源缺陷等)。

4.3.8 降级策略(MVP

外部源异常抖动时启用降级策略:保留最近可信状态并标记数据可信度;对外订阅必须包含数据质量标记,避免下游误用。

4.4 资源分配规则(MVP

MVP 资源管理覆盖:Stand(机位)、Gate(登机口)、Belt(行李转盘)、Counter(值机柜台)。资源分配的目标不是“全局最优”,而是保证冲突可检测、可裁决、可追溯,并能支撑秒级传播与对外可解释。

4.4.1 时间窗口(time_window)口径

  • 分配窗口组成[start_time, end_time] + buffer_before + buffer_after
  • 锚点选择(MVP
    • Stand:以 ALDT/EIBT(到达侧)与 AOBT/ATOT(离港侧)相关里程碑推导占用区间;若缺失则回退到 Estimated。
    • Gate:以旅客流程相关里程碑(如登机开始/结束、关舱/推出)推导;缺失时回退到 TOBT/TSAT 近似。
    • Belt:以 AIBT/EIBT 起算,结合航班机型/行李量经验参数给出默认占用时长(可配置)。
    • Counter:以航班计划起飞前固定窗口(如 T-3h 至 T-45min)为默认规则(可配置并可按航司差异化)。
  • 滑动更新:当关键里程碑变更(延误、提前、取消、更正)时,ResourceAssignment 必须重算窗口并触发冲突检测。

4.4.2 冲突定义与缓冲策略

  • 冲突定义:同一 resource_type + resource_id 的生效占用窗口发生重叠即为冲突。
  • 缓冲策略:缓冲时间为规则参数(按资源类型/机场策略配置)。缓冲引入的冲突必须可解释(在告警中记录触发原因)。

4.4.3 分配优先级与人工覆盖

MVP 采用“规则优先 + 人工可覆盖”的策略:

  • 自动分配/调整由规则或简单启发式完成(不做全局优化),输出 ResourceAssigned/Unassigned 事件。
  • 人工覆盖(override)必须:
    • 记录 decision(原因/证据/操作者)并产生 ManualDecisionRecorded。
    • 可回滚(回滚同样写审计)。

4.4.4 与航班变更联动(延误/取消/换机型)

  • 延误:窗口整体右移或重新估算,先“保持原资源”并检测后续冲突;若冲突不可自动消解则触发 ResourceConflictDetected + AlertRaised。
  • 取消:释放资源并触发 ResourceUnassigned;若取消为更正则需保留历史并标记更正原因。
  • 换机型/机位限制变化:触发资源适配性校验,不满足则产生冲突并进入裁决流程。

4.4.5 输出与审计(最小要求)

  • 任何资源变更都必须能回答:谁分配的(规则/人工)、为什么分配、影响了哪些航班、是否引发冲突告警。

5. 首期上线范围(MVP

首期建议只覆盖以下最小闭环:

  • 航班计划导入与实时状态更新。
  • 基础资源分配(机位、登机口、行李转盘、值机柜台)。
  • 关键里程碑跟踪(EOBT/TOBT/TSAT/ALDT/EIBT)。
  • 延误与资源冲突告警。
  • 对外查询接口与订阅推送(REST + GraphQL Subscription)。

不纳入首期:

  • 复杂优化排班(全局优化模型)。
  • 深度 AI 预测与自适应调度。
  • 多机场统一调度中心能力。

5.1 上线门禁(Go/No-Go

  • 功能门禁:航班导入、里程碑更新、资源分配、冲突告警链路可端到端演示。
  • 性能门禁:在峰值吞吐与订阅并发条件下,端到端事件延迟达到最低可接受值(见 6.1/6.4/6.5 的压测口径)。
  • 数据门禁:核心实体对账通过率 >= 99.9%,无高危不一致项。
  • 安全门禁:统一认证鉴权生效,关键接口通过授权与审计检查。
  • 演练门禁:完成容灾恢复与回滚演练,RTO/RPO 达到最低可接受值并留存记录。

5.2 关键场景走读(MVP

本节用于评审阶段快速验证“闭环是否成立、可追溯是否可用、异常是否可处置”。

场景 1:SSIM 导入 → 标准化 → 发布 → 订阅

  1. SSIM 导入进入接入层(解析/校验/标准化)。
  2. Flight Service 在事务内写 CurrentState + Outbox。
  3. CDC/发布器将 Outbox 事件发布到 KafkaFlightImported/FlightUpdated)。
  4. Hasura/订阅层向终端/外部系统推送订阅事件或提供查询读。

验收点:重复导入不产生重复副作用;订阅可重连补偿;可追溯到导入批次与来源。

场景 2:多源里程碑冲突(以 ALDT 为例)→ 裁决 → 审计 → 对外呈现

  1. 两个来源上报同一航班 ALDT,发生冲突(source/confidence/序列不一致)。
  2. 系统按 3.4 裁决原则尝试自动裁决;不可判定则产生 DataQualityFlagged + 进入人工复核。
  3. 人工复核通过工作流记录 ManualDecisionRecorded,更新当前态并保留历史。
  4. 对外查询返回“当前值 + source/confidence + 裁决摘要”;订阅推送裁决事件。

验收点:冲突不静默覆盖;审计可还原变更前后与原因;最终一致收敛 <= 30 秒。

场景 3:延误导致资源冲突(以 Stand 为例)→ 告警 → 覆盖/回滚

  1. 延误触发 ResourceAssignment 窗口右移,检测到同机位窗口重叠。
  2. 产生 ResourceConflictDetected + AlertRaised;规则可给出建议(可选)。
  3. 调度人工覆盖资源分配(记录 decision),触发 ResourceAssigned + ManualDecisionRecorded。
  4. 如需回滚,回滚同样形成事件与审计。

验收点:冲突检测可解释;覆盖/回滚全链路可追溯;订阅方能收到变更并理解可信度。

6. 非功能目标(初步)

  • 可用性:支持 7x24 运行。
  • 实时性:核心状态更新达到秒级可见。
  • 可追溯:关键状态变化具备审计记录。
  • 安全性:统一认证鉴权与最小权限控制。

6.2 对外接口(MVP 合同口径)

MVP 对外提供“查询 + 订阅”两类能力,并明确北向治理边界:

  • 北向入口:统一经 API Gateway(Kong)进入,执行认证鉴权、限流、审计与路由治理。
  • 接口形态
    • REST:面向外部系统的标准查询与批量拉取。
    • GraphQL(Hasura):面向运营终端与需要实时订阅的消费者,提供订阅与细粒度字段选择。

6.2.1 查询(Query)最小约束

  • 核心查询对象:Flight(当前态)、Milestone(明细/时间序列)、ResourceAssignment(生效集)、Alert(生命周期)。
  • 过滤维度:op_dateflight_key/flight_id、状态(Planned/Active/Completed/Cancelled)、资源类型与资源编号。
  • 分页与一致性:必须支持稳定分页(cursor/offset 任选其一作为主选并写清),并能返回“数据版本/更新时间”以支持下游对账。
  • 数据质量:关键字段必须返回 source/confidence,存在冲突时必须返回“冲突标记/待裁决标记”。

6.2.2 订阅(Subscription)最小约束

  • 订阅源:以 AODB 标准化业务事件为事实流(见 4.3 事件契约)。
  • 订阅粒度:按 event_typeflight_id/op_date 过滤;支持“关键事件流”订阅(只推 Flight/Milestone/Resource/Alert 的变更摘要)。
  • 可靠性:至少提供 at-least-once 投递语义;订阅必须支持断线重连与补偿(基于 event_id 或可回放游标)。
  • 限流与隔离:对外订阅连接数、推送速率、单租户资源上限必须可配置并可观测。

6.2.3 鉴权、限流与审计(Kong 治理边界)

  • 鉴权:OIDC/OAuth2Keycloak)为统一入口;按角色/Scope 控制 Flight/Resource/Alert 的读写与订阅权限。
  • 限流:对“查询 QPS、订阅连接数、推送速率”分别限流,且需要能按租户/客户端维度配置。
  • 审计:所有“写入类操作”(包含人工裁决、资源覆盖、告警处置)必须审计;对外查询/订阅的访问也需记录最小审计日志(用于追溯与合规)。

6.3 安全与合规(MVP

  • 认证授权:OIDC/OAuth2 + RBACKeycloak),最小权限原则。
  • 传输安全:北向 TLS;服务间建议启用 mTLS(与服务网格能力对齐)。
  • 数据分级:至少区分“运营敏感字段”和“可共享字段”,并在接口层实现字段级权限控制(GraphQL 尤其需要明确)。

6.1 最小 SLO(评审口径)

指标 目标值 最低可接受值
可用性 月度 99.95% 月度 99.9%
事件处理延迟 P95 <= 2 秒 P95 <= 5 秒
容灾恢复 RTO <= 30 分钟,RPO <= 5 分钟 RTO <= 2 小时,RPO <= 15 分钟
审计覆盖率 100% 关键变更可追溯 99.9% 可追溯

6.4 验收与可观测口径(MVP

为确保 SLO 可被验证,MVP 至少需要定义并采集以下运行指标:

  • 事件端到端延迟:ingest → commit(CurrentState/Outbox) → publish(Kafka) → deliver(订阅端)(按 P95/P99 统计)。
  • DLQ 率:解析失败/校验失败/旁路审计占比与趋势。
  • 幂等命中率:重复事件去重命中比例(用于评估上游质量与系统健壮性)。
  • 冲突率与 MTTR:资源冲突/里程碑冲突发生频率与平均处置时间。
  • 订阅健康:订阅连接数、推送速率、订阅落后量(按租户/客户端)。

验收方式(与需求对齐):

  • 压测:在峰值吞吐假设下验证 P95 延迟达标。
  • 对账与抽检:验证强一致实体与最终一致收敛(<= 30 秒)的抽样结果可解释。
  • 容灾演练:验证 RTO/RPO 达到最低可接受值并留存演练记录。

6.5 容量基线与伸缩策略(MVP 口径)

本节用于把“500 万至 3000 万吞吐机场”的范围,映射为可评审、可压测的容量假设(范围值即可,后续以压测修正)。

6.5.1 容量假设(建议范围)

  • 航班量:约 150–900 架次/日(按机场规模与航班结构波动)。
  • 事件密度:每航班 20–80 条关键事件(计划导入、动态更新、里程碑、资源变更、告警与裁决)。
  • 峰值事件速率:10–200 events/s(含短时抖动与重放)。
  • 订阅规模:10–500 并发订阅连接(运营终端、航司、地服、AOC 等),推送速率按租户限额。

6.5.2 伸缩策略(高层约束)

  • 事件骨干(Kafka):按 flight_id 分区保证同航班顺序;通过增加分区与消费组并行度扩展吞吐。
  • 流处理(Flink):关键作业(预测/CEP/聚合)支持水平扩展;必须具备状态一致性与可恢复能力(与 RTO/RPO 对齐)。
  • 事务库(PostgreSQL/TimescaleDB):写路径优先保证强一致与审计;读路径通过缓存与只读副本(可选)缓解压力。
  • 检索(OpenSearch):仅承载检索/分析投影,不作为强一致事实源;索引延迟纳入最终一致指标。

6.5.3 压测口径(最小)

  • 压测必须覆盖:
    • 峰值事件速率 + 乱序/重复输入(验证幂等与乱序策略)。
    • 订阅并发 + 推送速率上限(验证网关限流与订阅补偿)。
    • DLQ 率提升场景(验证人工复核闭环与系统降级)。

7. 迭代方向

Phase 1:完成 MVP 闭环并上线单机场。

Phase 2:补充预测能力和规则优化,提高运行效率。

Phase 3:增强容量与容灾,支持多机场扩展。

8. 文档边界与引用

  • 本文档仅定义初步高层设计,不展开详细数据字典、接口字段级协议和部署参数。
  • 技术栈主选、备选触发条件以 airport-wiki/concepts/aodb/开源技术栈选型决策.md 为准。
  • 需求边界、验收基线以 airport-wiki/concepts/aodb/AODB 核心需求提炼.md 为准。