架构设计 | 分布式事务①概念简介和基础理论

跨地区和机构的转账的业务在实际生活中非常常见,基础流程如下:

架构设计 | 分布式事务①概念简介和基础理论

账户01通过一系列服务和支付的流程,把钱转入账户02,在这一过程中,如果账户01出现出账成功,但是账户02没有入账,这就导致数据不一致,违反了基本的事务原则。基于数据归属在不同服务和不同的数据库中,这种情况下的事务出错被称为分布式事务问题。

2、基本概念

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

如上的转账案例,看似只有一次的转账操,实际上由不同的服务不同数据库的多个细节操作组成,这些无感知的细节操作分布在不同服务上,甚至属于不同的地区和应用,如何保证这些操作全部成功或者全部失败,即保证不同数据库间的数据一致性,这就是分布式事务需要解决的核心问题。

3、分布式事务特点

基于如下电商业务场景,基本分布式的架构思路:

架构设计 | 分布式事务①概念简介和基础理论

数据库基于业务特点,进行分库分表;

数据库拆分,随之就是业务的服务化(SOA);

基于电商业务进行拆分,会出现常见的:订单,用户,库存,物流等一系列的服务,管理不同的业务数据库,在实际的下单支付应用场景下,需要同时操作用户,订单,库存等多个服务,就必须保证数据一致性,下单支付成功,库存必须就需要用到分布式事务。

二、CAP基础理论 1、基础简介

说到分布式事务问题,必然会说下CAP理论,分布式系统的三大指标:

架构设计 | 分布式事务①概念简介和基础理论

Consistency:一致性

单个事务执行更新写操作,操作结束成功返回,在同一时间的其他事务读取的数据完全一致,不存在中间状态。在分布式的系统中描述:用户下单支付,扣款,减库存,生成物流,必须一致。例如限量打折促销中,用户下单后库存没减少,这就导致不一致问题。

Availability:可用性

服务必须一直处于可用的状态,收到用户的请求,服务器必须在有限的时间给出回应,不管结果是处理成功或者处理失败。

Partition tolerance:分区容错

通俗说,在分布式系统中,一个流程里可能出现某个服务出错情况,这是无法绝对避免的,在程序设计上要能容忍这种错误发生。

2、CP和AP模式

分布式系统很难同时满足一致性、可用性、分区容错性三个特点,在大部分的系统架构中,都会选择CP或者AP模式,即需要抛弃一个特点,说明一点,为何P没有抛弃,对于分布式系统而言,分区容错是该架构模式下的基本原则,不同的SOA服务和数据库是比如会被部署到不同的节点下。所以如何解决C(一致性)和A(可用性)就成分布式系统的最大痛点。

为何不能同时满足C和A,这也是基于分布式架构特点看,不同服务直接不能保证通信是100%成功,一旦出现失败情况,一致性和可用性就无法满足。

既然强一致性无法保证,那退一步,给处理时间,最后结果保证一致性,也可以,这就涉及到BASE理论。

三、BASE基础理论 1、基础简介

BASE理论是由eBay公司的架构师提出的,主要是对上述的CAP理论中一致性和可用性做的权衡结果,基于CAP定律逐步演化而来,核心思想;即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当策略实现数据的最终一致性。

Basically Available:基本可用

分布式系统在发生故障的时,允许损失部分可用性。例如常见电商清仓甩卖时,为保证主业务可以,一些不重要的服务直接降级提示。

Soft State:软状态

允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性。相对于原子性而言,要求多个节点的数据副本都是一致的,这是一种硬状态。

Eventual Consistency:最终一致

强调的数据更新操作,即软状态必须有个时间期限,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。时间期限长短取决于延时、负载、数据同步等各种因素。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxjfj.html