阅读时间:1 分钟
0 字

技术选型 ​

技术选型按“首期必需、负载触发后引入”分层,避免在业务闭环验证前维护过多基础设施。

已选首期方案 ​

领域推荐方案理由
管理端框架React + TypeScript构建页面和类型化业务组件。
样式系统Tailwind CSS提供样式工具类与主题变量映射。
通用组件shadcn/ui按需引入并维护按钮、表单、弹窗等组件源码。
交互基元Radix UI管理端选用 shadcn/ui 的 Radix 版本;相关组件提供键盘、焦点与弹层等底层行为。
文档站VitePress 1.x当前已经运行,Markdown 驱动,构建简单。
后端Java 21 + Spring Boot适合企业集成、事务、服务治理和长期运行的核心服务。
构建Maven Wrapper统一 Java 构建版本并便于 CI。
主数据库PostgreSQL事务、约束、JSONB、索引和扩展能力覆盖核心元数据与状态。
对象存储S3 兼容接口保存不可变快照、大型证据和导出物。
契约OpenAPI + JSON Schema + AsyncAPI 风格事件 Schema支持代码生成、兼容性检查和多协议复用。
可观测OpenTelemetry + Prometheus + Grafana统一追踪、指标与可视化。

Node.js 适合前端构建和轻量协议适配,但核心 Runtime、Action 事务和连接器治理需要更强的类型、并发、事务与企业集成能力,因此采用 Java。Python 适合算法、数据科学和离线任务,可作为 Function Worker 或扩展运行时,不作为核心控制面主语言。

管理端各层的职责 ​

层次内容放置位置(计划)
页面与业务组件React 页面、本体建模器、关系图、审批面板;用 TypeScript 定义 Props、状态和交互。apps/ontology-console/src/pages/、src/features/
通用组件从 shadcn/ui 按需引入的组件源码;选用 Radix UI 版本。apps/ontology-console/src/shared/components/ui/
设计令牌与样式以 shadcn/ui 主题变量为起点,用 Tailwind CSS引用;增补草稿、发布、审批、风险等业务状态及明暗主题。apps/ontology-console/src/shared/styles/
前后端数据契约请求、响应和错误结构由 OpenAPI/Schema 定义,再生成前端类型与客户端。根目录 contracts/ → src/shared/api/

设计令牌是视觉约定,组件契约是 Props、状态与行为约定;两者都不放入跨服务 contracts/。多个前端应用需要复用时,再考虑抽出独立的令牌或 UI 包。

状态:选型已确认,尚未实施。 apps/ontology-console/ 目前只有目录骨架,没有安装 React、Tailwind CSS、shadcn/ui 或 Radix UI。

初始化时应按照 shadcn/ui Vite 指南创建应用,并用 -b radix 明确选择 Radix 基座。官方 --monorepo 模板会另外创建 apps/web 和 packages/ui;本仓库已有目录结构,按现有 apps/ontology-console/ 集成。

按需引入 ​

组件触发条件
Redis模型、策略或热点结果缓存收益经过测量,且失效策略明确。
Kafka + Debezium需要持续 CDC、事件重放、多消费者或高吞吐异步处理。
Temporal审批等待、长流程、复杂重试和补偿超出数据库任务表可维护范围。
ClickHouse审计和用量分析规模使 PostgreSQL 成本或延迟不可接受。
Trino大规模跨源分析成为主要负载,简单适配器执行不能满足。
OpenFGAReBAC 关系规模和查询复杂度需要专用授权引擎。
OPAABAC 与环境策略需要集中表达和独立发布。
Keycloak需要统一 OIDC、企业身份联邦和服务账户管理。
图数据库多跳路径和图算法有明确规模、延迟与运维收益。

首期不做 ​

  • 不自研通用分布式 SQL 引擎。
  • 不把所有实体同步到图数据库。
  • 不同时部署全部可选中间件。
  • 不允许 Runtime 执行调用方提供的任意 SQL。
  • 不以共享数据库表替代服务契约。

选型复核门槛 ​

引入新基础设施前需要记录负载、当前瓶颈、预期收益、数据迁移、故障模式、监控、备份、团队维护成本和退出方案。长期架构决策写入 docs/adr/,本页只保留当前推荐结果。