大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把本 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 各一处:
- java-fundamentals
- nodejs-essentials 或 python-fundamentals 或 php-essentials
- spring-cloud-essentials
- grpc-essentials
加分(可选)
- 对比若用 Rust 写索引引擎、Java 写 API 层的 split(pl-rust + pl-interop)
- 引用 sc-feign 说明 Java 如何调非 Java(Feign 仅 HTTP;gRPC 用专用 client)
反思题
- 若六个月后 Go 服务无人维护,你的 ADR 里 缓解措施 是什么?
- 搜索与 Java 域服务 共享数据库写 吗?为什么?
- 回到 全栈路线图,应勾选哪些 backend / polyglot 节点?
小结
场景 → 维度 → 契约 → ADR → 平台统一——polyglot 合格的交付不过如此。 本 track 完结;深入某语言请进对应 fundamentals / essentials track,微服务治理继续 spring-cloud-essentials,跨语言 RPC 继续 grpc-essentials。