如何梳理一个 Java 后台服务
一 业务梳理,理解系统为什么存在的问题
这是根本,技术服务于业务(供给、端、场景)
- 核心业务流程
- 领域建模与关键实体(User,Order,Product),关键属性、生命周期状态
- 功能模块划分,系统有哪几大功能模块、了解模块职责边界
- 关键用户旅程:用户的一个操作会调用哪些 API
- 业务文档:查阅需求文档、产品 PRD、设计稿、历史会议纪要,理解业务背景和迭代过程
二 性能怎么样,理解系统的性能,关注系统处理能力和资源利用效率
接口性能指标:QPS、响应时间(耗时)P99
资源使用率: 负载、POD、CPU、内存、磁盘I/O、网络I/O(带宽使用-连接数-TCP 重传率)
性能测试与基准:压测报告、性能瓶颈(CPU、数据库、外部调用),系统最大支持多少 QPS(压测用来确认系统的性能基准,最大QPS、性能瓶颈)
三 可用性,理解系统有多可靠,关注系统保持正常服务的能力
高可用架构:
- 是否有集群部署,如何做的负载均衡
- 容灾架构,是否异地多活,同城多活
- 关键依赖(数据库、缓存)是否有主从、灾备、集群、读写分离方案
容错与降级: - 对依赖的外部服务调用、是否有超时控制、熔断、降级
- 是否有重试机制和幂等设计
故障恢复: - 发布流程是怎样的?蓝绿部署、滚动发布、金丝雀发布?
- 出现故障的回滚方案是否完备?
- 灾备切换流程是否明确?
SLA: 了解系统对上下游承诺的服务等级协议或目标,99.9?
四 架构与技术栈,理解系统是怎么构建的
- 整体架构 单体、SOA、微服务?服务间如何通信的,RPC/MQ/Restful
- 技术栈
- 核心框架:SpringBoot SpringCloud Dubbo
- 中间件 消息队列(Kafka/RocketMQ/TDMQ)、缓存、定时任务、配置中心
- 数据存储 MySQL,Redis,MongoDB,ES
- 关键设计 重要设计模式、分库分表方案、数据同步方案?
五 数据与存储维度
- 数据库设计:表、索引、SQL 质量(慢查询日志)
- 缓存策略:缓存如何应用(本地缓存/分布式缓存)、缓存key 的设计、过期策略、缓存穿透/击穿/雪崩的应对方案
六 代码与工程实践
- 代码结构:项目包结构划分是否清晰,是否符合领域驱动设计或其他规范
- 代码质量:核心代码复杂度、测试覆盖率(单测用例,场景用例)
- 部署与 CI/CD: 构建、打包、部署的流水线是怎么的,环境(开发、测试、灰度、生产)如何管理的
- 文档:架构图、部署文档、运维手册、API 文档
七 安全合规
- 认证和授权:如何实现用户登录、接口权限控制(防止越权)
- 数据安全:敏感数据如何加密(手机号、密码)
- 合规性:日志是否脱敏
八 运维与监控 理解服务如何被观察,即可观测性
- 日志体系: 日志如何收集、查询、归档,关键操作是否有审计日志
- 监控告警:
指标监控:JVM指标、业务指标
链路追踪:集成 SkyWalking,zipkin
健康检查:是否有/actuator/health 端点或者 k8s的探活 - 运维操作:日常运维有哪些(清理日志、扩容、重启服务)
九 团队与协作
- 协作流程:需求如何流转、代码如何评审、故障如何复盘
- 知识管理:团队知识如何沉淀(iwiki),分享

浙公网安备 33010602011771号