综合练习
为一个新服务选语言并写 ADR。
40 分钟
综合练习
把本 track 串起来:为一个假想新服务选语言、画边界、写 ADR,并列出与 Java 主栈及 gRPC 的集成点。不必真写 Go/Rust 全量代码——重点是 可审查的架构叙述,与 pl-pick 纪律一致。
学习目标
- 独立完成一次 polyglot 选型 ADR(背景 / 决策 / 后果)
- 对照 pl-intro 至 pl-polyglot 的检查清单
- 衔接 java-fundamentals、spring-cloud-essentials、grpc-essentials
场景(固定)
CodeRoadMap 要新增 「课时全文搜索」服务:
- 读 MySQL 已有
cf_lesson.content_md,建倒排索引 - P99 延迟目标 < 50ms,QPS 峰值高于现有 Java CRUD
- 团队主力 Java,仅 1 人熟悉 Go
- 需被 Java backend 与未来 nodejs-essentials BFF 调用
任务清单
1. 选型(pl-pick / pl-compare)
- 在 Java 扩展现有服务 / 新 Go 服务 / Python 侧车 中选一(可组合,但须主语言唯一)
- 用五维表(团队、场景、遗留、生态、运维)各写一句论据
2. 互操作(pl-interop / pl-polyglot)
- 定 对外契约:REST OpenAPI 或 grpc-proto(二选一,写清 reason)
- 画 ASCII 架构:Gateway、搜索服务、Java 订单/课时域、索引更新路径(异步可选)
3. 并发与工具链(pl-concurrency / pl-ecosystem)
- 说明索引构建 离线/在线 如何用并发(Java VT、Go goroutine、或队列)
- 列出该服务 repo 根目录应有哪些文件(如
go.mod或pom.xml、Dockerfile、.github/workflows)
4. ADR 交付物
# ADR-PL-001: 课时全文搜索服务语言选型
## 状态
Proposed | Accepted
## 背景
(3–5 句,含 SLO 与团队)
## 决策
主实现语言:___
集成:Spring Cloud Gateway / gRPC / 消息 ___
## 后果
优点:
- ...
风险与缓解:
- ...
5. 交叉链接自检
文中至少引用本站 track 各一处: