Module Document
基础架构 · 指令协议平台技术选型
基础架构 ·
指令协议平台技术选型
版本: v0.1
日期: 2026-07-06
归属: 基础架构 / 指令协议平台
1. 选型背景与约束
| 约束 |
说明 |
| 协议双轨 |
Protobuf(固件/云端高效通信)+ JSON
Schema(私网控制指令兼容)并存。 |
| SDK 多语言 |
固件端 C,云端 Go,App 端 TypeScript,必须自动生成。 |
| 禁止私改 |
已发布版本技术层面 immutable,不依赖流程约束。 |
| 评审集成 |
评审流程集成飞书审批,减少工具切换。 |
2. 候选方案对比
协议定义格式
| 方案 |
优势 |
劣势 |
场景 |
| Protobuf 3(推荐主协议) |
高效编解码、强类型、多语言生成成熟 |
需 proto 工具链 |
固件↔︎云端核心通信 |
| JSON Schema |
人类可读、调试方便、兼容 REST |
无原生 SDK 生成 |
私网控制指令过渡 |
| FlatBuffers |
零拷贝、极致性能 |
工具链不如 proto 成熟 |
超高性能场景备选 |
SDK 生成工具链
| 方案 |
优势 |
劣势 |
场景 |
| buf CLI(推荐) |
Breaking change 检测、lint、多语言生成、与 GitLab CI 集成 |
学习曲线 |
Proto SDK 生成 |
| protoc 原生 |
标准工具 |
无 lint/breaking change 检测 |
与 buf 配合使用 |
| openapi-generator |
JSON Schema/OpenAPI → SDK |
生成质量参差 |
JSON Schema 端 |
版本不可变存储
| 方案 |
优势 |
劣势 |
场景 |
| PostgreSQL 行级锁定 + API 层 403(推荐) |
简单可靠,技术强制 |
需 API 层配合 |
版本锁定 |
| 对象存储 immutable flag(OSS/S3) |
物理层面不可修改 |
协议变更仍可新建覆盖 |
制品存储配合使用 |
签名方案
| 方案 |
优势 |
劣势 |
场景 |
| Ed25519(推荐) |
轻量、快速、固件 C 库成熟(libsodium) |
需管理私钥 |
SDK 签名校验 |
| RSA-2048 |
广泛支持 |
密钥大、签名慢 |
老系统兼容 |
评审流程集成
| 方案 |
优势 |
劣势 |
场景 |
| 飞书审批 Webhook(推荐) |
团队已在飞书,响应快 |
依赖飞书可用性 |
协议评审通知 |
| GitLab MR Approval |
开发者友好 |
非开发人员(固件方)体验差 |
技术评审补充 |
3. 推荐方案
| 层级 |
推荐 |
| 主协议格式 |
Protobuf 3 |
| 兼容格式 |
JSON Schema(私网指令过渡期) |
| SDK 生成 |
buf CLI + protoc |
| C SDK |
protoc-c 生成 + libsodium 签名校验 |
| Go SDK |
protoc-gen-go |
| TS SDK |
protoc-gen-ts / ts-proto |
| 版本锁定 |
PostgreSQL 行级锁定 + API 403 |
| SDK 签名 |
Ed25519(libsodium) |
| 评审集成 |
飞书审批 Webhook |
4. 迁移 / 切换成本
| 场景 |
成本评估 |
| protoc 原生 → buf CLI |
低:配置 buf.yaml,CI 替换命令,1 周。 |
| JSON Schema 过渡期 → 全面 Proto |
中:固件/App 逐步迁移,需协议兼容窗口,4-8 周。 |
| Ed25519 → RSA |
低:libsodium 支持 RSA,替换签名算法,1 周。 |
5. 决策记录
| 决策 |
结论 |
日期 |
决策人 |
| 主协议格式 |
Protobuf 3 |
2026-07-06 |
架构 Owner |
| SDK 生成工具 |
buf CLI + protoc |
2026-07-06 |
架构 Owner |
| SDK 签名 |
Ed25519 |
2026-07-06 |
架构 Owner |
| 版本锁定机制 |
DB 行级锁 + API 403 |
2026-07-06 |
架构 Owner |
| 评审集成 |
飞书审批 Webhook |
2026-07-06 |
架构 Owner |