分布式事务之理论基础

1、什么是事务?

事务(Transaction)是关系型数据库中,由一组sql组成的一个执行单元,该单元要么整体成功,要么整体失败;

2、事务的ACID特性

事务ACID特性:原子性,一致性,隔离性,持久性。这4个属性统称为ACID特性。

原子性:指事务包含的左右操作sql,要么整体成功,要么整体失败。

一致性:事务前的状态和事务后的状态一致;

持久性:指一个事务一旦被提交,那么数据就储存在磁盘里,不丢失;

隔离性:指多个并发独立事务,相互独立、相互隔离、互不影响;

            如果事务没有隔离,会出现3种严重的问题:

             2.1脏读

                       指一个事务的处理过程中,读到了另外一个未提交的事务的数据

                 

           2.2不可重复读

                指多次查询却返回了不同的数据值,这是由于查询间隔时,被另外一个事务修改了数据并提交;

              

            2.3幻读

                    指当A事务在读取某个范围内的记录时,B事务又在该范围内插入了新的记录,当A事务再次读取该范围内的记录,就产生了幻读;

             

                脏读和不可重复读有什么区别?

                           脏读:读到的数据是前一个事务未提交的数据

                           不可重复读:读到的是前一个事务已提交的数据

                幻读和不可重复读有什么区别?

                           相同点:读到是都是前一个事务已经提交的数据

                          不同点:不可重复读:读的是一个数据值

                                         幻读:读的是一批数据

3、本地事务和分布式事务的区别?

     本地事务:关系型数据库中,由一组sql组成的一个执行单元,该单元要么整体成功,要么整体失败;

    分布式事务:指一个业务需要同时操作多个数据库的情况下,而且必须保持ACID的特性,一般应用于微服务的多服务处理;

 

4、什么是分布式CAP定理

 

4.1zookeeper的cap原理

  

zookeeper是cp的原理,保证了数据一致性,牺牲了可用性

zk的数据同步原理:例:client1注册给了server1,server1同步给了server2,server2广播同步给了各个follower,为了保证数据的一致性,只有整个过程都成功了,client1才收到注册成功;

当leader故障,整个zk会重新选举leader,在选举期间,client不能注册,即zk不可用,牺牲了可用性;

4.2eureka的cap原理

eureka是ap原理,保证了可用性,牺牲了一致性

eureka的数据同步原理:client1注册给了server1,server1直接告诉client成功,server1的数据会同步给server2,为了保证服务的可用性,他们是异步同步的

5什么是分布式BASE定理?

BASE是basically available(基本可用),soft state(软状态),eventually consistant(最终一致性)三个短语的缩写

基本可用性:

             损失响应时间:cap可用性的服务响应时间可能是10ms,但base基本可用性的响应时间为1s

              损失系统功能:允许某个服务出现故障时,采用服务降级等手段保证用户的体验

软状态:不完全符合ACID的原子性,可以通过mq方式进行异步同步;

最终一致性:数据不用即时同步;

 

6、什么是分布式事务DTP模型?

   

 

  分布式通信协议XA规范

7、两阶段提交与三阶段提交

2阶段提交与3阶段的区别?

1、增加了超时机制,同时为协调者与参与者都引入了超时机制

2、在2阶段的第一与第二中间插入一个提交准备的阶段,插入的这个阶段能保证最后提交阶段之前,各个参与节点的状态都是一致的

7.1  2阶段的单点故障和网络脑裂问题

 

7.2  3阶段的单点故障与网络脑裂问题

 

8、刚性事务的致命性问题

性能!!!!事务锁住的时间太长。

因为参与者不能提交事务,要等其他参与者都OK,才能提交,阶段越多,性能越差;

特别是对于互联网高并发的系统来说是不合适的,全局事务一般适合并发量小的系统。

对于互联网高并发的系统一般采用柔性事务。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章