面试当中问到在高并发下分布式的事务,说的不是很全,自己又去找些资料总结如下:
首先看下定义:
1、什么是分布式事务
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
2、分布式事务的优点及缺点
通过一张表来解释下,清晰明了。
3、事务的ACID特性
3.1、原子性(A)
所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。
3.2、一致性(C)
事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后A账户一定是450元,B账户一定是350元。
3.3、隔离性(I)
所谓的隔离性就是说,事务与事务之间不会互相影响,一个事务的中间状态不会被其他事务感知。
3.4、持久性(D)
所谓的持久性,就是说一单事务完成了,那么事务对数据所做的变更就完全保存在了数据库中,即使发生停电,系统宕机也是如此。
4、分布式事务的应用场景
1.数据库的主从同步是实现数据库高可用的前提.刚开始公司由于业务需求量不高那么采用了双机热备的形式配置数据库.可以(压测) 800万/秒处理需求.
随着公司数据库中的内容不断的增多,查询的效率变低了,我们采用分库分表的操作,提升数据库的效率。这时要采用分布式事务。
2.业务服务化(SOA)
在一般大型的电商平台上会分为很多模块,比如:用户的个人中心模块,购物车模块,订单模块。这时候如果要同时对订单和库存进行操作,那 么就会涉及到订单数据库和库存数据库,为了保证数据一致性,就需要用到分布式事务。