当前位置: 首页 > ai >正文

从零开始学习JavaWeb-20


 ​​一、分布式一致性的理论基础​

​1. CAP 定理与一致性模型​
  • ​CAP 定理核心​​:

    ​特性​

    ​描述​

    ​业务场景​

    ​一致性 (C)​

    所有节点数据实时同步

    金融交易(支付状态强同步)

    ​可用性 (A)​

    每次请求均获响应(可能非最新数据)

    电商商品浏览(允许短暂延迟)

    ​分区容错性 (P)​

    网络分裂时系统继续运作

    跨机房部署(必须保障)

    ​实践启示​​:

    • ​CP 系统​​(如 ZooKeeper):牺牲可用性保障强一致性(如银行转账)。

    • ​AP 系统​​(如 Cassandra):牺牲一致性保障高可用(如实时推荐系统)。

  • ​一致性模型分类​​:

    • ​强一致性​​:写入后立即可读(线性一致性),通过 ​​Paxos/Raft​​ 实现(如 Etcd)。

    • ​最终一致性​​:无新写入后终态一致(如 DNS 系统),基于 Gossip 协议。


 ​​二、主流分布式一致性算法​

​1. Paxos 协议:理论基石​

​角色与两阶段流程​​:

sequenceDiagramProposer->>Acceptor: Prepare(n)Acceptor-->>Proposer: Promise(ignore <n)Proposer->>Acceptor: Accept(n, v)Acceptor-->>Proposer: Accepted(n, v)

​核心机制​​:

  • ​提案编号全局唯一​​:避免冲突(时间戳 + 节点 ID)。

  • ​多数派原则(Quorum)​​:需半数以上节点同意(故障容忍公式:f < N/2)。

    ​工程缺陷​​:实现复杂,多轮通信开销大(Google Chubby 团队曾称“理解需 6 个月”)。

​2. Raft 协议:工业级首选​

​角色状态机​​:

graph LRFollower -->|选举超时| CandidateCandidate -->|获多数票| LeaderLeader -->|故障| Follower

​核心流程​​:

  1. ​领导者选举​​:节点超时未收心跳 → 成为 Candidate → 获多数票成为 Leader。

  2. ​日志复制​​:

    • Leader 接收写请求生成 Log Entry。

    • 并行发送 AppendEntries RPC 至 Followers。

    • 多数节点持久化后提交日志。

      ​优势​​:逻辑清晰,易于实现(etcd、Consul 采用)。

​3. ZAB 协议:ZooKeeper 的引擎​

​与 Raft 关键差异​​:

​特性​

Raft

ZAB

​任期命名​

Term

Epoch

​心跳方向​

Leader → Follower

Follower → Leader

​写操作流程​

先广播后持久化

先本地持久化后广播

​崩溃恢复模式​​:选举最高 zxid 节点 → 数据同步 → 广播新 Leader。


 ​​三、分布式锁的实现方案​

​1. 三大实现方式对比​

​方案​

​核心原理​

​适用场景​

​性能​

​数据库锁​

唯一索引约束(INSERT ... ON DUPLICATE

低并发简单场景

​Redis 锁​

SETNX key uuid EX 30

高并发,允许偶尔失效

⭐⭐⭐⭐⭐

​ZooKeeper 锁​

临时顺序节点 + Watcher 监听

强一致性需求(如金融)

⭐⭐⭐

​Redis 锁避坑​​:

  • ​锁续期​​:Redisson 看门狗机制自动续期(默认 30 秒检测)。

  • ​误释放​​:Lua 脚本校验 UUID 再释放(if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]))。


 ​​四、分布式事务解决方案​

​1. Seata AT 模式​

​两阶段流程​​:

graph TBTM[事务管理器] --> TC[事务协调器]TC --> RM1[资源管理器]TC --> RM2[资源管理器]RM1 --> DB1[生成 undo_log]RM2 --> DB2[生成 undo_log]

​核心机制​​:

  • ​全局锁​​:SELECT FOR UPDATE防止其他事务修改数据。

  • ​回滚日志​​:记录数据修改前后的快照(SQL 反向补偿)。

​2. TCC 模式​

​三阶段操作​​:

  1. ​Try​​:预留资源(如冻结库存)。

  2. ​Confirm​​:实际提交(扣减库存)。

  3. ​Cancel​​:失败回滚(解冻库存),需业务幂等设计。

    ​适用场景​​:高一致性要求(如机票超卖后的退款补偿)。


 ​​五、工业级实战案例​

​1. 电商订单支付系统​

​高并发设计​​:

graph TB用户 -->|下单| 订单服务订单服务 -->|发送 MQ| 库存服务库存服务 --> Redis[预减库存]库存服务 --> DB[持久化库存]订单服务 -->|TCC| 支付服务

​关键保障​​:

  • ​库存预扣​​:Redis 原子操作防超卖(DECR stock_count)。

  • ​最终一致性​​:支付成功消息异步更新订单状态(MQ 重试机制)。

​2. 配置中心高可用(Nacos)​

​架构要点​​:

  • ​数据分片​​:配置按 Group 分片存储。

  • ​多级缓存​​:客户端内存缓存 + 服务端 Redis 缓存。

  • ​长轮询​​:配置变更实时推送(30 秒超时)。


 ​​六、算法选型与未来趋势​

​1. 一致性协议选型指南​

​特性​

Paxos

Raft

ZAB

​理解难度​

⭐⭐⭐⭐⭐

⭐⭐

⭐⭐⭐

​性能​

高(无 Leader 瓶颈)

中高(依赖 Leader)

​适用场景​

理论验证

通用系统(etcd)

协调服务(ZooKeeper)

​选型建议​​:

  • 快速落地 → Raft(etcd/Consul)。

  • 强协调服务 → ZAB(ZooKeeper)。

​2. 前沿趋势​
  • ​性能突破​​:RDMA 网络加速共识通信(延迟降低 80%)。

  • ​安全增强​​:抗量子计算签名算法集成(如 Dilithium)。

  • ​无主协议兴起​​:EPaxos 优化跨地域部署。


 ​​总结:分布式系统设计原则​

  1. ​故障是常态​​:默认节点会宕机、网络会分区(冗余副本 + 自动故障转移)。

  2. ​异步解耦​​:消息队列(Kafka)解耦耗时操作(如日志记录)。

  3. ​幂等性​​:所有操作支持重试(唯一请求 ID 防重复)。

  4. ​监控先行​​:分布式追踪(SkyWalking) + 日志聚合(ELK)。

​“分布式系统的本质是在不确定性中寻求确定性”​

​动手实践​​:

  1. 基于 Redisson 实现秒杀库存锁(对比 Redis 与 ZooKeeper 性能)。

  2. 模拟网络分区(iptables断网),观察 ZooKeeper 选举行为。

  3. 压测 Seata AT 模式与 TCC 模式的性能差异。

http://www.xdnf.cn/news/18915.html

相关文章:

  • 第二十节:3D文本渲染 - 字体几何体生成与特效
  • Node.js终极文本转图指南
  • 使用 Action 自动部署 VuePress 到 GitHub Pages
  • Webdriver-Manager 4.0.1启动错误解决
  • Komo Searc-AI驱动的搜索引擎
  • 区块链+隐私计算护航“东数西算”数据安全报告
  • 20.22 QLoRA微调实战:中文语音识别数据准备全流程解密
  • hintcon2025No Man‘s Echo
  • 国产芯力量!贴片式SD卡搭载北京君正Rk瑞芯微,打造嵌入式存储低延迟+高可靠黄金组合​
  • 《从应用到内核:三种流量转发方案深度对比》
  • 手机上访问你电脑上的前端项目
  • 机器学习和高性能计算中常用的几种浮点数精度
  • ​突破RAG知识库中的PDF解析瓶颈:从文本错乱到多模态处理的架构跃迁​
  • 面试tips--JVM(2)--对象创建的过程
  • SLF4J和LogBack
  • 工业级TF卡NAND + 北京君正 + Rk瑞芯微的应用
  • @Jenkins 介绍、部署与使用标准作业程序
  • Gin Validator 错误信息翻译与自定义校验规则详解
  • VS2022+QT6.7+Multimedia(捕获Windows音频数据,生成实时频谱)
  • 浅谈JMeter Listener
  • 安宝特方案丨AR异地专家远程支持平台,适合:机电运维、应急处置、监造验收
  • esp32c2 at 请问通过HTTPS进行OTA升级的AT命令流程有吗?
  • ERNIE 学习
  • Linux中Java后端调用外部进程 未处理后台输出流 导致io阻塞问题解决方法
  • Mac训练大模型:MLX-LM框架LoRA训练Qwen3并集成SwanLab进行可视化
  • VMware + Ubuntu 桥接模式不能联网 的常见原因、排查思路和解决步骤
  • leetcode 3446. 按对角线进行矩阵排序 中等
  • 与trae携手,构建owtb一体化物流平台之--需求文档V0.3
  • 第五章:Go运行时、内存管理与性能优化之Go垃圾回收机制 (GC) 深入
  • UDS NRC24