跳至正文
星雨笔录
教程博客作品英语关于
Ctrl K

输入关键词,搜索教程、博客、作品与英语内容。

    查看全部结果 →
    Java 微服务与分布式

    课程目录位置 133 / 181

    从单体到微服务:架构演进与取舍

    12
    1. 01单体应用:一个部署单元内包含多个业务模块
    2. 02分层架构与模块化单体:在单次部署中保持清晰的模块边界
    3. 03SOA 与微服务:服务粒度、治理方式和团队边界的区别
    4. 04微服务的主要收益:独立部署、独立扩缩容、明确的数据/业务所有权
    5. 05微服务的主要成本:网络调用、部分失败、分布式一致性、运维与测试复杂度
    6. 06何时继续使用单体:团队小、业务边界尚不清晰、独立发布价值不明显
    7. 07何时考虑拆分:模块耦合成为瓶颈、团队并行受阻、资源需求差异明显
    8. 08“按业务能力拆分”与“按技术层拆分”的区别
    9. 09为什么不能简单地把每个 Controller、数据库表或 CRUD 模块都拆成服务
    10. 10模块化单体如何为未来拆分做准备:接口边界、依赖方向与数据所有权
    11. 11微服务不是“服务越多越先进”:服务数量与治理成本的关系
    12. 12架构决策记录:问题、备选方案、选择理由、代价与验证方式

    分布式系统的核心问题

    14
    1. 01分布式系统:多个进程/节点通过网络协作完成业务
    2. 02本地方法调用与远程调用的差别:延迟、序列化、超时与失败
    3. 03部分失败:调用方、被调用方、网络或依赖组件可能只坏一部分
    4. 04超时:连接超时、读取超时、整体请求期限与超时预算
    5. 05重试:只对适合的故障重试,控制次数、退避与随机抖动
    6. 06重试风暴:为什么重试可能把局部故障扩大成系统故障
    7. 07幂等性:超时不代表服务端没有执行,重复请求必须有业务处理策略
    8. 08故障隔离与故障域:避免一个依赖故障拖垮整条调用链
    9. 09一致性、可用性与分区容错:CAP 的适用语境与常见误读
    10. 10强一致性、最终一致性与业务可以接受的数据延迟
    11. 11时钟偏差、时间戳与跨节点时间判断的风险
    12. 12网络分区、脑裂与重复主节点的基本概念
    13. 13可靠性目标:可用性、错误率、延迟分位数与恢复时间
    14. 14设计系统时显式回答:失败会发生什么、用户看到什么、如何恢复

    服务边界、领域模型与数据所有权

    12
    1. 01以业务能力划分服务,而不是按 Controller/DAO 等技术层划分
    2. 02业务领域、子域、限界上下文(Bounded Context)的基本概念
    3. 03服务职责、内聚、耦合与依赖方向
    4. 04服务契约:接口输入、输出、错误语义、权限与兼容性
    5. 05每个服务的数据所有权:谁负责写入、校验与维护数据
    6. 06服务独立数据存储的意义与代价
    7. 07为什么跨服务直接访问对方数据库会造成耦合
    8. 08跨服务查询:API 聚合、面向查询的视图与异步数据投影的基本思路
    9. 09服务间共享 DTO/公共库的版本耦合风险
    10. 10API 向后兼容:新增字段、可选字段、弃用字段与渐进迁移
    11. 11服务拆分前的检查清单:边界、数据、调用、发布、监控与团队责任
    12. 12不强制完整 DDD:先掌握业务边界和数据所有权,再按需要深入领域驱动设计

    服务间通信与 API 契约

    12
    1. 01同步 HTTP/RPC 与异步消息的职责差异
    2. 02同步调用适合即时结果;异步消息适合解耦、延后处理和事件传播
    3. 03粗粒度服务接口:避免把单体内的每次方法调用都改成远程请求
    4. 04REST API 与服务间接口:资源语义、错误码、分页和版本演进
    5. 05声明式 HTTP 客户端:接口定义、参数绑定、序列化与错误映射
    6. 06OpenFeign 的用途、调用链与配置边界(按所选 Spring Cloud 版本确认支持情况)
    7. 07请求超时、连接池、并发上限与调用方资源消耗
    8. 08传递调用上下文:Trace ID、用户/租户上下文与敏感数据边界
    9. 09API 契约测试、消费者兼容性与服务升级顺序
    10. 10避免聊天式调用:一次业务请求中连续多次远程调用的延迟叠加
    11. 11同步调用与消息事件的组合:同步完成关键校验,异步执行非即时副作用
    12. 12何时选用 RPC 框架:考虑生态、协议、性能需求和团队维护能力,而不是默认引入

    服务注册发现与配置管理

    12
    1. 01服务实例、注册中心、健康状态与服务发现
    2. 02静态地址与动态注册发现的差异
    3. 03服务注册、心跳、实例下线、健康检查与过期实例
    4. 04客户端发现与服务端发现的基本概念
    5. 05Nacos 的职责:服务发现与配置管理
    6. 06服务名、命名空间、分组、集群与环境隔离
    7. 07配置中心:配置集中管理、变更发布、动态刷新与审计
    8. 08配置优先级、默认值、密钥管理与配置变更风险
    9. 09注册中心不可用时,已有实例、缓存列表与新实例发现可能受到的影响
    10. 10健康检查并不保证业务请求一定成功
    11. 11服务发现故障排查:注册失败、实例不健康、地址不可达与命名空间不一致
    12. 12Nacos 是常见实践选项,不是所有 Spring Cloud 项目唯一可选的注册中心

    Spring Cloud Gateway 与统一入口

    11
    1. 01API Gateway 解决什么问题:统一入口、路由、跨横切能力与外部接口边界
    2. 02Gateway 与 Nginx:网络层反向代理和应用层 API 网关的职责差异
    3. 03路由、Predicate、Filter 与请求转发
    4. 04按路径、请求头或其他条件路由的基本思路
    5. 05统一认证入口、限流、跨域、请求头处理与审计
    6. 06网关不替代服务端的授权校验:内部服务仍需保护自身接口
    7. 07网关超时、连接池、负载与单点风险
    8. 08避免在网关堆积全部业务逻辑,保持路由层职责清晰
    9. 09Gateway 日志与 Trace ID:如何关联入口请求和下游服务
    10. 10路由配置错误、路径重写错误、下游不可达与 502/503/504 的排查
    11. 11何时只需要 Nginx 反向代理,何时需要专门的 API Gateway

    负载均衡与服务调用

    10
    1. 01负载均衡的目的:分配请求、利用多个实例并改善可用性
    2. 02客户端负载均衡与服务端负载均衡
    3. 03轮询、随机、权重等策略的基本概念
    4. 04Spring Cloud LoadBalancer 的职责与基本使用场景
    5. 05实例健康、权重、实例变化与流量分配
    6. 06负载均衡不能解决慢 SQL、线程池耗尽或所有实例共同故障
    7. 07连接池、最大并发、排队与下游容量之间的关系
    8. 08调用链延迟预算:入口、网关、服务、数据库和外部依赖共同消耗时间
    9. 09服务调用的异常分类:业务错误、调用失败、超时与不可用
    10. 10服务调用排查:从调用方日志、实例列表、网络连通性到被调用方指标

    Spring Cloud 生态与版本兼容

    12
    1. 01Spring Cloud 的定位:为分布式系统常见模式提供抽象和集成
    2. 02Spring Boot、Spring Cloud 与 Spring Cloud Alibaba 的关系
    3. 03Spring Cloud Netflix、Spring Cloud Gateway、LoadBalancer、CircuitBreaker 等项目的职责边界
    4. 04Spring Cloud Alibaba 的常见组件:Nacos、Sentinel、Seata、RocketMQ 集成
    5. 05不要把 Spring Cloud 理解成单一框架或一组必须全部安装的组件
    6. 06版本管理:Spring Boot、Spring Cloud Release Train、Spring Cloud Alibaba 的兼容关系
    7. 07使用官方 BOM/依赖管理,避免手动混搭不兼容版本
    8. 08旧资料中的 Ribbon、Hystrix、Zuul 等组件:理解其历史角色,新项目按当前版本官方支持方案选型
    9. 09Nacos 配置接入方式、启动流程和配置行为可能随版本变化
    10. 10依赖冲突、类缺失、自动配置失败与启动异常的定位
    11. 11选型流程:先定 Spring Boot 版本,再查对应 Spring Cloud 与 Spring Cloud Alibaba 兼容表
    12. 12生产项目中固定并记录依赖版本,升级时验证兼容性与回滚路径

    服务容错与流量治理

    15
    1. 01超时预算:上下游超时配置不能互相矛盾
    2. 02有限重试:最大次数、退避、随机抖动与只重试安全操作
    3. 03熔断器:关闭、打开、半开状态与恢复探测
    4. 04熔断与重试的区别:一个阻止持续调用,一个重新尝试失败操作
    5. 05隔离:线程池/信号量隔离与限制故障扩散
    6. 06限流:按接口、用户、租户或资源设置流量上限
    7. 07降级与兜底:明确允许损失的功能和业务语义
    8. 08Sentinel:流量控制、熔断降级与规则管理的基本定位
    9. 09Spring Cloud CircuitBreaker 与 Resilience4j 的定位;按技术栈择一实践
    10. 10不要同时堆叠多个治理组件而不明确责任边界
    11. 11舱壁隔离、背压与线程池/连接池容量的关系
    12. 12服务雪崩:超时、重试、线程池耗尽和下游过载如何相互放大
    13. 13负载均衡、健康检查与容错之间的配合
    14. 14降级不能把支付失败伪装成支付成功,也不能破坏核心业务正确性
    15. 15故障演练:下游超时、服务实例退出、依赖过载与恢复验证

    分布式数据一致性与业务流程

    18
    1. 01单体本地事务与跨服务业务流程的区别
    2. 02为什么跨服务调用无法直接共享一个普通数据库事务
    3. 03业务一致性要求:哪些数据必须立即一致,哪些可以最终一致
    4. 04事件驱动与最终一致性:业务状态、事件、重试和补偿
    5. 05Outbox/本地消息表的定位:保证业务数据与待发送事件在本地事务中一起落库
    6. 06消费幂等、业务状态检查、重试、对账与人工修复
    7. 07Saga:多个本地事务与补偿操作组成的长流程
    8. 08TCC:Try、Confirm、Cancel、资源预留与业务侵入性
    9. 09XA/两阶段提交的基本概念、协调者与资源管理器
    10. 10Seata 的定位:分布式事务协调框架及 AT、TCC、Saga、XA 等模式
    11. 11AT 模式:代理数据源、undo log 与回滚机制的基本思路
    12. 12Saga 的补偿逻辑由业务定义;补偿不一定等同于物理回滚
    13. 13TCC 的接口设计、幂等、空回滚与悬挂等边界问题
    14. 14分布式事务的代价:锁/资源占用、性能、运维和异常状态处理
    15. 15选型顺序:优先本地事务;能用可靠消息、幂等和补偿解决时,不急于引入全局事务协调器
    16. 16不存在适用于所有业务的“最强分布式事务方案”
    17. 17事务异常处理:超时、回查、重复通知、部分成功与人工补偿
    18. 18Redis/MQ 相关机制的基础概念不在此重复;本章关注跨服务业务一致性设计

    分布式 ID、任务执行与数据扩展

    13
    1. 01为什么多服务、多实例需要唯一标识
    2. 02数据库自增 ID、UUID、号段模式与雪花类 ID 的特点
    3. 03唯一性、趋势递增、可读性、时钟依赖与分片需求
    4. 04雪花类 ID 的时钟回拨风险与运维注意事项
    5. 05分布式锁与业务幂等的区别:锁不是业务正确性的唯一保障
    6. 06多实例定时任务的重复执行问题
    7. 07任务分片、抢占、租约、失败重试与执行记录
    8. 08分布式任务调度平台的适用条件与维护成本
    9. 09数据分片/分库分表的动机:数据量、吞吐、单机限制与运维复杂度
    10. 10分片键、路由、跨分片查询、全局索引与扩容迁移的难点
    11. 11读写分离与分库分表不是免费的性能提升;需评估一致性与业务查询模式
    12. 12先优化 SQL、索引、连接池与数据模型,再判断是否需要分片
    13. 13本章只掌握 ID、任务与数据扩展的核心概念;具体中间件按真实项目选学

    跨服务可观测性

    13
    1. 01日志、指标、链路追踪分别回答什么问题
    2. 02Trace ID、Span、父子调用关系与跨服务关联
    3. 03OpenTelemetry:采集与传递遥测数据的标准化框架
    4. 04Micrometer:Java 应用指标仪表化的基本角色
    5. 05Prometheus 与 Grafana:指标采集、查询、面板与告警的基本职责
    6. 06分布式日志关联、日志级别、敏感信息脱敏与保留策略
    7. 07核心指标:请求量、错误率、P95/P99、线程池、连接池与依赖延迟
    8. 08服务发现与网关指标:实例健康、路由失败与入口错误
    9. 09MQ 指标:消费延迟、积压、重试与死信(具体 MQ 指标在上一份教程学习)
    10. 10采样、存储成本、基数爆炸与遥测数据的取舍
    11. 11从 Trace 找慢请求,再结合日志与指标确认根因
    12. 12监控告警应关联业务影响和处理手册,而不只是“CPU 高了”
    13. 13以 SLI/SLO 的基本概念表达服务质量目标,不要求一开始建设复杂平台

    微服务测试、发布与故障复盘

    12
    1. 01单元测试、集成测试、契约测试与端到端测试的边界
    2. 02服务契约测试:验证提供者与消费者对接口的理解一致
    3. 03使用 Stub/Mock 模拟下游失败,验证超时、重试和降级逻辑
    4. 04测试环境的服务依赖、配置隔离与可重复部署
    5. 05多服务联调:版本兼容、接口字段变化与部署顺序
    6. 06灰度发布、金丝雀发布与回滚的基本概念
    7. 07数据库/接口变更的向后兼容与渐进迁移
    8. 08故障注入:服务不可用、网络超时、延迟升高与依赖过载
    9. 09演练目标:验证告警、影响范围、恢复路径和业务正确性
    10. 10故障复盘:时间线、影响、证据、根因、修复和预防措施
    11. 11复盘不以追责为目的,而以改进系统与流程为目标
    12. 12版本升级前核对官方变更说明、兼容矩阵、测试结果和回滚方案

    综合实践:把模块化单体逐步演进为微服务

    15
    1. 01先建立清晰的模块化单体:例如订单、库存、通知等业务模块
    2. 02识别一个确有拆分价值的模块,说明拆分动机与预期收益
    3. 03定义服务边界、接口契约、数据所有权和错误语义
    4. 04将目标模块独立部署,避免继续直接访问其他服务的数据库
    5. 05使用 Nacos 完成服务注册发现与配置管理(按选定版本兼容矩阵搭建)
    6. 06使用 Spring Cloud Gateway 作为外部统一入口
    7. 07使用服务间 HTTP 客户端完成调用,并配置合理的超时
    8. 08添加有限重试、熔断/限流和明确的降级行为
    9. 09设计跨服务业务流程:本地事务、Outbox、消息事件或补偿方案
    10. 10为请求链路增加 Trace ID、日志关联和关键指标
    11. 11模拟服务宕机、超时、重复请求、部分成功和配置错误
    12. 12验证告警、故障隔离、恢复流程与业务数据正确性
    13. 13对比拆分前后的开发、测试、部署、排障和维护成本
    14. 14输出架构决策记录:为何拆、拆了什么、带来什么成本、如何验证
    15. 15最终结论可以是“暂时不拆”:能基于证据说明模块化单体更合适,也算完成架构判断
    教程 / Java 微服务与分布式 / 分布式 ID、任务执行与数据扩展 / 分布式锁与业务幂等的区别:锁不是业务正确性的唯一保障

    DOCUMENTATION · Java 微服务与分布式

    分布式锁与业务幂等的区别:锁不是业务正确性的唯一保障

    字数 0 · 预计阅读 1 分钟

    待编写

    上一篇← 雪花类 ID 的时钟回拨风险与运维注意事项下一篇多实例定时任务的重复执行问题 →

    学习信息

    字数
    0
    预计阅读
    1 分钟
    阅读进度
    73%
    所属教程
    Java 微服务与分布式

    星雨笔录

    Knowledge · Code · Growth

    在知识、代码与成长之间,留下可以回看的坐标。

    EXPLORE

    教程博客作品英语关于

    CONNECT

    GitHub ↗邮箱 ↗

    © 2026 星雨笔录 · yulanlin.cn

    用户协议隐私政策
    晋ICP备2026008281号-1晋公网安备14050002001992号
    更多
    作品用真实项目验证学习→关于了解作者与知识系统→全站搜索→