欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 分布式理论和事务

分布式理论和事务

2025/9/18 23:17:37 来源:https://blog.csdn.net/m0_47265655/article/details/147455962  浏览:    关键词:分布式理论和事务

微服务和分布式

  • 微服务 是一种软件架构风格,它将应用程序拆分成一系列小型、独立的服务,每个服务专注于单一功能,彼此通过轻量级通信机制(如 API)进行交互。微服务通常是松耦合的,可以独立开发、部署和扩展。

  • 分布式系统 是指一组独立的计算机(或节点)通过网络协同工作,共同完成任务。这些节点没有共享内存,依靠消息传递来通信。分布式系统的目标通常是提高性能、可靠性或容错能力。

  • 微服务但非分布式:一个电商系统被拆分为“订单服务”和“支付服务”,但它们都运行在同一台服务器上。

  • 分布式但非微服务:一个单体应用部署在多台服务器上,通过负载均衡分担流量。

  • 微服务+分布式:一个电商系统的“订单服务”运行在服务器 A 上,“支付服务”运行在服务器 B 上,它们通过 API 通信。

CAP

在这里插入图片描述

Base理论

BASE 理论本质上是 CAP 定理中 AP 的一种实践指导原则,告诉开发者如何通过基本可用、软状态和最终一致性来应对分区和故障

示例一

  • 场景:系统包括订单服务、库存服务、支付服务,用 Nacos 作为注册中心。订单服务下单时需要调用库存服务扣减库存。
  • 网络分区发生:库存服务的 3 个实例(A、B、C)中,C 与 A、B 网络断开(分区)。
  • AP 选择(基于 BASE)
    • 基本可用:订单服务继续接受用户下单请求(保证 A)。如果库存服务 C 不可用,订单服务调用 A 或 B,或者降级(记录订单,稍后扣库存)。
    • 软状态:分区期间,实例 C 的库存数据未更新(显示 100 件),A 和 B 已扣到 90 件。
    • 最终一致性:分区恢复后,系统通过消息队列(比如 Kafka)或日志重放,将 C 的库存同步到 90 件。

示例二

在这里插入图片描述
在这里插入图片描述

分布式事务

在这里插入图片描述

XA模式

在这里插入图片描述

AT模式

在这里插入图片描述

TCC模式

在这里插入图片描述
需要自己写代码完成逻辑

MQ分布式事务

在这里插入图片描述

接口幂等性

幂等性是一个数学概念,用在接口上:用在接口上就可以理解为:同一个接口,多次发出同一个请求,请求的结果是一致的

在系统的运行中,可能会出现这样的问题:

  • 用户在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是 id 不一样。
  • 开发人员在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),于是会对该请求重试几次,这样也会产生重复的数据。
  • mq 消费者在读取消息时,有时候会读取到重复消息,也会产生重复的数据。

方案一

请求接口之前,需要先获取一个唯一的 token,再带着这个 token 去完成业务操作,服务端根据这个 token 是否存在,来判断是否是重复的请求。
在这里插入图片描述

方案二

直接在数据库上加锁的做法性能不够友好,可以使用分布式锁的方式,目前最流行的分布式锁实现是通过 Redis,具体实现一般都是使用 Redission 框架。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com