关于分布式事务在业务场景中的理解

业务场景

电商业务

上图是一个电商系统,当一个订单支付完成后的业务场景:

更改订单的状态为 “已支付”

扣减商品库存

给会员增加积分

创建出库单通知仓库发货

想象一下,当订单支付完成后,个人积分延迟几分钟变更,这可以接受吗?

火车票购票

想想生活中火车票购票场景。

想象一下,当最后一张火车票同时被两个人购买,去检票口检票时被告知车票无效,这可以接受吗?

银行转账

想想生活中银行转账场景。

想象一下,当银行转账时,转账成功后,自己账户金额减少了,对方账户却一直未进账,这可以接受吗?

关于上述的三种业务需求场景,你是怎么理解和处理的?

在处理上述问题之前,咱们先来理解以下几个概念。

什么是事务?

事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

数据库事务大家肯定都很熟悉,在开发过程中会经常使用到。

事务的特性

Atomicity(原子性)

Consistency(一致性)

Isolation(隔离性)

Durability(持久性)

原子性 是指事务中的操作要么都不做,要么就全做。

一致性 是指事务必须是使数据库从一个一致性状态变到另一个一致性状态。

隔离性 是指一个事务的执行不能被其他事务干扰。

持久性 是指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

什么是分布式事务?

分布式事务是指一次大的操作由不同的小操作组成的,而这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么完全地执行,要么完成地不执行。

产生分布式事务的原因

业务的微服务化,例如:文章开头所描述的电商业务场景。

数据库分库分表,例如:当发生数据库分库分表后,有一个需求既要操作 01 库,又要操作 02 库。

分布式理论

CAP 理论

Consistency(一致性)

Availability(可用性)

Partition tolerance(分区容错性)

一致性 是指数据的强一致性,如果在某个节点更新了数据,那么在其他节点需要同时看到更新后的数据。

可用性 是指每个请求都能在合理的时间内获得符合预期的响应结果。

分区容错性 是指遇到任何网络分区故障的时候,系统仍然能够正常提供服务,除非是整个网络环境都发生了故障。

CAP 理论认为一个分布式系统最多只能同时满足其中的两项。由于分区容错性是必然存在的,所以大部分分布式软件系统都在 CP 和 AP 中做取舍。

例如:Zookeeper 采用 CP 一致性,强调一致性,弱化可用性,Eureka 采用 AP 可用性,强调可用性,弱化一致性。

BASE 理论

Basically Available(基本可用)

Soft state(软状态)

Eventually consistent(最终一致性)

基本可用 是指不追求强可用性,而且强调系统基本能够一直运行对外提供服务。当分布式系统遇到不可预估的故障时,允许一定程度上的不可用,比如:对请求进行限流排队,对非核心服务进行降级。

软状态 是指允许系统中的数据存在中间状态,而不是事务的原子性:要么全部成功,要不全部不成功。

最终一致性 是指数据不可能一直都是软状态,必须在一个时间期限之后达到各个节点的一致性,在此之后,所有的节点的数据都是一致的,系统达到最终一致性。

BASE 理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

解决方案

2PC(两阶段提交协议)

3PC(三阶段提交协议)

TCC

本地消息表

RocketMQ 事务消息

小结

本文纯属抛砖引玉,有问题,欢迎批评指正。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容