
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了程序员在学习Java编程开发语言的时候需要掌握的一些基础知识等内容,而本文我们就再来学习一下,分布式事务特性与应用方式。
1、从本地事务到分布式事务
事务大家应该都知道,事务将一组操作纳入到一个不可分割的执行单元,这个执行单元里的操作都成功时才能提交成功。
简单地说,事务提供一种要么不做,要么全做机制。
我们先简单了解一下事务ACID的四大特性:
A原子性(Atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会出现部分成功部分失败的情况。。
C一致性(Consistency)
事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。
I隔离性(Isolation)
指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
D持久性(Durability)
指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
2、单体事务
在单体架构时代,所有的业务只用一个数据库。
单体服务
单体架构时代事务的是实现很简单,我们操作的是同一个数据库,利用数据库本身提供的事务机制支持就可以了。
例如我们比较熟悉的MySQL数据库:
事务的隔离性是通过数据库锁的机制实现的。
事务的一致性由undolog来保证:undolog是逻辑日志,记录了事务的insert、update、deltete操作,回滚的时候做相反的delete、update、insert操作来恢复数据。
事务的原子性和一持久性由redolog来保证:redolog被称作重做日志,是物理日志,事务提交的时候,必须先将事务的所有日志写入redolog持久化,到事务的提交操作才算完成。
3、分布式事务
随着业务发展,单体架构顶不住了,慢慢进入分布式时代——SOA或者粒度更细的微服务。
当然伴随而来的就是分库分表。
我们可能会根据业务服务拆分的方式,对应地垂直拆分大库,例如原始大库拆分成订单库、商品库、支付库。
同时由于业务数据可能会高速增加,很快就成了亿级,我们不得不又水平分库,来减轻单个数据库的压力。
4、分布式情况下数据库
不管是怎么分库的,结果就是我们一个操作可能要横跨多个数据库。
数据库本身的事务机制只能保证它自己这个库的事务,但是没法保证到其它的库。我们要保证跨多个库的操作还具备事务的特性,就不得不上分布式事务了。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。