一架梯子,一头程序猿,仰望星空!
分布式事务面试题 > 内容正文

什么是分布式事务?为什么需要分布式事务?


问题简答

分布式事务指的是跨越多个节点(如多个数据库、服务等)的多个操作要么全部成功,要么全部失败,保证了分布式系统数据的一致性。通俗来说,就是在分布式系统中,多个操作需要保证原子性和一致性,不能出现因某个节点异常导致整个系统数据不一致的情况。

问题详解:

单机事务

单机事务,也就是大家平时在操作数据库的时候使用的事务,单机事务是指在单个计算机或数据库实例上执行的事务。

在单机事务中,所有的操作都在同一个数据库实例上执行,因此可以使用本地事务(Local Transaction)的方式来实现事务。本地事务是指在同一个数据库连接下执行的一系列数据库操作,这些操作要么全部执行成功,要么全部失败,如果出现错误,则回滚到事务开始前的状态。

说明:单机事务通常由数据库本身提供支持。

为什么会引发分布式事务问题

分布式事务是由于分布式系统的出现而引起的。在传统的单体应用中,通常只有一个数据库实例,事务操作只涉及该实例的数据,可以通过本地事务来保证数据的一致性。而在分布式系统中,不同的服务(服务可能部署在不同的机器上)可能会涉及到不同的数据库实例,如果不采用特殊的机制来保证数据的一致性,就可能会导致数据不一致的情况。因此,为了保证在分布式系统中进行跨多个数据库实例的操作时数据的一致性,需要引入分布式事务机制。

提示:大多数业务都是因为系统拆分(例如搞微服务),然后搞分库分表之后,引发了分布式事务问题。

分布式事务例子

假设一个电商平台的订单支付流程包含了多个服务,比如生成订单、扣减库存、生成支付记录等等,这些服务都是独立部署,拥有独立的数据库实例。如果支付成功,所有服务都需要提交事务,而如果支付失败,则所有服务都需要回滚事务,以保证数据的一致性。

在这个例子中,整个订单支付过程就是一个分布式事务,需要跨越多个节点(多个数据库),并且需要保证所有服务的操作要么全部成功,要么全部失败,以保证整个系统数据的一致性。