线上故障响应流程
凌晨 3 点,告警响了。你的第一反应是什么?本文是一份可落地的故障响应 SOP。 一、故障分级 1.1 P0——核心功能完全不可用,影响全部用户 1.2 P1——核心功能部分不可用,或非核心功能完全不可用 1.3 P2——非核心功能异常,少数用户受影响 1.4 P3——非功能性异常,无用户影响 二、黄金 5 分钟 2.1 确认故障——不是误告警 2.2 判断影响面——哪些用户、哪些功能 2.3 拉群——拉相关团队值班人员 2.4 决策——回滚 vs 限流 vs 扩容 三、应急处理 3.1 优先恢复服务——回滚 > 限流 > 修复 3.2 保留现场——日志、dump、监...
单元测试覆盖率推进策略
“没时间写测试” → 线上频繁出问题 → 更没时间写测试。如何打破这个恶性循环? 一、为什么单元测试覆盖率低 1.1 历史债务——老代码没有测试 1.2 赶进度——测试被忽视 1.3 写测试难——依赖太多无法 Mock 二、覆盖率目标设定 2.1 不要追求 100%——80% 是合理的上限 2.2 核心链路优先——支付、下单等高价值链路 2.3 工具类优先——纯函数容易测试 三、增量策略 3.1 新增代码——覆盖率不低于 80%(CI 卡点) 3.2 修改代码——补充修改部分的测试 3.3 存量代码——按优先级逐步补充 3.4 JaCoCo 覆盖率报告集成 四、让测试更好写 4...
代码审查的最佳实践
代码审查不是找茬,是知识共享和质量保障。本文给出可落地的审查清单和流程规范。 一、代码审查的目标 1.1 发现问题——Bug、安全漏洞、性能问题 1.2 知识共享——团队成员互相学习 1.3 规范一致性——代码风格和架构统一 二、审查流程规范 2.1 MR/PR 的粒度——不超过 400 行 2.2 审查时效——24 小时内完成 2.3 审查角色——至少 1 人,核心变更至少 2 人 2.4 审查工具——GitLab MR / GitHub PR 三、审查清单 3.1 功能正确性——是否满足需求 3.2 异常处理——是否覆盖边界条件 3.3 并发安全——线程安...
ELK 日志平台搭建
线上出了问题,还要登录每台机器 grep 日志?ELK 日志平台让你在一个界面搜索所有服务的日志。 一、为什么需要集中日志 1.1 微服务架构——日志分散在多台机器 1.2 容器化——Pod 重启日志丢失 1.3 排查效率——关联查询多个服务的日志 二、ELK 架构 2.1 Elasticsearch——存储和索引 2.2 Logstash——日志解析和转换 2.3 Kibana——可视化和检索 2.4 Filebeat——轻量级采集(替代 Logstash 的采集功能) 三、Filebeat 配置 3.1 采集 Spring Boot 日志文件——paths 配置 3.2 多行...
Prometheus 监控体系搭建
从 JVM 指标暴露到 Grafana 仪表盘,搭建一套完整的 Java 应用监控体系。 一、可观测性三支柱 1.1 Metrics(指标)——Prometheus + Grafana 1.2 Logging(日志)——ELK / Loki 1.3 Tracing(链路)——SkyWalking / Jaeger 1.4 三者的关系 二、Prometheus 核心概念 2.1 数据模型——Metric Name + Labels 2.2 四种指标类型——Counter / Gauge / Histogram / Summary 2....
K8s 部署 Java 应用指南
把 Spring Boot 应用部署到 K8s,不是简单的 kubectl apply。资源配置、健康检查、优雅停机——每个细节都可能踩坑。 一、Deployment 核心配置 1.1 replicas——副本数 1.2 image + imagePullPolicy 1.3 env——环境变量 1.4 resources——requests 和 limits 1.5 完整的 Deployment YAML 二、Service 配置 2.1 ClusterIP——集群内部访问 2.2 NodePort——对外暴露端口 2.3 LoadBalancer——云环境负载均衡 2.4 Se...
Docker 镜像瘦身
Java 应用 Docker 镜像动辄 1GB+,拉取慢、占用大。多阶段构建 + Alpine + JRE 裁剪,把镜像瘦到 150MB。 一、镜像大小分析 1.1 docker images 查看镜像大小 1.2 docker history <image>——每一层的大小 1.3 罪魁祸首——基础镜像大、构建依赖残留 二、优化 1:选择精简基础镜像 2.1 openjdk:8 → 600MB 2.2 openjdk:8-jre-alpine → 84MB 2.3 eclipse-temurin:17-jre-alpine → 180MB 2.4 Alpine 的问题...
CI/CD 流水线搭建实践
提交代码 → 自动构建 → 单元测试 → 镜像打包 → 推送 Harbor → K8s 滚动更新。完整的 CI/CD 流水线搭建教程。 一、CI/CD 的核心概念 1.1 CI(持续集成)——频繁合并代码 + 自动构建测试 1.2 CD(持续交付/部署)——自动化部署到各环境 1.3 流水线全景——Push → Build → Test → Package → Deploy 二、工具栈选型 2.1 代码仓库——GitLab 2.2 CI 引擎——Jenkins / GitLab CI 2.3 镜像仓库——Harbor 2.4 容器编排——Ku...