Files
my-vault/airport-wiki/concepts/aodb/开源技术栈选型决策.md
T
windyboy 6211605cdb docs(aodb): add initial high-level design package
Capture a clear baseline across requirements, stack choices, and high-level architecture so review and implementation can align on scope and quality gates.
2026-04-13 15:27:20 +08:00

5.6 KiB

开源技术栈选型决策

1. 决策目标与原则

本文档用于对 AODB 技术栈做唯一主选决策,避免多方案并列导致实施阶段反复。

决策原则:

  1. 满足中型机场场景下的稳定性与可维护性。
  2. 优先选择成熟开源生态和团队可落地能力。
  3. 对核心路径采用单一主选,备选仅定义触发条件。
  4. 支持私有化部署和后续多机场扩展。

2. 技术栈总览(主选)

分层 主选方案 说明
主数据存储 PostgreSQL 16 关键业务数据强一致事务
时序存储 TimescaleDB 里程碑与遥测时序数据
缓存与实时态 Redis 7 (Valkey) 高频状态读取与短期流式缓存
搜索分析 OpenSearch 2.x 全文检索、日志分析、开源友好
事件总线 Apache Kafka 3.x 高吞吐与持久化事件骨干
流处理 Apache Flink 1.19 低延迟有状态流计算与 CEP
协议集成 Apache Camel AIDX/AFTN/SITA 协议适配
API 网关 Kong Gateway OSS 鉴权、限流、路由治理
GraphQL 层 Hasura 实时订阅与快速 API 暴露
规则引擎 Drools 复杂规则可配置与可追溯
工作流编排 Temporal 长事务与补偿流程编排
认证授权 Keycloak 24 OIDC/OAuth2 与 RBAC
可观测性 Prometheus + Grafana + Jaeger + Loki 指标、追踪、日志统一观测
容器平台 Kubernetes + Helm 标准化部署与扩缩容
服务网格 Linkerd 轻量 mTLS 与服务治理
对象存储 MinIO S3 兼容对象存储
前端与终端 React + TypeScript + PWA 看板与移动访问统一前端栈

3. 关键决策与备选触发条件

决策项 主选 备选 触发备选条件 说明
搜索引擎 OpenSearch Elasticsearch 必须依赖特定商业插件时 优先开源许可证与成本可控
GraphQL 引擎 Hasura PostGraphile 已有团队深度 PostgreSQL 函数驱动实践且无需订阅增强时 Hasura 对实时订阅和权限模型更直接
工作流引擎 Temporal Airflow 主要需求转为离线批任务编排时 AODB 更偏在线长事务与补偿
服务网格 Linkerd Istio 多集群高级流量治理和复杂策略显著增加时 中型机场先以轻量可运维为优先
移动端策略 PWA React Native 必须深度离线和原生硬件能力时 PWA 可降低交付复杂度和维护成本

4. 分层选型理由(精要)

4.1 数据层

  • PostgreSQL + TimescaleDB 统一 SQL 体验,降低多数据库运维复杂度。
  • Redis 负责热点读和实时态缓存,减轻主库读取压力。
  • OpenSearch 负责检索和日志分析,不承载强一致事务。

4.2 消息与计算层

  • Kafka 作为唯一事件骨干,保障事件可回放与可追溯。
  • Flink 承担里程碑计算、异常检测和实时指标聚合。
  • Temporal 承担长流程编排(例如异常补偿和人工复核闭环)。

4.3 集成与接口层

  • Camel 统一协议适配,减少自研连接器维护成本。
  • Kong 提供统一北向入口及治理能力。
  • Hasura 提供面向运营终端的订阅能力,降低 API 开发负担。

4.4 安全与基础设施层

  • Keycloak 提供统一身份与授权管理。
  • Linkerd 提供轻量服务间 mTLS 与可观测能力。
  • Kubernetes + Helm 提供标准化部署与环境一致性。

5. 风险与缓解

风险 影响 缓解措施
Kafka/Flink 运维门槛高 实施初期效率下降 提供标准化模板、最小可运行拓扑和 SRE Runbook
多协议接入数据质量不稳定 里程碑计算误差 建立标准化校验、死信队列和人工复核流程
规则引擎规则膨胀 告警误报或漏报 规则分层管理、灰度发布和回放测试
文档与实现偏离 评审通过后落地失真 将关键决策同步为 ADR 并纳入变更流程

6. 版本与升级策略

  • 技术栈版本采用“年度主版本评审 + 季度补丁更新”策略。
  • 升级优先级:安全补丁 > 稳定性修复 > 新功能。
  • 升级前必须完成回归测试、性能基线对比和回滚演练。

7. 与架构文档的边界

  • 本文档回答“选什么、为什么选、何时切备选”。
  • 具体数据模型、事件契约、流程编排细节在 开源机场运营数据库(AODB)高层设计文档.md 中定义。