失效链接处理 |
2020年乐信Java高级笔试面试题 PDF 下载
本站整理下载:
提取码:u7pz
相关截图:
主要内容:
1.画出项⽬的架构图
2.所处⾃⼰负责的业务模块,其中⽤到了哪些技术点?
3.如何实现最终⼀致性分布式事务?
1. ⼆阶段提交:
a. 概念:参与者将操作成败通知协调者,再由协调者根据所有参与者的
反馈情报决定各参与者是否要提交操作还是中⽌操作。
b. 作⽤:主要保证了分布式事务的原⼦性;第⼀阶段为准备阶段,第⼆
阶段为提交阶段;
c. 缺点:不仅要锁住参与者的所有资源,⽽且要锁住协调者资源,开销
⼤。⼀句话总结就是:2PC效率很低,对⾼并发很不友好。
2. 三阶段提交:
a. 概念:三阶段提交协议在协调者和参与者中都引⼊超时机制,并且把
两阶段提交协议的第⼀个阶段拆分成了两步:询问,然后再锁资源,最
后真正提交。这样三阶段提交就有CanCommit、PreCommit、
DoCommit三个阶段。
b. 缺点:如果进⼊PreCommit后,Coordinator发出的是abort请求,假
设只有⼀个Cohort收到并进⾏了abort操作,
⽽其他对于系统状态未知的Cohort会根据3PC选择继续Commit,此时系统状态
发⽣不⼀致性。
3. 柔性事务:
a. 概念:所谓柔性事务是相对强制锁表的刚性事务⽽⾔。流程⼊下:
服务器A的事务如果执⾏顺利,那么事务A就先⾏提交,如果事务B也执
⾏顺利,则事务B也提交,整个事务就算完成。但是如果事务B执⾏失
败,事务B本身回滚,这时事务A已经被提交,所以需要执⾏⼀个补偿操
作,将已经提交的事务A执⾏的操作作反操作,恢复到未执⾏前事务A的
状态。
b. 缺点:业务侵⼊性太强,还要补偿操作,缺乏普遍性,没法⼤规模推
⼴。
4. 消息最终⼀致性解决⽅案之RabbitMQ实现:
a. 实现:发送⽅确认+消息持久化+消费者确认。
|