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

分布式系统保证数据强一致性的示例

分布式系统如何保证事务一致性(常见模式)

在分布式系统(多个服务、消息队列、外部系统)里,强一致性事务(跨服务跨 DB 的分布式事务)通常代价高且难以扩展,常用实践是采用最终一致性与补偿机制:

常见方案(可组合):

  1. 事务性 Outbox + Message Relay(推荐)

    • 写 DB 和 outbox 在同一事务,异步投递消息(见上)。保证“数据先写入 DB,消息可靠发送”。

  2. Saga 模式

    • 编排式 Saga(有协调者)或编舞式 Saga(事件驱动)。每个步骤都可做局部事务,失败时调用补偿动作回滚先前步骤。

  3. 两阶段提交(2PC)

    • 可提供强一致性,但实现复杂、性能差、可用性低。生产环境中一般不推荐跨服务频繁使用。

  4. 幂等与去重

    • 所有消费者实现幂等(通过 idempotency key / unique constraint)和去重,允许消息重试而不产生副作用。

  5. 消息确认与重试策略

    • 在 RabbitMQ 使用 manual ack、Dead Letter Exchanges、限速、backoff。

  6. 分布式事务协调器或 TCC(Try/Confirm/Cancel)

    • 适用于某些场景,但实现复杂,需要各服务实现 try/confirm/cancel。

  7. CDC(Change Data Capture)+ Event Streaming

    • 用 Debezium 等把 DB 变更转为事件流,保证 eventual consistency。

整体架构优点

  1. 异步削峰

    • 前置逻辑(余额扣减 + 送礼记录 + MQ 投递)同步完成;

    • 其余分账、钻石消耗、消息广播等用 RabbitMQ 异步处理,减轻主流程压力。

  2. 幂等与容错考虑

    • 你设计了“定时任务补偿”来应对 MQ 异常、网络中断等问题;

    • 异步消息中消费逻辑分步清晰(记录钻石消费、收益、分值等)。

  3. 数据一致性

    • 扣余额 + 插入赠送记录在同一个事务;

    • 异步消费通过幂等补偿实现最终一致性

http://www.dtcms.com/a/605116.html

相关文章:

  • Spring Boot性能提升的核武器,速度提升500%!
  • SOLIDWORKS 2025设计效率的大幅提高
  • 比标准Json库好用——json-iterator
  • 汇编语言编译器的作用 | 探讨汇编编译器的工作原理和实际应用
  • C语言编译器下载地址与安装指南
  • kanass实战教程系列(4) - 产品经理如何使用kanass有效管理需求
  • RLS(递归最小二乘)算法详解
  • 红色好看的网站济南网络推广软件公司
  • mvcc 简介
  • UniApp 商品分类左右联动技术文档
  • pytest 入门指南:Python 测试框架从零到一(2025 实战版)
  • SpringBoot教程(三十三)| SpringBoot集成MinIO
  • 【开题答辩全过程】以 基于.NET MVC的线上鞋服交易系统设计与实现为例,包含答辩的问题和答案
  • MySQL 全体系深度解析(存储引擎、事务、日志、MVCC、锁、索引、执行计划、复制、调优)
  • SpringMVC基础教程(1)--MVC/DispathcerServlet
  • 在streampark运行paimon-flink-action-1.20.0.jar
  • AI得贤面试智能体:重构企业招聘新范式
  • 硅基计划6.0 陆 JavaEE HttpHttps协议
  • 稳定边界层高度参数化方案的回归建模
  • 企业网站推广方法wap网站预览
  • 可以做推广的门户网站wordpress适合中国的小插件介绍
  • Dubbo服务治理全解析:从零搭建高可用微服务架构
  • java List怎么转换为Vector
  • 2023年辽宁省数学建模竞赛-B题 数据驱动的水下导航适配区分类预测-基于支持向量机对水下导航适配区分类的研究
  • 机器学习--KNN算法中的距离、范数、正则化
  • openGauss向量数据库功能实操测评:轻量部署下的高维检索能力
  • php做网站还是linuxseo服务外包费用
  • 《算法通关指南:算法基础篇 ---- 二维前缀和 — 1. 【模板】二维度前缀和,2.激光炸弹》
  • SpringBoot+openGauss DataVec构建高效RAG知识库实践
  • JVM 垃圾回收算法的详细介绍