以问答方式整理我在微服务规模增大后开始补上的两类结构化文档:ADR 记录"为什么这样",catalog-info.yaml 记录"是什么、归谁、依赖什么"。
SLO 与多窗口多 burn-rate 告警:一次 Prometheus 落地整理
以问答方式整理 SLO + error budget + multi-burn-rate 告警的工程实现:为什么传统阈值告警容易噪声大或滞后、burn rate 14.4× 和 6× 数字怎么来,以及 Prometheus recording rules 与 alert 可以怎么落地。
软件供应链最小基线:SBOM + cosign 镜像签名
以问答方式拆解软件供应链最小基线:用 CycloneDX 生成 SBOM、用 cosign keyless 签名容器镜像、把 SBOM 作为 cosign attestation 绑定到镜像。覆盖为什么、具体怎么做、以及绕不开的 tradeoff。
API 与 event contract 兼容性保障:工具机制与正确用法
以问答方式拆解我在 Shop Platform 中对 API 与 event contract 的兼容性保障:BFF 对外用 oasdiff 守 OpenAPI spec;内部 BFF→MS 和 MS→MS 用 JSON Schema 快照补 japicmp 的盲区;Kafka 事件用相同手法加 per-event schemaVersion。
Spring Boot 3.5 BFF 出站 HTTP 客户端:连接池、超时与 HTTP/2 实战
BFF 调用多个下游 microservice 时,连接池要不要按服务隔离?connectTimeout / readTimeout 怎么 per-service 配置?Spring Boot 3.5 内部服务用 h2c 要避哪些坑?把这三个常见问题理清楚。
shop-starter-http-client 集成指南:从零到第一个 @HttpExchange 客户端
Step-by-step 指南,按这套步骤通常可以在 Spring Boot 3.5 BFF 工程里跑起第一个 @HttpExchange 出站客户端。
Homelab 消息通知:Alertmanager 通过 Gotify 推送告警
在 Homelab K3s 集群中,通过部署 alertmanager_gotify_bridge 将 Prometheus Alertmanager 的告警推送到 Gotify,实现自托管消息通知。记录从 Vault 存储 Token、ESO 同步 Secret、到 Alertmanager 路由配置的完整步骤。
shop-starter-http-client:Spring Boot 3.5 微服务 HTTP 客户端基础设施设计
Spring Boot 3.5 + Java 25 微服务下,记录我如何用一个共享 starter 统一出站 HTTP 客户端的身份传播、错误语义、可观测性和弹性。
用 gws 给 Python 脚本提供 Google OAuth 凭据时的一些注意点
记录一次把 gws 用在 Python 脚本上的实践经验:登录时用 –readonly 或 –scopes 明确授权范围,导出凭据后在 google-auth 里显式传入 scopes。
微服务契约兼容性的五层防线:从 ArchUnit 到 japicmp
只共享 contracts 往往还不够——按我目前的理解,更稳妥的做法是把 ArchUnit、japicmp、Deprecation/Sunset 头、ignore-unknown、WireMock 这些检查组合起来。本文记录 Shop Platform 里的落地方式和一些可参考资料。