Files
Edu/infra/port-allocation.md
SpecialX faaaf29f67 docs: ai 协作文档体系重构与多 ai 仲裁结果落地
1.AI 协作文档体系重构(objections/worklines/contracts+matrix.md)

2.coord 仲裁文档(final-decisions/cross-review/final-rulings/orchestration)

3.各服务 01/02 文档补全

4.共享包初始化(shared-ts/shared-go/hooks/ui-components/ui-tokens)

5.Proto 契约补全

6.004 架构影响地图更新

7.端口分配表

8.设计规格文档
2026-07-10 12:58:22 +08:00

9.0 KiB
Raw Permalink Blame History

Edu 全局端口分配表

版本1.0 日期2026-07-09 维护者coordAI 协调者) 关联文档:004 架构影响地图 §1.2full-stack-runbook

本文件是 Edu 项目所有服务端口的唯一源。任何端口新增/变更必须由 coord 同步更新此文件 + 004 §1.2。


1. 端口分配原则

  1. 不冲突:同一端口不可被两个服务占用(含开发/生产环境)
  2. 段位划分
    • 8080-8089Go 网关层api-gateway / push-gateway
    • 3000-3099NestJS BFF + 业务服务HTTP
    • 4000-4009Next.js 微前端 portaldev server / 生产端口)
    • 50051-50099gRPC 服务端口
    • 9090-9099基础设施Prometheus / Grafana / Alertmanager
    • 9100-9199Exporternode/mysqld/redis
  3. dev/prod 一致:开发与生产环境使用相同端口,避免环境差异
  4. 占用即登记:新增服务必须先在此表登记端口,再写代码

2. Go 网关层8080-8089

服务 HTTP 端口 gRPC 端口 说明 阶段
api-gateway 8080 纯 HTTP 反向代理,不做 HTTP↔gRPC 转换 P1
push-gateway 8081 WebSocket + HTTP /internal/*coord 仲裁豁免 gRPC2026-07-09 P5

push-gateway gRPC 豁免说明ai-allocation §5 原要求 push-gateway 实现 gRPC PushService。coord 仲裁豁免,理由:(1) push-gateway 是基础设施层无流式推送场景;(2) 现有 HTTP /internal/push 已落地;(3) msg/student-bff 调用方改用 HTTP。50058 端口让给 ai 服务。


3. NestJS BFF + 业务服务3000-3099

服务 HTTP 端口 gRPC 端口 说明 阶段
iam 3002 50052 P2 启用 gRPC serverI1 裁决2026-07-09 修正) P2
teacher-bff 3003 BFF 不暴露 gRPC对下游走 gRPC P2
core-edu 3004 50053 含原 classes 服务(合并后) P3
content 3005 50054 Neo4j + ES P4
data-ana 3006 50055 HTTP 保留作 Gateway 直连降级gRPC 为 P4 主入口 P4
msg 3007 50056 通知中心 P5
ai 3008 50058 LLM 网关 P5
student-bff 3009 BFF 不暴露 gRPC P3
parent-bff 3010 BFF 不暴露 gRPC P4
classes 3001 已合并入 core-eduP3 P1 历史

端口空闲3000、3011-3099 预留扩展。


4. Next.js 微前端 portal4000-4009

Portal dev 端口 生产端口 MF 角色 阶段
teacher-portal 4000 4000 Shell 宿主 P2
student-portal 4001 4001 Remote P3
parent-portal 4002 4002 Remote P4
admin-portal 4003 4003 Remote P6

coord 仲裁2026-07-09

  • admin-portal §12.1 表格原写 3003与 teacher-bff 冲突),统一修正为 4003
  • admin-portal MF 配置 remotes.teacher 原写 http://localhost:3000,修正为 http://localhost:4000/teacher/remoteEntry.js
  • 4 端 dev/prod 端口一致,避免环境差异

5. gRPC 服务端口50051-50099

服务 gRPC 端口 暴露 Service 阶段
iam 50052 IamServiceP2 启用I1 裁决) P2
core-edu 50053 ExamService / HomeworkService / GradeService / AttendanceService / ClassService P3
content 50054 TextbookService / ChapterService / KnowledgeGraphService / QuestionService P4
data-ana 50055 AnalyticsService P4
msg 50056 NotificationService / NotificationPreferenceService / NotificationTemplateService P5
ai 50058 AiService P5
push-gateway 50057 PushService 豁免(见 §2

端口空闲50051、50057、50059-50099 预留扩展。 push-gateway 50057:原计划预留,因 gRPC 豁免释放。50058 让给 ai 服务。


6. 基础设施端口9080-9199

服务 端口 说明
MySQL 3306 业务数据库external
Redis 6379 缓存 + 会话 + Pub/Sub
Kafka 9092OUTSIDE/ 29092INSIDE 双监听器
Kafka UI 9000 kafka-ui 容器
Zookeeper 2181 Kafka 协调
Debezium Connect 8083 CDC connector
ClickHouse 8123HTTP/ 9000TCP 数据分析宽表
Neo4j 7474HTTP/ 7687Bolt 知识图谱
Elasticsearch 9200HTTP/ 9300TCP 全文检索
Prometheus 9090 指标采集(--web.enable-lifecycle
Grafana 3000容器内与 teacher-bff 3003 不冲突,因 teacher-bff 在 host 网络
Alertmanager 9093 告警
Jaeger 16686UI/ 4317OTLP gRPC/ 4318OTLP HTTP 链路追踪
node-exporter 9100 主机指标host.docker.internal:9100
mysqld-exporter 9104 MySQL 指标
redis-exporter 9121 Redis 指标

Grafana 端口冲突风险Grafana 默认 3000与 teacher-bff 3003 不冲突(不同主机层),但开发环境若同主机部署需注意。建议 Grafana 改用 3030 避免混淆。


7. 变更记录

日期 变更 决策者
2026-07-09 初始创建,登记全部 15 服务 + 基础设施端口 coord
2026-07-09 仲裁 admin-portal 3003 → 4003MF 配置 3000 → 4000 coord
2026-07-09 仲裁 push-gateway 豁免 gRPC释放 5005750058 让给 ai coord
2026-07-09 classes 3001 标记为历史(已合并入 core-edu coord

8. 待办

  • P3 启用前iam gRPC 50052 / core-edu gRPC 50053 必须落地
  • P4 启用前content gRPC 50054 / data-ana gRPC 50055 必须落地
  • P5 启用前msg gRPC 50056 / ai gRPC 50058 必须落地
  • Grafana 端口考虑改为 3030 避免与 teacher-bff 混淆