基于当前项目的一次接入记录,整理 Spring Boot 3.5 + Java 25 下接入 OpenTelemetry 的一些做法:尽量依赖自动配置、启用虚拟线程、结合 JFR 持续性能分析,并把 Traces / Metrics / Logs / Profiles 串起来。
Java 25 on Kubernetes:默认配置未必适合容器
Java 25 跑在 Kubernetes 上,默认堆只用了 25%,CPU 节流的影响也比预期大,这几组实验数据和值得优先验证的配置项放在一起。
K8s CPU 配置:requests/limits 各管什么、Throttling 怎么发生、谁先被驱逐
结合 Homelab 场景整理 Kubernetes 的 CPU requests/limits、CFS throttling、QoS 类别与节点压力驱逐机制,以及我当前采用的资源配置思路。
用 mirrord 把本地进程接入 K8s 集群:从 Demo 到真实调试实践
通过一个 Spring Boot + MySQL + kind 的 Demo,记录如何用 mirrord 让本地进程「假装」自己是 K8s 里的 Pod,无需重新打镜像就能接入集群资源进行调试。
本地 Kind K8s 开发环境:问题驱动的工具选择与 Tradeoff
本地用 Kind 跑 Spring Boot 微服务,工具按问题挑:镜像循环慢就上模块级增量构建,改完代码快速验证交给 Tilt,IDE 打断点用 mirrord,GitOps 演练单独拉一个 ArgoCD。
Spring Boot 3.5 的 h2c 会不会比 HTTP/1.1 快:两个压测实验的结论
围绕 Spring Boot 3.5、JDK HttpClient 和 h2c,我做了一次完整压测:先观察 h2c 不会天然更快,再设计一个 0 错误的正例,展示它在特定场景下为什么会比 HTTP/1.1 更占优。
How a Performance Optimization Caused Cascading Redis Timeouts in Spring WebFlux
A seemingly harmless removal of publishOn(Schedulers.boundedElastic()) led to cascading Redis timeouts in production. This post explains how Spring’s @Cacheable blocks the Netty event loop when used with RedisCacheManager, and why BlockHound failed to catch it.
Spring Boot 3 开启 HTTP/2:h2 和 h2c 在什么场景下更合适?
想给 Spring Boot API 加速?来聊聊 HTTP/2 的两种模式:带加密的 h2 和“裸奔”的 h2c,看看在微服务里怎么配置和避坑。
Spring Boot 3.5 + Java 25 + Cloud Native 系列(七):架构 Quality Gates
架构约束很难只靠 Code Review 口头约定。Shop Platform 这边的护栏是 19 条 ArchUnit 规则、6 个 Maven Archetype、WireMock contract testing 和 API 路径版本化校验。
Spring Boot 3.5 + Java 25 + Cloud Native 系列(六):插件化活动引擎
activity-service 是一个插件化的互动游戏引擎,支撑砸金蛋、抢红包、集卡、虚拟养成这些活动。GamePlugin SPI 留的扩展点、Redis Lua 怎么保证抢红包的原子性、AntiCheatGuard 拦什么、水平扩展的前提是什么,都按当前实现来讲。