java面试题-微服务(二)---分布式事务和分布式锁

一、分布式事务

1、什么是分布式事务?

        分布式事务,指的是在分布式环境中,一个请求可能涉及到对多个数据库的写操作,要保证多数据库的一致性就需要用到分布式事务

2、分布式事务你知道哪些解决方案? 这些方案如何选型?

        常见的分布式事务解决方案:2PC,TCC,可靠消息最终一致性,最大努力通知

        2PC,它将整个事务流程分为两个阶段,P指的是准备阶段,C指的是提交阶段。它是一个阻塞协议,不适用于并发较高,事务生命周期长的分布式事务

        TCC,它是基于补偿性事务的AP系统的一种实现,补偿也就是说先按照预定方案执行,如果失败了就走补偿方案。它可以自己定义数据操作的粒度,但是对应用的侵入性强,可以用在登录送积分,送优惠券等等场景

        可靠消息最终一致性,指的是当事务发起方执行完本地事务后,就发出一条消息通知其他参与方,并且他们一定能接收到消息并处理事务。适合执行周期长,并且实时性要求不高的场景

        最大努力通知,是在不影响主业务的情况下,尽可能的保证数据的一致性,它适用于一些最终一致性敏感度低的业务,比如支付结果通知

3、什么是2pc?

DTP模型是Distributed Transaction Processing(‌分布式事务处理)‌的缩写,‌它是一套分布式事务的规范,‌旨在协调和管理跨多个资源或服务的事务处理。‌

DTP模型涉及三个主要角色:‌

  • AP(‌Application Program)‌:‌代表应用程序,‌即使用分布式事务的应用程序。‌
  • RM(‌Resource Manager)‌:‌资源管理器,‌代表参与分布式事务的资源,‌如数据库、‌消息队列等。‌
  • TM(‌Transaction Manager)‌:‌事务管理器,‌作为分布式事务的协调者,‌负责协调和管理工作流程。‌

        DTP模型通过XA协议和两阶段提交(‌2PC)‌协议来保证事务的ACID属性(‌原子性、‌一致性、‌隔离性、‌持久性)‌在分布式环境中得到有效维护。‌XA协议定义了全局事务管理器与局部资源管理器之间的交互接口,‌允许多个资源在同一事务中被访问,‌同时保持ACID属性的有效性。‌两阶段提交协议则确保所有资源同时提交或回滚任何特定的事务,‌从而避免数据不

你可能感兴趣的:(java面试题-微服务(二)---分布式事务和分布式锁)