Skip to content

技术栈决策 ​

3.1 语言选择 ​

领域技术结论
Controller / Web APIRust + Axum + Tokio主选
Native WorkerRust + Tokio主选
SupervisorRust + Tokio主选
核心协议Protobuf统一契约
KBEngine BridgePython引擎脚本环境要求
BigWorld Bridge按实际 SDK / Bot 环境决定待验证
Python SDKPython后续提供
Lua SDKLuav1 暂不实现
C++ Adapter独立进程或隔离 shim按需
Go SDKGo后续提供,不进入核心
报告分析Rust 主流程;Python 可作为离线分析工具不影响核心

3.2 Rust 生态建议 ​

用途建议组件备注
Async RuntimeTokio核心异步运行时
HTTPAxumController API
RPCTonicgRPC 控制通道
Serializationprost / serdeProtobuf 与配置
DatabaseSQLx常驻 Controller 的元数据存储
CLIClapCLI
Logging / Tracingtracing结构化日志
MetricsOpenTelemetry Rust + 自定义聚合指标导出
HistogramHDR Histogram 兼容实现统一参数与 blob 版本
Parquetparquet-rs / Arrow版本与性能需验证
Report QueryDuckDB可作为外部分析引擎,不强制嵌入

依赖版本应在 Phase 0 建立版本矩阵和最小可运行原型后冻结。不要在计划书中提前写死未经验证的 crate 版本。

3.3 是否必须引入数据库 ​

  • CLI-only 单次 Swell:可以使用文件系统、Parquet、JSON 和 DuckDB,不需要常驻数据库。
  • 常驻 Dashboard、多用户、多 Swell 并发管理:需要持久化 Controller 元数据,建议 PostgreSQL。
  • 单机开发模式:可选 SQLite。
  • 压测明细和高频时间序列不应全部写入 PostgreSQL;优先文件分区和 Parquet。

Controller 的元数据存储与实验数据存储必须分离。