分布式事务和一致性

分布式事务是什么?

分布式事务是指在分布式系统中涉及到多个数据库多个应用程序之间 的事务处理,这些数据库或应用程序可能

布在不同的物理节点上,甚至可能位于不同的地理位置,在分布式事务中,需要确保所有参与者的事务操作都能

保持一致性,即所有参与者的事务要么全部提交成功要么全部回滚

举个例子,假设一个电商系统,用户下单后需要扣减库存、扣减账户余额、生成订单等操作。在单机环境下,可

将这些操作放在同一个事务中,保证原子性、一致性和持久性。但在分布式环境下,可能存在多个服务(如库存

务、账户服务、订单服务)分布在不同的物理节点上,此时需要确保所有服务操作的事务都能够同步进行,避免

现数据不一致的情况。

为了解决分布式事务的问题,出现了一些分布式事务解决方案,如 XA 协议、TCC 事务、最大努力通知等。这些解决方案的实现方式各不相同,但都需要考虑如何确保所有参与者的事务操作能够保持一致性,以及如何处理可能出现的异常情况。

分布式系统的一致性有哪些?

所谓一致性,是指数据在多个副本之间是否能够保持一致的特性。在聊一致性的时候,其实要搞清楚一致性模型。

分布式系统中的一致性模型是一组管理分布式系统行为的规则。它决定了在分布式系统中如何访问和更新数据,以及如何将这些更新提供给客户端。面对网络延迟和局部故障等分布式计算难题,分布式系统的一致性模型对保证系统的一致性和可靠性起着关键作用。在分布式系统中有多种一致性模型可用,每个模型都有其优点和缺点,选择模型取决于系统的具体要求。

主要有三种,强一致性,弱一致性,最终一致性

强一致性模型(Strong Consistency):

在强一致性模型下,系统保证每个读操作都将返回最近的写操作的结果,即任何时间点,客户端都将看到相同的数据视图。这包括如下子模型:

  • 线性一致性(Linearizability):线性一致性是一种最强的一致性模型,它强调在分布式系统中的任何时间点,读操作都应该返回最近的写操作的结果。
  • 顺序一致性(Sequential Consistency):要求保证操作的顺序性,并不要求实际时间上的顺序保持一致
  • 严格可串行性(Strict Serializability)

强一致性模型通常牺牲了可用性来实现数据一致性

弱一致性模型(WeakConsistency):

弱一致性模型放宽了一致性保证,它允许在不同节点之间的数据访问之间存在一定程度的不一致性,以换取更高的性能和可用性。这包括如下子模型:

  • 因果一致性(Causal Consistency)
  • 会话一致性(Session Consistency)
  • 单调一致性(Monotonic Consistency)

弱一致性模型通常更注重可用性,允许一定程度的数据不一致性。

最终一致性模型(Eventua Consistency):

最终一致性模型是一种最大程度放宽了一致性要求的模型。它允许在系统发生分区或网络故障后,经过一段时间,系统将最终达到一致状态。这个模型在某些情况下提供了很高的可用性 ,但在一段时间 内可能会出现数据不一致的情况

相关推荐
蘑菇蘑菇不会开花~几秒前
分布式Redis(14)哈希槽
redis·分布式·哈希算法
问道飞鱼1 小时前
分布式中间件-Pika一个高效的分布式缓存组件
分布式·缓存·中间件
小宋10212 小时前
玩转RabbitMQ声明队列交换机、消息转换器
服务器·分布式·rabbitmq
懒洋洋的华3698 小时前
消息队列-Kafka(概念篇)
分布式·中间件·kafka
March€8 小时前
分布式事务的基本实现
分布式
DieSnowK10 小时前
[Redis][环境配置]详细讲解
数据库·redis·分布式·缓存·环境配置·新手向·详细讲解
Lill_bin11 小时前
深入理解ElasticSearch集群:架构、高可用性与数据一致性
大数据·分布式·elasticsearch·搜索引擎·zookeeper·架构·全文检索
qingcyb18 小时前
下载Kafka 3.0.0教程
分布式·kafka
杰信步迈入C++之路20 小时前
【RabbitMQ】快速上手
分布式·rabbitmq·ruby
妙龄少女郭德纲1 天前
基于Spark框架实现XGBoost模型
大数据·分布式·spark