被面试分布式事务

好难的一个问题啊,之前浅浅玩过JTA(JOTM),现在发现远远没那么简单 

对于分布式事务目前业界存在很大的纷争,有一种的要求强一致性的一方,有的说放弃强一致性,先不看场景,先瞧瞧1PC,2PC,3PC 但是由于事务之间的隔离性,强一致性只是一个美丽的梦,比如2PC,第一阶段就存在超时和异常,同样callback和commit也会有超时的,哪个阶段超时?如果再commit超时的话,甚至还有不完全提交的情况,即便是提交了,也不敢保证都完成commit是没有状态的,在不完全提交的时候也要做特殊处理,特别是最后一次做commit的时候根本不知道他的情况,redo log或许能解决二次提交的问题。无论如何2PC,3PC只是一种策略,锁会让等待时间延长,特别是数据库出现问题的时候,更加严重,一个大型网站不用说是要挂掉的。

2PC,3PC大型的企业没见过用,ebay,支付宝都没有用,原因就是其性能低下,JTA开发的程序必然是性能低下的,简单却是真的。

在eay有人提出用中间状态消息队列和消息应用状态表 详见: http://wangyuanzju.blog.163.com/blog/static/1302920086424341932/

你可能感兴趣的:(消息队列和消息应用状态表)