13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

分布式事务浅析及简单实现

分布式事务浅析及简单实现

作者:翟飞 2020-03-31 08:05:23


前端
分布式 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的 CRUD 等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。分布式事务在现在遍地都是分布式部署的系统中几乎是必要的。

“只有客户发展了,才有我们的生存与发展!”这是创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对网站建设、网站设计、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。

 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的 CRUD 等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。分布式事务在现在遍地都是分布式部署的系统中几乎是必要的。

我们先聊一下啥是事务?

分布式事务、事务隔离级别、ACID我相信大家这些东西都耳熟能详了,那什么是事务呢?

概念:

一般是指要做的或所做的事情。

指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部不执行。

简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。

特性:

事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

那什么是分布式事务呢?

这里举个简单的例子:大家可以想一下,你下单流程可能涉及到10多个环节,你下单付钱都成功了,但是你优惠券扣减失败了,积分新增失败了,前者公司会被薅羊毛,后者用户会不开心,

但是这些都在不同的服务怎么保证大家都成功呢? 分布式事务。

分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)

比较著名的分布式事务有:

这里我就介绍下最简单的2pc(两段式),以及大家以后可能比较常用的半消息事务也就是最终一致性,别的事务都大同小异,都有很多优点。

当然也都有种种弊端:

例如长时间锁定数据库资源,导致系统的响应不快,并发上不去。

网络抖动出现脑裂情况,导致事物参与者,不能很好地执行协调者的指令,导致数据不一致。

单点故障:例如事物协调者,在某一时刻宕机,虽然可以通过选举机制产生新的Leader,但是这过程中,必然出现问题,而TCC,只有强悍的技术团队,才能支持开发,成本太高。

开始介绍这个两个事物吧。

2pc(两段式提交) :

第一阶段:准备阶段(投票阶段) 和第二阶段:提交阶段(执行阶段)

2pc(两段式提交)可以说是分布式事务的最开始的样子了,像极了媒婆,就是通过消息中间件或者全部事务管理来协调多个系统,在两个系统操作事务的时候都锁定资源但是不提交事务,等两者都准备好了,告诉消息中间件或者全部事务管理者,然后再分别提交事务。不管最后结果如何,第二阶段都会结束当前事务

但是问题所在是,如果A系统事务提交成功了,但是B系统在提交的时候网络波动或者各种原因提交失败了,其实还是会失败的。

最终一致性:

整个流程中,我们能保证是:

【本文是51CTO专栏机构“AiChinaTech”的原创文章,微信公众号( id: tech-AI)”】


当前文章:分布式事务浅析及简单实现
新闻来源:http://cdbrznjsb.com/article/cdshccd.html

其他资讯

让你的专属顾问为你服务