目录Java 微服务项目架构、链路串联、常见问题 解决方案一、先搞懂Java 微服务标准架构企业通用1. 接入层2. 业务服务层核心3. 基础设施层所有服务共用4. 部署 运维层二、微服务链路串联一次请求怎么走最关键核心串联技术三、微服务一定会遇到的 8 大问题 解决方案高频面试 实战1. 服务调用故障超时、异常、调用失败2. 服务雪崩最危险3. 分布式事务问题数据不一致4. 链路混乱无法排查问题5. 网关问题路由、跨域、限流、认证6. 分布式会话 登录状态共享7. 分布式缓存问题缓存穿透、击穿、雪崩8. 微服务部署 运维复杂Java 微服务项目架构、链路串联、常见问题 解决方案一、先搞懂Java 微服务标准架构企业通用微服务不是乱拆标准分层架构如下从上到下1. 接入层Nginx / GatewaySpring Cloud Gateway作用统一入口、路由、限流、认证、跨域2. 业务服务层核心按业务域拆分的独立 Java 服务用户服务user-service订单服务order-service支付服务pay-service商品服务product-service库存服务stock-service每个服务 独立 SpringBoot 项目 独立数据库3. 基础设施层所有服务共用注册中心Nacos / Eureka配置中心Nacos / Apollo服务调用OpenFeign流量控制Sentinel分布式事务Seata消息队列RocketMQ / RabbitMQ / Kafka链路追踪SkyWalking / Pinpoint缓存Redis数据库MySQL分库分表用 ShardingSphere4. 部署 运维层Docker KubernetesK8sJenkins 自动化部署ELK 日志收集二、微服务链路串联一次请求怎么走最关键以用户下单这个最经典流程举例plaintext前端请求 ↓ Gateway网关→ 认证/路由 ↓ order-service订单服务 ↓ Feign调用 → product-service查商品 ↓ Feign调用 → stock-service扣库存 ↓ order-service生成订单 ↓ MQ异步通知 → pay-service发起支付核心串联技术服务注册发现服务启动时把自己注册到 Nacos调用方直接从注册中心拿地址OpenFeignJava 服务之间 HTTP 调用的 “声明式接口”像调用本地方法一样调用远程服务负载均衡Ribbon / SpringCloud LoadBalancer自动轮训 / 权重分发请求链路追踪全局 traceId贯穿整个请求链路方便查问题三、微服务一定会遇到的 8 大问题 解决方案高频面试 实战这部分是企业真实踩坑总结必须掌握。1. 服务调用故障超时、异常、调用失败现象调用超时服务宕机导致调用失败网络波动调用失败解决方案Feign 超时配置设置合理的连接 / 读取超时熔断器Sentinel / Hystrix失败直接降级返回兜底数据不雪崩重试机制幂等接口允许重试查询接口心跳 健康检查注册中心自动剔除故障节点2. 服务雪崩最危险现象一个服务挂了 → 调用它的所有服务都阻塞 → 线程耗尽 → 整个系统瘫痪解决方案熔断降级故障时切断调用线程池隔离每个调用方独立线程池互不影响限流Sentinel 限制 QPS防止压垮服务3. 分布式事务问题数据不一致场景订单创建成功 → 库存扣减失败 → 数据不一致解决方案SeataAT 模式无侵入分布式事务保证最终一致可靠消息最终一致性MQ 确保消息必达TCC 模式适合核心金融场景Try-Confirm-Cancel4. 链路混乱无法排查问题现象一个请求跨 5 个服务报错了不知道哪一步出问题解决方案SkyWalking / Pinpoint全链路追踪全局 traceId日志统一打印快速定位整条链路ELK 日志聚合一键搜索日志5. 网关问题路由、跨域、限流、认证问题路由规则错误跨域不生效恶意流量攻击未认证访问接口解决方案Spring Cloud Gateway 统一管理路由网关层统一 JWT 认证网关层限流、黑名单、IP 封禁CORS 跨域配置6. 分布式会话 登录状态共享问题用户在 A 服务登录B 服务取不到登录信息解决方案Redis 统一存储 SessionJWT 无状态令牌最常用7. 分布式缓存问题缓存穿透、击穿、雪崩现象大量请求直接打库数据库宕机解决方案空值缓存 → 解决穿透互斥锁 / 热点数据永不过期 → 解决击穿过期时间随机 → 解决雪崩多级缓存CaffeineRedis8. 微服务部署 运维复杂问题服务多、配置多、发布麻烦解决方案Docker 容器化K8s 编排、自动扩缩容配置中心统一管理配置Jenkins CICD 自动发布